diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-06 01:01:08 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-06 01:01:08 +0200 |
commit | 2c4b44d7500be72b6eb74c4989e7311b3f924119 (patch) | |
tree | 8cf8cb8aa36f18ee9474486178f51c7fe0770ee8 /tests | |
parent | 7e2016de5ee6d9cc2c5d6b94fab4bc56a8a33303 (diff) | |
parent | 327b305e95187fda869c5af407e78a17e0e381cd (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Ife31dad3c8dc43c5ff4d266e6d646230c5d20a50
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp | 13 | ||||
-rw-r--r-- | tests/auto/corelib/io/qdir/Info.plist | 2 | ||||
-rw-r--r-- | tests/auto/other/macplist/tst_macplist.cpp | 10 | ||||
-rw-r--r-- | tests/auto/tools/moc/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/tools/moc/allmocs_baseline_in.json | 2608 | ||||
-rw-r--r-- | tests/auto/tools/moc/moc.pro | 49 | ||||
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 53 | ||||
-rw-r--r-- | tests/auto/tools/qmake/testdata/conflicting_targets/conflicting_targets.pro | 2 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp | 260 | ||||
-rw-r--r-- | tests/libfuzzer/gui/text/qtextdocument/setMarkdown/main.cpp | 34 | ||||
-rw-r--r-- | tests/libfuzzer/gui/text/qtextdocument/setMarkdown/setMarkdown.pro | 4 |
11 files changed, 2876 insertions, 160 deletions
diff --git a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp index 01a1789188..94f0afa5ed 100644 --- a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp +++ b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp @@ -107,6 +107,7 @@ void tst_qfloat16::ltgt_data() QTest::addColumn<float>("val2"); QTest::newRow("zero") << 0.0f << 0.0f; + QTest::newRow("-zero") << -0.0f << 0.0f; QTest::newRow("ten") << 10.0f << 10.0f; QTest::newRow("large") << 100000.0f << 100000.0f; QTest::newRow("small") << 0.0000001f << 0.0000001f; @@ -405,6 +406,7 @@ void tst_qfloat16::finite_data() QTest::addColumn<int>("mode"); QTest::newRow("zero") << qfloat16(0) << FP_ZERO; + QTest::newRow("-zero") << -qfloat16(0) << FP_ZERO; QTest::newRow("one") << qfloat16(1) << FP_NORMAL; QTest::newRow("-one") << qfloat16(-1) << FP_NORMAL; QTest::newRow("ten") << qfloat16(10) << FP_NORMAL; @@ -459,6 +461,12 @@ void tst_qfloat16::limits() // See also: qNaN() and infinity() // A few useful values: const qfloat16 zero(0), one(1), ten(10); + // The specifics of minus zero: + // (IEEE 754 seems to want -zero < zero, but -0. == 0. and -0.f == 0.f in C++.) + QVERIFY(-zero <= zero); + QVERIFY(-zero == zero); + QVERIFY(!(-zero > zero)); + // digits in the mantissa, including the implicit 1 before the binary dot at its left: QVERIFY(qfloat16(1 << (Bounds::digits - 1)) + one > qfloat16(1 << (Bounds::digits - 1))); QVERIFY(qfloat16(1 << Bounds::digits) + one == qfloat16(1 << Bounds::digits)); @@ -523,7 +531,10 @@ void tst_qfloat16::limits() // See also: qNaN() and infinity() QVERIFY(Bounds::denorm_min() > zero); if (overOptimized) QEXPECT_FAIL("", "Over-optimized on ARM", Continue); - QCOMPARE(Bounds::denorm_min() / rose, zero); + QVERIFY(Bounds::denorm_min() / rose == zero); + if (overOptimized) + QEXPECT_FAIL("", "Over-optimized on ARM", Continue); + QVERIFY(-Bounds::denorm_min() / rose == -zero); } QTEST_APPLESS_MAIN(tst_qfloat16) diff --git a/tests/auto/corelib/io/qdir/Info.plist b/tests/auto/corelib/io/qdir/Info.plist index 7dc5622bde..e1f6fbe24a 100644 --- a/tests/auto/corelib/io/qdir/Info.plist +++ b/tests/auto/corelib/io/qdir/Info.plist @@ -6,8 +6,6 @@ <string>${PRODUCT_NAME}</string> <key>CFBundleExecutable</key> <string>${EXECUTABLE_NAME}</string> - <key>CFBundleGetInfoString</key> - <string>Created by Qt/QMake</string> <key>CFBundleIconFile</key> <string>${ASSETCATALOG_COMPILER_APPICON_NAME}</string> <key>CFBundleIdentifier</key> diff --git a/tests/auto/other/macplist/tst_macplist.cpp b/tests/auto/other/macplist/tst_macplist.cpp index 755cc462f5..dec63b1b66 100644 --- a/tests/auto/other/macplist/tst_macplist.cpp +++ b/tests/auto/other/macplist/tst_macplist.cpp @@ -59,8 +59,6 @@ void tst_MacPlist::test_plist_data() " <string></string>\n" " <key>CFBundlePackageType</key>\n" " <string>APPL</string>\n" -" <key>CFBundleGetInfoString</key>\n" -" <string>Created by Qt/QMake</string>\n" " <key>CFBundleExecutable</key>\n" " <string>app</string>\n" " <key>CFBundleIdentifier</key>\n" @@ -77,8 +75,6 @@ void tst_MacPlist::test_plist_data() " <string></string>\n" " <key>CFBundlePackageType</key>\n" " <string>APPL</string>\n" -" <key>CFBundleGetInfoString</key>\n" -" <string>Created by Qt/QMake</string>\n" " <key>CFBundleExecutable</key>\n" " <string>app</string>\n" " <key>CFBundleIdentifier</key>\n" @@ -97,8 +93,6 @@ void tst_MacPlist::test_plist_data() " <string></string>\n" " <key>CFBundlePackageType</key>\n" " <string>APPL</string>\n" -" <key>CFBundleGetInfoString</key>\n" -" <string>Created by Qt/QMake</string>\n" " <key>CFBundleExecutable</key>\n" " <string>app</string>\n" " <key>CFBundleIdentifier</key>\n" @@ -117,8 +111,6 @@ void tst_MacPlist::test_plist_data() " <string></string>\n" " <key>CFBundlePackageType</key>\n" " <string>APPL</string>\n" -" <key>CFBundleGetInfoString</key>\n" -" <string>Created by Qt/QMake</string>\n" " <key>CFBundleExecutable</key>\n" " <string>app</string>\n" " <key>CFBundleIdentifier</key>\n" @@ -137,8 +129,6 @@ void tst_MacPlist::test_plist_data() " <string></string>\n" " <key>CFBundlePackageType</key>\n" " <string>APPL</string>\n" -" <key>CFBundleGetInfoString</key>\n" -" <string>Created by Qt/QMake</string>\n" " <key>CFBundleExecutable</key>\n" " <string>app</string>\n" " <key>CFBundleIdentifier</key>\n" diff --git a/tests/auto/tools/moc/.gitignore b/tests/auto/tools/moc/.gitignore index 86a604a776..59a275bc62 100644 --- a/tests/auto/tools/moc/.gitignore +++ b/tests/auto/tools/moc/.gitignore @@ -1 +1,2 @@ tst_moc +allmocs.json diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json new file mode 100644 index 0000000000..bde5a1c52b --- /dev/null +++ b/tests/auto/tools/moc/allmocs_baseline_in.json @@ -0,0 +1,2608 @@ +[ + { + "classes": [ + { + "className": "MyBooooooostishClass", + "qualifiedClassName": "MyBooooooostishClass", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "no-keywords.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Task87883", + "qualifiedClassName": "Task87883", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task87883.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "IfdefedClass", + "qualifiedClassName": "IfdefedClass", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "c-comments.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "BackslashNewlines", + "qualifiedClassName": "BackslashNewlines", + "slots": [ + { + "access": "public", + "name": "works", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "backslash-newlines.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "OldStyleCast", + "qualifiedClassName": "OldStyleCast", + "slots": [ + { + "access": "public", + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "int*" + }, + { + "type": "const int*" + }, + { + "type": "volatile int*" + }, + { + "type": "const int*volatile*" + } + ], + "name": "bar", + "returnType": "int" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "QObject*const" + } + ], + "name": "slot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "oldstyle-casts.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "SlotsWithVoidTemplateTest", + "qualifiedClassName": "SlotsWithVoidTemplateTest", + "signals": [ + { + "access": "public", + "arguments": [ + { + "type": "TestTemplate<void>" + } + ], + "name": "mySignal", + "returnType": "void" + }, + { + "access": "public", + "name": "myVoidSignal", + "returnType": "void" + }, + { + "access": "public", + "name": "myVoidSignal2", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "dummySlot", + "returnType": "void" + }, + { + "access": "public", + "name": "dummySlot2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "TestTemplate<void>" + } + ], + "name": "anotherSlot", + "returnType": "void" + }, + { + "access": "public", + "name": "mySlot", + "returnType": "TestTemplate<void>" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "slots-with-void-template.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "InvokableBeforeReturnType", + "methods": [ + { + "access": "public", + "name": "foo", + "returnType": "const char*" + } + ], + "qualifiedClassName": "InvokableBeforeReturnType", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "InvokableBeforeInline", + "methods": [ + { + "access": "public", + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "name": "bar", + "returnType": "void" + } + ], + "qualifiedClassName": "InvokableBeforeInline", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "qinvokable.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Bar", + "enums": [ + { + "alias": "Flag", + "isClass": false, + "isFlag": true, + "name": "Flags", + "values": [ + "Read", + "Write" + ] + } + ], + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "flags", + "read": "flags", + "scriptable": true, + "stored": true, + "type": "Flags", + "user": false, + "write": "setFlags" + } + ], + "qualifiedClassName": "Foo::Bar", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Baz", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "flags", + "read": "flags", + "scriptable": true, + "stored": true, + "type": "Foo::Bar::Flags", + "user": false, + "write": "setFlags" + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "flagsList", + "read": "flagsList", + "scriptable": true, + "stored": true, + "type": "QList<Foo::Bar::Flags>", + "user": false, + "write": "setFlagsList" + } + ], + "qualifiedClassName": "Foo::Baz", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "namespaced-flags.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Foo", + "qualifiedClassName": "BBB::Foo", + "signals": [ + { + "access": "public", + "arguments": [ + { + "type": "QList<QList<int> >" + } + ], + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QList<QList<int> >" + } + ], + "name": "foo2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QList< ::AAA::BaseA*>" + } + ], + "name": "bar", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QList< ::AAA::BaseA*>" + } + ], + "name": "bar2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QList<const ::AAA::BaseA*>" + } + ], + "name": "bar3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + }, + { + "access": "public", + "name": "::AAA::BaseA" + } + ] + } + ], + "inputFile": "trigraphs.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "classInfos": [ + { + "name": "Test", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\x53" + }, + { + "name": "Test2", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\123" + }, + { + "name": "Test3", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\nb" + } + ], + "className": "StringLiterals", + "qualifiedClassName": "StringLiterals", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "escapes-in-string-literals.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "CStyleEnums", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "Baz", + "values": [ + "Foo", + "Bar" + ] + }, + { + "isClass": false, + "isFlag": false, + "name": "Baz2", + "values": [ + "Foo2", + "Bar2" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CStyleEnums" + } + ], + "inputFile": "cstyle-enums.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TestQPrivateSlots", + "methods": [ + { + "access": "private", + "name": "method1", + "returnType": "void" + } + ], + "qualifiedClassName": "TestQPrivateSlots", + "slots": [ + { + "access": "private", + "name": "_q_privateslot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "qprivateslots.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "GadgetWithNoEnums", + "gadget": true, + "qualifiedClassName": "GadgetWithNoEnums" + }, + { + "className": "DerivedGadgetWithEnums", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "FooEnum", + "values": [ + "FooValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "DerivedGadgetWithEnums", + "superClasses": [ + { + "access": "public", + "name": "GadgetWithNoEnums" + } + ] + } + ], + "inputFile": "gadgetwithnoenums.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "DirInIncludePath", + "interfaces": [ + [ + { + "className": "MyInterface", + "id": "\"MyInterface\"" + } + ] + ], + "qualifiedClassName": "DirInIncludePath", + "superClasses": [ + { + "access": "public", + "name": "QObject" + }, + { + "access": "public", + "name": "MyInterface" + } + ] + } + ], + "inputFile": "dir-in-include-path.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "SingleFunctionKeywordBeforeReturnType", + "qualifiedClassName": "SingleFunctionKeywordBeforeReturnType", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "SingleFunctionKeywordBeforeInline", + "qualifiedClassName": "SingleFunctionKeywordBeforeInline", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "SingleFunctionKeywordAfterInline", + "qualifiedClassName": "SingleFunctionKeywordAfterInline", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "single_function_keyword.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Task192552", + "qualifiedClassName": "Task192552", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task192552.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "InlineSlotsWithThrowDeclaration", + "qualifiedClassName": "InlineSlotsWithThrowDeclaration", + "slots": [ + { + "access": "public", + "name": "a", + "returnType": "void" + }, + { + "access": "public", + "name": "b", + "returnType": "void" + }, + { + "access": "public", + "name": "c", + "returnType": "void" + }, + { + "access": "public", + "name": "d", + "returnType": "void" + }, + { + "access": "public", + "name": "e", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task189996.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TestObject", + "qualifiedClassName": "NS_A::NS_B::TestObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "TestMain", + "qualifiedClassName": "NS_A::NS_Main::TestMain", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task234909.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TypenameWithUnsigned", + "qualifiedClassName": "TypenameWithUnsigned", + "slots": [ + { + "access": "public", + "arguments": [ + { + "type": "uint" + } + ], + "name": "a", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "u", + "type": "uint" + } + ], + "name": "b", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint*" + } + ], + "name": "c", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "p", + "type": "uint*" + } + ], + "name": "d", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint&" + } + ], + "name": "e", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "r", + "type": "uint&" + } + ], + "name": "f", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsigned1" + } + ], + "name": "g", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "u1", + "type": "unsigned1" + } + ], + "name": "h", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint" + }, + { + "type": "unsigned1" + } + ], + "name": "i", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsigned1" + }, + { + "type": "uint" + } + ], + "name": "j", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsignedQImage" + } + ], + "name": "k", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "uqi", + "type": "unsignedQImage" + } + ], + "name": "l", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task240368.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "PureVirtualSignalsTest", + "qualifiedClassName": "PureVirtualSignalsTest", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + }, + { + "access": "public", + "name": "myOtherSignal", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "foo", + "type": "int" + } + ], + "name": "mySignal2", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "PureVirtualSignalsImpl", + "qualifiedClassName": "PureVirtualSignalsImpl", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "foo", + "type": "int" + } + ], + "name": "mySignal2", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "PureVirtualSignalsTest" + } + ] + } + ], + "inputFile": "pure-virtual-signals.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "CXX11Enums", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "EnumClass", + "values": [ + "A0", + "A1", + "A2", + "A3" + ] + }, + { + "isClass": false, + "isFlag": false, + "name": "TypedEnum", + "values": [ + "B0", + "B1", + "B2", + "B3" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "TypedEnumClass", + "values": [ + "C0", + "C1", + "C2", + "C3" + ] + }, + { + "isClass": false, + "isFlag": false, + "name": "NormalEnum", + "values": [ + "D2", + "D3", + "D0", + "D1" + ] + }, + { + "alias": "ClassFlag", + "isClass": true, + "isFlag": true, + "name": "ClassFlags", + "values": [ + "F0", + "F1", + "F2", + "F3" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "EnumStruct", + "values": [ + "G0", + "G1", + "G2", + "G3" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "TypedEnumStruct", + "values": [ + "H0", + "H1", + "H2", + "H3" + ] + }, + { + "alias": "StructFlag", + "isClass": true, + "isFlag": true, + "name": "StructFlags", + "values": [ + "I0", + "I1", + "I2", + "I3" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX11Enums" + }, + { + "className": "CXX11Enums2", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "EnumClass", + "values": [ + "A0", + "A1", + "A2", + "A3" + ] + }, + { + "isClass": false, + "isFlag": false, + "name": "TypedEnum", + "values": [ + "B0", + "B1", + "B2", + "B3" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "TypedEnumClass", + "values": [ + "C0", + "C1", + "C2", + "C3" + ] + }, + { + "isClass": false, + "isFlag": false, + "name": "NormalEnum", + "values": [ + "D2", + "D3", + "D0", + "D1" + ] + }, + { + "alias": "ClassFlag", + "isClass": true, + "isFlag": true, + "name": "ClassFlags", + "values": [ + "F0", + "F1", + "F2", + "F3" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX11Enums2" + } + ], + "inputFile": "cxx11-enums.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "FinalTestClassQt", + "qualifiedClassName": "FinalTestClassQt", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassQt", + "qualifiedClassName": "ExportedFinalTestClassQt", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassQtX", + "qualifiedClassName": "ExportedFinalTestClassQtX", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "FinalTestClassCpp11", + "qualifiedClassName": "FinalTestClassCpp11", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassCpp11", + "qualifiedClassName": "ExportedFinalTestClassCpp11", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassCpp11X", + "qualifiedClassName": "ExportedFinalTestClassCpp11X", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "SealedTestClass", + "qualifiedClassName": "SealedTestClass", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedSealedTestClass", + "qualifiedClassName": "ExportedSealedTestClass", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedSealedTestClassX", + "qualifiedClassName": "ExportedSealedTestClassX", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "cxx11-final-classes.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "ExplicitOverrideControlBase", + "qualifiedClassName": "ExplicitOverrideControlBase", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExplicitOverrideControlFinalQt", + "qualifiedClassName": "ExplicitOverrideControlFinalQt", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlFinalCxx11", + "qualifiedClassName": "ExplicitOverrideControlFinalCxx11", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlSealed", + "qualifiedClassName": "ExplicitOverrideControlSealed", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlOverrideQt", + "qualifiedClassName": "ExplicitOverrideControlOverrideQt", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlOverrideCxx11", + "qualifiedClassName": "ExplicitOverrideControlOverrideCxx11", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlFinalQtOverrideQt", + "qualifiedClassName": "ExplicitOverrideControlFinalQtOverrideQt", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlFinalCxx11OverrideCxx11", + "qualifiedClassName": "ExplicitOverrideControlFinalCxx11OverrideCxx11", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + }, + { + "className": "ExplicitOverrideControlSealedOverride", + "qualifiedClassName": "ExplicitOverrideControlSealedOverride", + "slots": [ + { + "access": "private", + "name": "pureSlot0", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot1", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot2", + "returnType": "void" + }, + { + "access": "private", + "name": "pureSlot3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "ExplicitOverrideControlBase" + } + ] + } + ], + "inputFile": "cxx11-explicit-override-control.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "ForwardDeclaredParamClass", + "qualifiedClassName": "ForwardDeclaredParamClass", + "signals": [ + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredParam" + } + ], + "name": "signalNaked", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<ForwardDeclaredParam>" + } + ], + "name": "signalFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<int>" + } + ], + "name": "signalFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<QString>" + } + ], + "name": "signalFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<FullyDefined>" + } + ], + "name": "signalFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<ForwardDeclaredParam>" + } + ], + "name": "signalQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<int>" + } + ], + "name": "signalQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<QString>" + } + ], + "name": "signalQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<FullyDefined>" + } + ], + "name": "signalQSet", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredParam" + } + ], + "name": "slotNaked", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<ForwardDeclaredParam>" + } + ], + "name": "slotFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<int>" + } + ], + "name": "slotFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<QString>" + } + ], + "name": "slotFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "ForwardDeclaredContainer<FullyDefined>" + } + ], + "name": "slotFDC", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<ForwardDeclaredParam>" + } + ], + "name": "slotQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<int>" + } + ], + "name": "slotQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<QString>" + } + ], + "name": "slotQSet", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QSet<FullyDefined>" + } + ], + "name": "slotQSet", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "forward-declared-param.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "classInfos": [ + { + "name": "TestString", + "value": "PD_CLASSNAME" + }, + { + "name": "TestString2", + "value": "ParseDefine" + }, + { + "name": "TestString3", + "value": "TestValue" + } + ], + "className": "ParseDefine", + "qualifiedClassName": "PD::ParseDefine", + "signals": [ + { + "access": "public", + "arguments": [ + { + "name": "i", + "type": "QMap<int,int>" + } + ], + "name": "cmdlineSignal", + "returnType": "void" + }, + { + "access": "public", + "name": "signalQTBUG55853", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "voidFunction", + "returnType": "void" + }, + { + "access": "public", + "name": "stringMethod", + "returnType": "QString" + }, + { + "access": "public", + "name": "combined1", + "returnType": "void" + }, + { + "access": "public", + "name": "combined2", + "returnType": "void" + }, + { + "access": "public", + "name": "combined3", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "int" + } + ], + "name": "combined4", + "returnType": "void" + }, + { + "access": "public", + "name": "combined5", + "returnType": "void" + }, + { + "access": "public", + "name": "combined6", + "returnType": "void" + }, + { + "access": "public", + "name": "vararg1", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "vararg2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "int" + } + ], + "name": "vararg3", + "returnType": "void" + }, + { + "access": "public", + "name": "vararg4", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "vararg5", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "int" + } + ], + "name": "vararg6", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "INNERFUNCTION", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "inner_expanded", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "expanded_method", + "returnType": "void" + }, + { + "access": "public", + "name": "conditionSlot", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + } + ], + "name": "PD_DEFINE_ITSELF_SUFFIX", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "parse-defines.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "FunctionWithAttributes", + "qualifiedClassName": "FunctionWithAttributes", + "slots": [ + { + "access": "public", + "name": "test1", + "returnType": "void" + }, + { + "access": "public", + "name": "test2", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "function-with-attributes.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TestPluginMetaData", + "qualifiedClassName": "TestPluginMetaData", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "plugin_metadata.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "KDAB", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "Salaries", + "values": [ + "Steve" + ] + } + ], + "qualifiedClassName": "KDAB", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "single-quote-digit-separator-n3781.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "A", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "QTBUG_2151::A", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "B", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "blah", + "read": "blah", + "scriptable": true, + "stored": true, + "type": "A::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "QTBUG_2151::B", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "related-metaobjects-in-namespaces.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "A", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "QTBUG_35657::A" + } + ], + "inputFile": "qtbug-35657-gadget.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Derived", + "gadget": true, + "qualifiedClassName": "NonGadgetParent::Derived", + "superClasses": [ + { + "access": "public", + "name": "Base" + } + ] + } + ], + "inputFile": "non-gadget-parent-class.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "BaseGadget", + "gadget": true, + "qualifiedClassName": "GrandParentGadget::BaseGadget" + }, + { + "className": "DerivedGadget", + "gadget": true, + "qualifiedClassName": "GrandParentGadget::DerivedGadget", + "superClasses": [ + { + "access": "public", + "name": "Derived" + } + ] + } + ], + "inputFile": "grand-parent-gadget-class.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "B", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "blah", + "read": "blah", + "scriptable": true, + "stored": true, + "type": "A::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "QTBUG_35657::B", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "related-metaobjects-in-gadget.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "Unsused::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "Unsused::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS1::Nested::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS1::Nested::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS1::NestedUnsused::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS1::NestedUnsused::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS1::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS1::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingObject", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "gadgetPoperty", + "read": "gadgetPoperty", + "scriptable": true, + "stored": true, + "type": "Gadget::SomeEnum", + "user": false + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "objectPoperty", + "read": "objectPoperty", + "scriptable": true, + "stored": true, + "type": "Object::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS1::DependingObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingNestedGadget", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "nestedGadgetPoperty", + "read": "nestedGadgetPoperty", + "scriptable": true, + "stored": true, + "type": "Nested::Gadget::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS1::DependingNestedGadget", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingNestedObject", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "nestedObjectPoperty", + "read": "nestedObjectPoperty", + "scriptable": true, + "stored": true, + "type": "Nested::Object::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS1::DependingNestedObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS2::Nested::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS2::Nested::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS2::NestedUnsused::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS2::NestedUnsused::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Gadget", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "NS2::Gadget" + }, + { + "className": "Object", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "SomeEnum", + "values": [ + "SomeEnumValue" + ] + } + ], + "qualifiedClassName": "NS2::Object", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingObject", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "gadgetPoperty", + "read": "gadgetPoperty", + "scriptable": true, + "stored": true, + "type": "Gadget::SomeEnum", + "user": false + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "objectPoperty", + "read": "objectPoperty", + "scriptable": true, + "stored": true, + "type": "Object::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS2::DependingObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingNestedGadget", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "nestedGadgetPoperty", + "read": "nestedGadgetPoperty", + "scriptable": true, + "stored": true, + "type": "Nested::Gadget::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS2::DependingNestedGadget", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "DependingNestedObject", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "nestedObjectPoperty", + "read": "nestedObjectPoperty", + "scriptable": true, + "stored": true, + "type": "Nested::Object::SomeEnum", + "user": false + } + ], + "qualifiedClassName": "NS2::DependingNestedObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "related-metaobjects-name-conflict.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "FooNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum1", + "values": [ + "Key1", + "Key2" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace" + }, + { + "className": "FooNestedNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum2", + "values": [ + "Key3", + "Key4" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "Enum3", + "values": [ + "Key5", + "Key6" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace::FooNestedNamespace" + }, + { + "className": "FooMoreNestedNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum4", + "values": [ + "Key7", + "Key8" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace::FooNestedNamespace::FooMoreNestedNamespace" + } + ], + "inputFile": "namespace.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "ClassInNamespace", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "GadEn", + "values": [ + "Value" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX17Namespace::A::B::C::D::ClassInNamespace" + }, + { + "className": "D", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "NamEn", + "values": [ + "Value" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX17Namespace::A::B::C::D" + } + ], + "inputFile": "cxx17-namespaces.h", + "outputRevision": 67 + } +] diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro index ad8c093add..1794bafd2c 100644 --- a/tests/auto/tools/moc/moc.pro +++ b/tests/auto/tools/moc/moc.pro @@ -32,6 +32,9 @@ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-n namespace.h cxx17-namespaces.h \ cxx-attributes.h +# No platform specifics in the JSON files, so that we can compare them +JSON_HEADERS = $$HEADERS +JSON_HEADERS -= cxx-attributes.h if(*-g++*|*-icc*|*-clang*|*-llvm):!win32-*: HEADERS += os9-newlines.h win-newlines.h if(*-g++*|*-clang*): HEADERS += dollars.h @@ -50,3 +53,49 @@ QMAKE_MOC_OPTIONS += -Muri=com.company.app -Muri=com.company.app.private # Define macro on the command lines used in parse-defines.h QMAKE_MOC_OPTIONS += "-DDEFINE_CMDLINE_EMPTY=" "\"-DDEFINE_CMDLINE_SIGNAL=void cmdlineSignal(const QMap<int, int> &i)\"" +QMAKE_MOC_OPTIONS += --output-json + +debug_and_release { + CONFIG(debug, debug|release) { + MOC_CPP_DIR = $$MOC_DIR/debug + } else { + MOC_CPP_DIR = $$MOC_DIR/release + } +} else { + MOC_CPP_DIR = $$MOC_DIR +} + +moc_json_header.input = JSON_HEADERS +moc_json_header.output = $$MOC_CPP_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}.json +moc_json_header.CONFIG = no_link moc_verify +moc_json_header.depends = $$MOC_CPP_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +moc_json_header.commands = $$escape_expand(\\n) # force creation of rule +moc_json_header.variable_out = MOC_JSON_HEADERS + +BASELINE_IN = allmocs_baseline_in.json +copy_baseline.commands = $${QMAKE_COPY} $$shell_path(${QMAKE_FILE_NAME}) ${QMAKE_FILE_OUT} +copy_baseline.input = BASELINE_IN +copy_baseline.output = $$OUT_PWD/allmocs_baseline.json +copy_baseline.CONFIG = no_link + +qtPrepareTool(MOC_COLLECT_JSON, moc) +jsoncollector.CONFIG += combine +jsoncollector.commands = $$MOC_COLLECT_JSON --collect-json -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +jsoncollector.input = MOC_JSON_HEADERS +jsoncollector.output = $$OUT_PWD/allmocs.json +jsoncollector.variable_out = GENERATED_FILES + +allmocs_contents = \ + "<!DOCTYPE RCC><RCC version=\"1.0\">"\ + "<qresource prefix=\"/\">"\ + "<file>allmocs.json</file>"\ + "<file>allmocs_baseline.json</file>"\ + "</qresource>"\ + "</RCC>" + +allmocs_file = $$OUT_PWD/allmocs.qrc + +!write_file($$allmocs_file, allmocs_contents): error() +RESOURCES += $$allmocs_file + +QMAKE_EXTRA_COMPILERS += moc_json_header copy_baseline jsoncollector diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 89f563f11d..9fc00288fe 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -33,6 +33,7 @@ #include <stdio.h> #include <qobject.h> #include <qmetaobject.h> +#include <qjsondocument.h> #include "using-namespaces.h" #include "assign-namespace.h" @@ -717,6 +718,7 @@ private slots: void testQNamespace(); void cxx17Namespaces(); void cxxAttributes(); + void mocJsonOutput(); signals: void sigWithUnsignedArg(unsigned foo); @@ -3971,6 +3973,57 @@ void tst_Moc::cxxAttributes() QCOMPARE(meta.keyCount(), 7); } +void tst_Moc::mocJsonOutput() +{ + const auto readFile = [](const QString &fileName) { + QFile f(fileName); + f.open(QIODevice::ReadOnly); + return QJsonDocument::fromJson(f.readAll()); + }; + + const QString actualFile = QStringLiteral(":/allmocs.json"); + const QString expectedFile = QStringLiteral(":/allmocs_baseline.json"); + + QVERIFY2(QFile::exists(actualFile), qPrintable(actualFile)); + QVERIFY2(QFile::exists(expectedFile), qPrintable(expectedFile)); + + QJsonDocument actualOutput = readFile(QLatin1String(":/allmocs.json")); + QJsonDocument expectedOutput = readFile(QLatin1String(":/allmocs_baseline.json")); + + const auto showPotentialDiff = [](const QJsonDocument &actual, const QJsonDocument &expected) -> QByteArray { +#if defined(Q_OS_UNIX) + QByteArray actualStr = actual.toJson(); + QByteArray expectedStr = expected.toJson(); + + QTemporaryFile actualFile; + if (!actualFile.open()) + return "Error opening actual temp file"; + actualFile.write(actualStr); + actualFile.flush(); + + QTemporaryFile expectedFile; + if (!expectedFile.open()) + return "Error opening expected temp file"; + expectedFile.write(expectedStr); + expectedFile.flush(); + + QProcess diffProc; + diffProc.setProgram("diff"); + diffProc.setArguments(QStringList() << "-ub" << expectedFile.fileName() << actualFile.fileName()); + diffProc.start(); + if (!diffProc.waitForStarted()) + return "Error waiting for diff process to start."; + if (!diffProc.waitForFinished()) + return "Error waiting for diff process to finish."; + return diffProc.readAllStandardOutput(); +#else + return "Cannot launch diff. Please check allmocs.json and allmocs_baseline.json on disk."; +#endif + }; + + QVERIFY2(actualOutput == expectedOutput, showPotentialDiff(actualOutput, expectedOutput).constData()); +} + QTEST_MAIN(tst_Moc) // the generated code must compile with QT_NO_KEYWORDS diff --git a/tests/auto/tools/qmake/testdata/conflicting_targets/conflicting_targets.pro b/tests/auto/tools/qmake/testdata/conflicting_targets/conflicting_targets.pro index c3e8034e35..bd0d4d824a 100644 --- a/tests/auto/tools/qmake/testdata/conflicting_targets/conflicting_targets.pro +++ b/tests/auto/tools/qmake/testdata/conflicting_targets/conflicting_targets.pro @@ -1,5 +1,5 @@ TEMPLATE = app -CONFIG += debug_and_release +CONFIG += debug_and_release build_all TARGET = bah DESTDIR = shu SOURCES += main.cpp diff --git a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp index c58dbf599c..8264d71e83 100644 --- a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp +++ b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp @@ -26,25 +26,21 @@ ** ****************************************************************************/ -#include "../../../../shared/fakedirmodel.h" -#include <QtTest/QtTest> +#include <QColumnView> +#include <QScrollBar> +#include <QSignalSpy> +#include <QStringListModel> +#include <QStyledItemDelegate> +#include <QTest> #include <QtTest/private/qtesthelpers_p.h> -#include <qitemdelegate.h> -#include <qcolumnview.h> -#include <private/qcolumnviewgrip_p.h> -#include <private/qfilesystemmodel_p.h> -#include <qstringlistmodel.h> -#include <qdebug.h> -#include <qitemdelegate.h> -#include <qscrollbar.h> -#include <private/qcolumnview_p.h> -#include <qscreen.h> +#include <QtWidgets/private/qcolumnviewgrip_p.h> +#include "../../../../shared/fakedirmodel.h" #define ANIMATION_DELAY 300 -class tst_QColumnView : public QObject { - Q_OBJECT - +class tst_QColumnView : public QObject +{ + Q_OBJECT public: tst_QColumnView(); @@ -98,6 +94,7 @@ private: class TreeModel : public QStandardItemModel { + Q_OBJECT public: TreeModel() { @@ -122,51 +119,31 @@ public: inline QModelIndex thirdLevel() { return index(0, 0, secondLevel()); } }; -class ColumnView : public QColumnView { - +class ColumnView : public QColumnView +{ + Q_OBJECT public: - ColumnView(QWidget *parent = 0) : QColumnView(parent){} - - QList<QPointer<QAbstractItemView> > createdColumns; - void ScrollContentsBy(int x, int y) {scrollContentsBy(x,y); } - int HorizontalOffset() const { return horizontalOffset(); } - void emitClicked() { emit clicked(QModelIndex()); } - - enum PublicCursorAction { - MoveUp = QAbstractItemView::MoveUp, - MoveDown = QAbstractItemView::MoveDown, - MoveLeft = QAbstractItemView::MoveLeft, - MoveRight = QAbstractItemView::MoveRight, - MoveHome = QAbstractItemView::MoveHome, - MoveEnd = QAbstractItemView::MoveEnd, - MovePageUp = QAbstractItemView::MovePageUp, - MovePageDown = QAbstractItemView::MovePageDown, - MoveNext = QAbstractItemView::MoveNext, - MovePrevious = QAbstractItemView::MovePrevious - }; - - inline QModelIndex MoveCursor(PublicCursorAction ca, Qt::KeyboardModifiers kbm) - { return QColumnView::moveCursor((CursorAction)ca, kbm); } - bool IsIndexHidden(const QModelIndex&index) const - { return isIndexHidden(index); } - - void setSelection(const QRect & rect, QItemSelectionModel::SelectionFlags command ) - { - QColumnView::setSelection(rect, command); - } + using QColumnView::QColumnView; + using QColumnView::horizontalOffset; + using QColumnView::clicked; + using QColumnView::isIndexHidden; + using QColumnView::moveCursor; + using QColumnView::scrollContentsBy; + using QColumnView::setSelection; + using QColumnView::visualRegionForSelection; + + friend class tst_QColumnView; + + QVector<QPointer<QAbstractItemView>> createdColumns; - // visualRegionForSelection() is protected in QColumnView. - QRegion getVisualRegionForSelection(const QItemSelection &selection){ - return QColumnView::visualRegionForSelection(selection); - } protected: - QAbstractItemView *createColumn(const QModelIndex &index) { + QAbstractItemView *createColumn(const QModelIndex &index) override + { QAbstractItemView *view = QColumnView::createColumn(index); QPointer<QAbstractItemView> savedView = view; createdColumns.append(savedView); return view; } - }; tst_QColumnView::tst_QColumnView() @@ -183,7 +160,7 @@ void tst_QColumnView::initTestCase() void tst_QColumnView::init() { - qApp->setLayoutDirection(Qt::LeftToRight); + QGuiApplication::setLayoutDirection(Qt::LeftToRight); } void tst_QColumnView::rootIndex() @@ -199,7 +176,7 @@ void tst_QColumnView::rootIndex() QModelIndex drive = model.firstLevel(); QVERIFY(view.visualRect(drive).isValid()); view.setRootIndex(QModelIndex()); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); QCOMPARE(view.rootIndex(), QModelIndex()); QVERIFY(view.visualRect(drive).isValid()); @@ -210,7 +187,7 @@ void tst_QColumnView::rootIndex() while (i < model.rowCount(home) - 1 && !model.hasChildren(homeFile)) homeFile = model.index(++i, 0, home); view.setRootIndex(home); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); QCOMPARE(view.rootIndex(), home); QVERIFY(!view.visualRect(drive).isValid()); QVERIFY(!view.visualRect(home).isValid()); @@ -221,7 +198,7 @@ void tst_QColumnView::rootIndex() view.setRootIndex(home); view.setCurrentIndex(homeFile); view.scrollTo(model.index(0,0, homeFile)); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); QCOMPARE(view.rootIndex(), home); QVERIFY(!view.visualRect(drive).isValid()); QVERIFY(!view.visualRect(home).isValid()); @@ -238,17 +215,15 @@ void tst_QColumnView::rootIndex() QModelIndex two = model.index(0, 0, homeFile); while (i < model.rowCount(homeFile) - 1 && !model.hasChildren(two)) two = model.index(++i, 0, homeFile); - qApp->processEvents(); QTest::qWait(ANIMATION_DELAY); view.setCurrentIndex(two); view.scrollTo(two); QTest::qWait(ANIMATION_DELAY); - qApp->processEvents(); QVERIFY(two.isValid()); - QVERIFY(view.HorizontalOffset() != 0); + QVERIFY(view.horizontalOffset() != 0); view.setRootIndex(homeFile); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); } void tst_QColumnView::grips() @@ -262,9 +237,9 @@ void tst_QColumnView::grips() { const QObjectList list = view.viewport()->children(); - for (int i = 0 ; i < list.count(); ++i) { - if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(list.at(i))) - QVERIFY(view->cornerWidget() != 0); + for (QObject *obj : list) { + if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(obj)) + QVERIFY(view->cornerWidget() != nullptr); } } view.setResizeGripsVisible(false); @@ -272,8 +247,8 @@ void tst_QColumnView::grips() { const QObjectList list = view.viewport()->children(); - for (int i = 0 ; i < list.count(); ++i) { - if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(list.at(i))) { + for (QObject *obj : list) { + if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(obj)) { if (view->isVisible()) QVERIFY(!view->cornerWidget()); } @@ -288,9 +263,9 @@ void tst_QColumnView::isIndexHidden() { ColumnView view; QModelIndex idx; - QCOMPARE(view.IsIndexHidden(idx), false); + QCOMPARE(view.isIndexHidden(idx), false); view.setModel(&m_fakeDirModel); - QCOMPARE(view.IsIndexHidden(idx), false); + QCOMPARE(view.isIndexHidden(idx), false); } void tst_QColumnView::indexAt() @@ -319,7 +294,6 @@ void tst_QColumnView::indexAt() view.selectionModel()->select(child, QItemSelectionModel::SelectCurrent); view.setCurrentIndex(child); - qApp->processEvents(); QTest::qWait(200); // test that the second row doesn't start at 0 @@ -348,17 +322,17 @@ void tst_QColumnView::scrollContentsBy() ColumnView view; if (reverse) view.setLayoutDirection(Qt::RightToLeft); - view.ScrollContentsBy(-1, -1); - view.ScrollContentsBy(0, 0); + view.scrollContentsBy(-1, -1); + view.scrollContentsBy(0, 0); TreeModel model; view.setModel(&model); - view.ScrollContentsBy(0, 0); + view.scrollContentsBy(0, 0); QModelIndex home = model.thirdLevel(); view.setCurrentIndex(home); QTest::qWait(ANIMATION_DELAY); - view.ScrollContentsBy(0, 0); + view.scrollContentsBy(0, 0); } void tst_QColumnView::scrollTo_data() @@ -385,7 +359,7 @@ void tst_QColumnView::scrollTo() QVERIFY(QTest::qWaitForWindowActive(&topLevel)); view.scrollTo(QModelIndex(), QAbstractItemView::EnsureVisible); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); TreeModel model; view.setModel(&model); @@ -400,45 +374,44 @@ void tst_QColumnView::scrollTo() QModelIndex index = model.index(0, 0, home); view.scrollTo(index, QAbstractItemView::EnsureVisible); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); // Embedded requires that at least one widget have focus QWidget w; w.show(); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); if (giveFocus) view.setFocus(Qt::OtherFocusReason); else view.clearFocus(); - QCOMPARE(view.HorizontalOffset(), 0); - qApp->processEvents(); - QCOMPARE(view.HorizontalOffset(), 0); + QCOMPARE(view.horizontalOffset(), 0); + QCoreApplication::processEvents(); + QCOMPARE(view.horizontalOffset(), 0); QTRY_COMPARE(view.hasFocus(), giveFocus); // scroll to the right int level = 0; - int last = view.HorizontalOffset(); - while(model.hasChildren(index) && level < 5) { + int last = view.horizontalOffset(); + while (model.hasChildren(index) && level < 5) { view.setCurrentIndex(index); QTest::qWait(ANIMATION_DELAY); view.scrollTo(index, QAbstractItemView::EnsureVisible); QTest::qWait(ANIMATION_DELAY); - qApp->processEvents(); index = model.index(0, 0, index); level++; if (level >= 2) { if (!reverse) { - QTRY_VERIFY(view.HorizontalOffset() < 0); + QTRY_VERIFY(view.horizontalOffset() < 0); qDebug() << "last=" << last - << " ; HorizontalOffset= " << view.HorizontalOffset(); - QTRY_VERIFY(last > view.HorizontalOffset()); + << " ; horizontalOffset= " << view.horizontalOffset(); + QTRY_VERIFY(last > view.horizontalOffset()); } else { - QTRY_VERIFY(view.HorizontalOffset() > 0); - QTRY_VERIFY(last < view.HorizontalOffset()); + QTRY_VERIFY(view.horizontalOffset() > 0); + QTRY_VERIFY(last < view.horizontalOffset()); } } - last = view.HorizontalOffset(); + last = view.horizontalOffset(); } // scroll to the left @@ -450,17 +423,17 @@ void tst_QColumnView::scrollTo() index = index.parent(); if (start != level) { if (!reverse) { - QTRY_VERIFY(last < view.HorizontalOffset()); + QTRY_VERIFY(last < view.horizontalOffset()); } else { - if (last <= view.HorizontalOffset()) { + if (last <= view.horizontalOffset()) { qDebug() << "Test failure. last=" << last - << " ; HorizontalOffset= " << view.HorizontalOffset(); + << " ; horizontalOffset= " << view.horizontalOffset(); } - QTRY_VERIFY(last > view.HorizontalOffset()); + QTRY_VERIFY(last > view.horizontalOffset()); } } level--; - last = view.HorizontalOffset(); + last = view.horizontalOffset(); } // It shouldn't automatically steal focus if it doesn't have it QTRY_COMPARE(view.hasFocus(), giveFocus); @@ -490,20 +463,20 @@ void tst_QColumnView::moveCursor() if (reverse) view.setLayoutDirection(Qt::RightToLeft); // don't crash - view.MoveCursor(ColumnView::MoveUp, Qt::NoModifier); + view.moveCursor(ColumnView::MoveUp, Qt::NoModifier); // don't do anything - QCOMPARE(view.MoveCursor(ColumnView::MoveEnd, Qt::NoModifier), QModelIndex()); + QCOMPARE(view.moveCursor(ColumnView::MoveEnd, Qt::NoModifier), QModelIndex()); view.setModel(&m_fakeDirModel); QModelIndex ci = view.currentIndex(); - QCOMPARE(view.MoveCursor(ColumnView::MoveUp, Qt::NoModifier), QModelIndex()); - QCOMPARE(view.MoveCursor(ColumnView::MoveDown, Qt::NoModifier), QModelIndex()); + QCOMPARE(view.moveCursor(ColumnView::MoveUp, Qt::NoModifier), QModelIndex()); + QCOMPARE(view.moveCursor(ColumnView::MoveDown, Qt::NoModifier), QModelIndex()); // left at root view.setCurrentIndex(m_fakeDirModel.index(0,0)); - ColumnView::PublicCursorAction action = reverse ? ColumnView::MoveRight : ColumnView::MoveLeft; - QCOMPARE(view.MoveCursor(action, Qt::NoModifier), m_fakeDirModel.index(0,0)); + ColumnView::CursorAction action = reverse ? ColumnView::MoveRight : ColumnView::MoveLeft; + QCOMPARE(view.moveCursor(action, Qt::NoModifier), m_fakeDirModel.index(0,0)); // left shouldn't move up int i = 0; @@ -513,30 +486,29 @@ void tst_QColumnView::moveCursor() QVERIFY(m_fakeDirModel.hasChildren(ci)); view.setCurrentIndex(ci); action = reverse ? ColumnView::MoveRight : ColumnView::MoveLeft; - QCOMPARE(view.MoveCursor(action, Qt::NoModifier), ci); + QCOMPARE(view.moveCursor(action, Qt::NoModifier), ci); // now move to the left (i.e. move over one column) view.setCurrentIndex(m_fakeDirHomeIndex); - QCOMPARE(view.MoveCursor(action, Qt::NoModifier), m_fakeDirHomeIndex.parent()); + QCOMPARE(view.moveCursor(action, Qt::NoModifier), m_fakeDirHomeIndex.parent()); // right action = reverse ? ColumnView::MoveLeft : ColumnView::MoveRight; view.setCurrentIndex(ci); - QModelIndex mc = view.MoveCursor(action, Qt::NoModifier); + QModelIndex mc = view.moveCursor(action, Qt::NoModifier); QCOMPARE(mc, m_fakeDirModel.index(0,0, ci)); // for empty directories (no way to go 'right'), next one should move down QModelIndex idx = m_fakeDirModel.index(0, 0, ci); const int rowCount = m_fakeDirModel.rowCount(ci); - while (m_fakeDirModel.hasChildren(idx) && rowCount > idx.row() + 1) { + while (m_fakeDirModel.hasChildren(idx) && rowCount > idx.row() + 1) idx = idx.sibling(idx.row() + 1, idx.column()); - } static const char error[] = "This test requires an empty directory followed by another directory."; QVERIFY2(idx.isValid(), error); QVERIFY2(!m_fakeDirModel.hasChildren(idx), error); QVERIFY2(idx.row() + 1 < rowCount, error); view.setCurrentIndex(idx); - mc = view.MoveCursor(action, Qt::NoModifier); + mc = view.moveCursor(action, Qt::NoModifier); QCOMPARE(mc, idx.sibling(idx.row() + 1, idx.column())); } @@ -554,11 +526,12 @@ void tst_QColumnView::selectAll() QVERIFY(view.selectionModel()->selectedIndexes().count() > 0); QModelIndex file; - for (int i = 0; i < m_fakeDirModel.rowCount(m_fakeDirHomeIndex); ++i) + for (int i = 0; i < m_fakeDirModel.rowCount(m_fakeDirHomeIndex); ++i) { if (!m_fakeDirModel.hasChildren(m_fakeDirModel.index(i, 0, m_fakeDirHomeIndex))) { file = m_fakeDirModel.index(i, 0, m_fakeDirHomeIndex); break; } + } view.setCurrentIndex(file); view.selectAll(); QVERIFY(view.selectionModel()->selectedIndexes().count() > 0); @@ -572,7 +545,7 @@ void tst_QColumnView::clicked() ColumnView view; view.setModel(&m_fakeDirModel); - view.resize(800,300); + view.resize(800, 300); view.show(); view.setCurrentIndex(m_fakeDirHomeIndex); @@ -581,12 +554,12 @@ void tst_QColumnView::clicked() QModelIndex parent = m_fakeDirHomeIndex.parent(); QVERIFY(parent.isValid()); - QSignalSpy clickedSpy(&view, SIGNAL(clicked(QModelIndex))); + QSignalSpy clickedSpy(&view, &QAbstractItemView::clicked); QPoint localPoint = view.visualRect(m_fakeDirHomeIndex).center(); - QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, localPoint); + QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, localPoint); QCOMPARE(clickedSpy.count(), 1); - qApp->processEvents(); + QCoreApplication::processEvents(); if (sizeof(qreal) != sizeof(double)) QSKIP("Skipped due to rounding errors"); @@ -653,21 +626,21 @@ void tst_QColumnView::visualRegionForSelection() { ColumnView view; QItemSelection emptyItemSelection; - QCOMPARE(QRegion(), view.getVisualRegionForSelection(emptyItemSelection)); + QCOMPARE(QRegion(), view.visualRegionForSelection(emptyItemSelection)); // a region that isn't empty view.setModel(&m_fakeDirModel); QItemSelection itemSelection(m_fakeDirModel.index(0, 0, m_fakeDirHomeIndex), m_fakeDirModel.index(m_fakeDirModel.rowCount(m_fakeDirHomeIndex) - 1, 0, m_fakeDirHomeIndex)); - QVERIFY(QRegion() != view.getVisualRegionForSelection(itemSelection)); + QVERIFY(QRegion() != view.visualRegionForSelection(itemSelection)); } void tst_QColumnView::moveGrip_basic() { QColumnView view; QColumnViewGrip *grip = new QColumnViewGrip(&view); - QSignalSpy spy(grip, SIGNAL(gripMoved(int))); + QSignalSpy spy(grip, &QColumnViewGrip::gripMoved); view.setCornerWidget(grip); int oldX = view.width(); grip->moveGrip(10); @@ -707,12 +680,11 @@ void tst_QColumnView::moveGrip() int columnNum = view.createdColumns.count() - 2; QVERIFY(columnNum >= 0); - QObjectList list = view.createdColumns[columnNum]->children(); - QColumnViewGrip *grip = 0; - for (int i = 0; i < list.count(); ++i) { - if ((grip = qobject_cast<QColumnViewGrip *>(list[i]))) { + const QObjectList list = view.createdColumns[columnNum]->children(); + QColumnViewGrip *grip = nullptr; + for (QObject *obj : list) { + if ((grip = qobject_cast<QColumnViewGrip *>(obj))) break; - } } if (!grip) return; @@ -728,7 +700,7 @@ void tst_QColumnView::doubleClick() { QColumnView view; QColumnViewGrip *grip = new QColumnViewGrip(&view); - QSignalSpy spy(grip, SIGNAL(gripMoved(int))); + QSignalSpy spy(grip, &QColumnViewGrip::gripMoved); view.setCornerWidget(grip); view.resize(200, 200); QCOMPARE(view.width(), 200); @@ -741,24 +713,24 @@ void tst_QColumnView::gripMoved() { QColumnView view; QColumnViewGrip *grip = new QColumnViewGrip(&view); - QSignalSpy spy(grip, SIGNAL(gripMoved(int))); + QSignalSpy spy(grip, &QColumnViewGrip::gripMoved); view.setCornerWidget(grip); view.move(300, 300); view.resize(200, 200); - qApp->processEvents(); + QCoreApplication::processEvents(); int oldWidth = view.width(); - QTest::mousePress(grip, Qt::LeftButton, 0, QPoint(1,1)); + QTest::mousePress(grip, Qt::LeftButton, {}, QPoint(1, 1)); //QTest::mouseMove(grip, QPoint(grip->globalX()+50, y)); - QPoint posNew = QPoint(grip->mapToGlobal(QPoint(1,1)).x() + 65, 0); + QPoint posNew = QPoint(grip->mapToGlobal(QPoint(1, 1)).x() + 65, 0); QMouseEvent *event = new QMouseEvent(QEvent::MouseMove, posNew, posNew, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier); QCoreApplication::postEvent(grip, event); QCoreApplication::processEvents(); QTest::mouseRelease(grip, Qt::LeftButton); - QCOMPARE(spy.count(), 1); + QTRY_COMPARE(spy.count(), 1); QCOMPARE(view.width(), oldWidth + 65); } @@ -785,12 +757,12 @@ void tst_QColumnView::preview() } QVERIFY(file.isValid()); view.setCurrentIndex(file); - QVERIFY(view.previewWidget() != (QWidget*)0); + QVERIFY(view.previewWidget() != nullptr); QWidget *previewWidget = new QWidget(&view); view.setPreviewWidget(previewWidget); QCOMPARE(view.previewWidget(), previewWidget); - QVERIFY(previewWidget->parent() != ((QWidget*)&view)); + QVERIFY(previewWidget->parent() != &view); view.setCurrentIndex(home); // previewWidget should be marked for deletion @@ -803,21 +775,21 @@ void tst_QColumnView::swapPreview() { // swap the preview widget in updatePreviewWidget QColumnView view; - QStringList sl; - sl << QLatin1String("test"); - QStringListModel model(sl); + QStringListModel model({ QLatin1String("test") }); view.setModel(&model); view.setCurrentIndex(view.indexAt(QPoint(1, 1))); - connect(&view, SIGNAL(updatePreviewWidget(QModelIndex)), - this, SLOT(setPreviewWidget())); + connect(&view, &QColumnView::updatePreviewWidget, + this, &tst_QColumnView::setPreviewWidget); view.setCurrentIndex(view.indexAt(QPoint(1, 1))); QTest::qWait(ANIMATION_DELAY); - qApp->processEvents(); + QCoreApplication::processEvents(); } void tst_QColumnView::setPreviewWidget() { - ((QColumnView*)sender())->setPreviewWidget(new QWidget); + auto ptr = qobject_cast<QColumnView *>(sender()); + QVERIFY(ptr); + ptr->setPreviewWidget(new QWidget); } void tst_QColumnView::sizes() @@ -825,8 +797,7 @@ void tst_QColumnView::sizes() QColumnView view; QCOMPARE(view.columnWidths().count(), 0); - QList<int> newSizes; - newSizes << 10 << 4 << 50 << 6; + const QList<int> newSizes{ 10, 4, 50, 6 }; QList<int> visibleSizes; view.setColumnWidths(newSizes); @@ -839,8 +810,7 @@ void tst_QColumnView::sizes() QCOMPARE(postSizes, newSizes.mid(0, postSizes.count())); QVERIFY(view.columnWidths().count() > 1); - QList<int> smallerSizes; - smallerSizes << 6; + QList<int> smallerSizes{ 6 }; view.setColumnWidths(smallerSizes); QList<int> expectedSizes = newSizes; expectedSizes[0] = 6; @@ -851,13 +821,13 @@ void tst_QColumnView::sizes() void tst_QColumnView::rowDelegate() { ColumnView view; - QItemDelegate *d = new QItemDelegate; + QStyledItemDelegate *d = new QStyledItemDelegate; view.setItemDelegateForRow(3, d); view.setModel(&m_fakeDirModel); for (int i = 0; i < view.createdColumns.count(); ++i) { QAbstractItemView *column = view.createdColumns.at(i); - QCOMPARE(column->itemDelegateForRow(3), (QAbstractItemDelegate*)d); + QCOMPARE(column->itemDelegateForRow(3), d); } delete d; } @@ -900,7 +870,7 @@ void tst_QColumnView::changeSameColumn() } QVERIFY(second.isValid()); - QList<QPointer<QAbstractItemView> > old = view.createdColumns; + const auto old = view.createdColumns; view.setCurrentIndex(second); QCOMPARE(old, view.createdColumns); @@ -973,7 +943,7 @@ void tst_QColumnView::pullRug() QModelIndex home = model.thirdLevel(); view.setCurrentIndex(home); if (removeModel) - view.setModel(0); + view.setModel(nullptr); else view.setCurrentIndex(QModelIndex()); QTest::qWait(ANIMATION_DELAY); @@ -982,19 +952,19 @@ void tst_QColumnView::pullRug() void tst_QColumnView::dynamicModelChanges() { - struct MyItemDelegate : public QItemDelegate + struct MyItemDelegate : public QStyledItemDelegate { void paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const + const QModelIndex &index) const override { paintedIndexes += index; - QItemDelegate::paint(painter, option, index); + QStyledItemDelegate::paint(painter, option, index); } mutable QSet<QModelIndex> paintedIndexes; - } delegate;; + } delegate; QStandardItemModel model; ColumnView view; view.setModel(&model); @@ -1008,8 +978,6 @@ void tst_QColumnView::dynamicModelChanges() QVERIFY(QTest::qWaitForWindowExposed(&view)); //let the time for painting to occur QTRY_COMPARE(delegate.paintedIndexes.count(), 1); QCOMPARE(*delegate.paintedIndexes.begin(), model.index(0,0)); - - } diff --git a/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/main.cpp b/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/main.cpp new file mode 100644 index 0000000000..acdd91e06e --- /dev/null +++ b/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/main.cpp @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QTextDocument> + +extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size) { + QTextDocument().setMarkdown(QByteArray(Data, Size)); + return 0; +} diff --git a/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/setMarkdown.pro b/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/setMarkdown.pro new file mode 100644 index 0000000000..4a2dfa51b9 --- /dev/null +++ b/tests/libfuzzer/gui/text/qtextdocument/setMarkdown/setMarkdown.pro @@ -0,0 +1,4 @@ +CONFIG += console +CONFIG -= app_bundle +SOURCES += main.cpp +LIBS += -fsanitize=fuzzer |