summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@nokia.com>2012-06-21 17:19:33 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-13 01:51:38 +0200
commit197f34bcff6bf0e67c7ea02f7ed80aee7dc0023c (patch)
tree0a5df9d2cadd2228741b177e4ce35ca460434f3b /tests
parent8ca17ed943424f277d53cadd2e884834fac16b1f (diff)
Test for QMetaType binary breakage.
Type traits can not be changed durring Qt5 life time. Change-Id: If69f65ff2113c901580afee91b11ae1b11c13a4f Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/qmetatype.pro1
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp45
-rw-r--r--tests/auto/corelib/kernel/qmetatype/typeFlags.binbin0 -> 146 bytes
3 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/qmetatype.pro b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
index aa7d59b567..e3977aec98 100644
--- a/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
+++ b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
@@ -2,3 +2,4 @@ CONFIG += testcase parallel_test
TARGET = tst_qmetatype
QT = core testlib
SOURCES = tst_qmetatype.cpp
+TESTDATA=./typeFlags.bin \ No newline at end of file
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index c73c26a9ef..230138d40d 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -90,6 +90,8 @@ private slots:
void flags();
void flagsStaticLess_data();
void flagsStaticLess();
+ void flagsBinaryCompatibility5_0_data();
+ void flagsBinaryCompatibility5_0();
void construct_data();
void construct();
void constructCopy_data();
@@ -885,6 +887,49 @@ void tst_QMetaType::flagsStaticLess()
QCOMPARE(bool(flags & QMetaType::MovableType), isMovable);
}
+void tst_QMetaType::flagsBinaryCompatibility5_0_data()
+{
+ // Changing traits of a built-in type is illegal from BC point of view.
+ // Traits are saved in code of an application and in the Qt library which means
+ // that there may be a mismatch.
+ // The test is loading data generated by this code:
+ //
+ // QByteArray buffer;
+ // buffer.reserve(2 * QMetaType::User);
+ // for (quint32 i = 0; i < QMetaType::User; ++i) {
+ // if (QMetaType::isRegistered(i)) {
+ // buffer.append(i);
+ // buffer.append(quint32(QMetaType::typeFlags(i)));
+ // }
+ // }
+ // QFile file("/tmp/typeFlags.bin");
+ // file.open(QIODevice::WriteOnly);
+ // file.write(buffer);
+ // file.close();
+
+ QTest::addColumn<quint32>("id");
+ QTest::addColumn<quint32>("flags");
+
+ QFile file(QFINDTESTDATA("typeFlags.bin"));
+ file.open(QIODevice::ReadOnly);
+ QByteArray buffer = file.readAll();
+
+ for (int i = 0; i < buffer.size(); i+=2) {
+ const quint32 id = buffer.at(i);
+ const quint32 flags = buffer.at(i + 1);
+ QVERIFY2(QMetaType::isRegistered(id), "A type could not be removed in BC way");
+ QTest::newRow(QMetaType::typeName(id)) << id << flags;
+ }
+}
+
+void tst_QMetaType::flagsBinaryCompatibility5_0()
+{
+ QFETCH(quint32, id);
+ QFETCH(quint32, flags);
+
+ QCOMPARE(quint32(QMetaType::typeFlags(id)), flags);
+}
+
void tst_QMetaType::construct_data()
{
create_data();
diff --git a/tests/auto/corelib/kernel/qmetatype/typeFlags.bin b/tests/auto/corelib/kernel/qmetatype/typeFlags.bin
new file mode 100644
index 0000000000..cf83e9419e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetatype/typeFlags.bin
Binary files differ