diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-13 12:58:35 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-13 13:39:19 +0000 |
commit | 10991bf26e1cf938e5df1c3c1cec5adf44b3b5eb (patch) | |
tree | d3280095acece0f43aad94193507bda6008af9e2 /ApiExtractor | |
parent | 9bad5b23dd1ed7274273fd8ad882c3f6acc6ccd8 (diff) |
Refactor TestUtil of ApiExtractor
Change the class TestUtil to a namespace containing a free function
returning the AbstractMetaBuilder instance on success. Use QScopedPointer
in the tests and add checks.
This makes it possible to detect parse errors which would previously only
trigger an assert.
Change-Id: Iea3a8fb62515602c76b10eab4889400af5b26b34
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'ApiExtractor')
35 files changed, 395 insertions, 287 deletions
diff --git a/ApiExtractor/tests/testabstractmetaclass.cpp b/ApiExtractor/tests/testabstractmetaclass.cpp index f9c7cfed5..7fc5c1f0f 100644 --- a/ApiExtractor/tests/testabstractmetaclass.cpp +++ b/ApiExtractor/tests/testabstractmetaclass.cpp @@ -37,8 +37,9 @@ void TestAbstractMetaClass::testClassName() { const char* cppCode ="class ClassName {};"; const char* xmlCode = "<typesystem package=\"Foo\"><value-type name=\"ClassName\"/></typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); QCOMPARE(classes[0]->name(), QLatin1String("ClassName")); } @@ -51,8 +52,9 @@ void TestAbstractMetaClass::testClassNameUnderNamespace() <namespace-type name=\"Namespace\"/>\n\ <value-type name=\"Namespace::ClassName\"/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); // 1 namespace + 1 class if (classes.first()->name() != QLatin1String("ClassName")) classes.swap(0, 1); @@ -103,8 +105,9 @@ void TestAbstractMetaClass::testVirtualMethods() <object-type name='B'/>\n\ <object-type name='C'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); AbstractMetaClass* a = classes.findClass(QLatin1String("A")); AbstractMetaClass* b = classes.findClass(QLatin1String("B")); @@ -170,8 +173,9 @@ void TestAbstractMetaClass::testDefaultValues() <value-type name='A'/>\n\ <value-type name='A::B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QCOMPARE(classA->queryFunctionsByName(QLatin1String("method")).count(), 1); @@ -198,8 +202,9 @@ void TestAbstractMetaClass::testModifiedDefaultValues() </value-type>\n\ <value-type name='A::B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QCOMPARE(classA->queryFunctionsByName(QLatin1String("method")).count(), 1); @@ -221,8 +226,9 @@ void TestAbstractMetaClass::testInnerClassOfAPolymorphicOne() <object-type name='A'/>\n\ <value-type name='A::B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -247,8 +253,9 @@ void TestAbstractMetaClass::testForwardDeclaredInnerClass() <value-type name='A'/>\n\ <value-type name='A::B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); const AbstractMetaClass *classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -277,8 +284,9 @@ void TestAbstractMetaClass::testSpecialFunctions() <object-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); const AbstractMetaClass *classA = classes.findClass(QLatin1String("A")); @@ -341,8 +349,9 @@ void TestAbstractMetaClass::testClassDefaultConstructors() <value-type name='F'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 6); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); @@ -409,8 +418,9 @@ void TestAbstractMetaClass::testClassInheritedDefaultConstructors() <object-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -446,8 +456,9 @@ void TestAbstractMetaClass::testAbstractClassDefaultConstructors() <object-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -466,8 +477,9 @@ void TestAbstractMetaClass::testObjectTypesMustNotHaveCopyConstructors() <object-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -501,8 +513,9 @@ void TestAbstractMetaClass::testIsPolymorphic() <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* b = classes.findClass(QLatin1String("A")); diff --git a/ApiExtractor/tests/testabstractmetatype.cpp b/ApiExtractor/tests/testabstractmetatype.cpp index dfe13e037..735ccc2a1 100644 --- a/ApiExtractor/tests/testabstractmetatype.cpp +++ b/ApiExtractor/tests/testabstractmetatype.cpp @@ -39,9 +39,10 @@ void TestAbstractMetaType::testConstCharPtrType() <primitive-type name='char'/>\n\ <function signature='justAtest()' />\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - QCOMPARE(t.builder()->globalFunctions().size(), 1); - AbstractMetaFunction* func = t.builder()->globalFunctions().first(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + QCOMPARE(builder->globalFunctions().size(), 1); + AbstractMetaFunction* func = builder->globalFunctions().first(); AbstractMetaType* rtype = func->type(); // Test properties of const char* QVERIFY(rtype); @@ -71,13 +72,14 @@ void TestAbstractMetaType::testApiVersionSupported() <function signature='justAtest2()' since='1.1'/>\n\ <function signature='justAtest3()'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false, "1.0"); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false, "1.0")); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 2); - AbstractMetaFunctionList functions = t.builder()->globalFunctions(); + AbstractMetaFunctionList functions = builder->globalFunctions(); QCOMPARE(functions.size(), 2); } @@ -88,9 +90,10 @@ void TestAbstractMetaType::testApiVersionNotSupported() const char* xmlCode = "<typesystem package='Foo'>\n\ <value-type name='object' since='0.1'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true, "0.1"); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true, "0.1")); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); } @@ -102,13 +105,14 @@ void TestAbstractMetaType::testCharType() <value-type name='A'/>\n\ <function signature='justAtest()'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); QCOMPARE(classes.first()->package(), QLatin1String("Foo")); - AbstractMetaFunctionList functions = t.builder()->globalFunctions(); + AbstractMetaFunctionList functions = builder->globalFunctions(); QCOMPARE(functions.size(), 1); AbstractMetaFunction* func = functions.first(); AbstractMetaType* rtype = func->type(); @@ -139,9 +143,10 @@ void TestAbstractMetaType::testTypedef() const char* xmlCode = "<typesystem package=\"Foo\">\n\ <value-type name='C' />\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); AbstractMetaClass* c = classes.findClass(QLatin1String("C")); QVERIFY(c); @@ -163,11 +168,12 @@ void TestAbstractMetaType::testTypedefWithTemplates() <value-type name='B' />\n\ <function signature='func(A<B>)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); - AbstractMetaFunctionList functions = t.builder()->globalFunctions(); + AbstractMetaFunctionList functions = builder->globalFunctions(); QCOMPARE(functions.count(), 1); AbstractMetaFunction* function = functions.first(); AbstractMetaArgumentList args = function->arguments(); @@ -187,9 +193,10 @@ void TestAbstractMetaType::testObjectTypeUsedAsValue() const char* xmlCode = "<typesystem package='Foo'>\n\ <object-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); diff --git a/ApiExtractor/tests/testaddfunction.cpp b/ApiExtractor/tests/testaddfunction.cpp index 6130658da..66ae05502 100644 --- a/ApiExtractor/tests/testaddfunction.cpp +++ b/ApiExtractor/tests/testaddfunction.cpp @@ -82,9 +82,10 @@ void TestAddFunction::testAddFunction() </add-function>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); TypeDatabase* typeDb = TypeDatabase::instance(); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().count(), 4); // default ctor, default copy ctor, func a() and the added function @@ -120,8 +121,9 @@ void TestAddFunction::testAddFunctionConstructor() <add-function signature='A(int)'/>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().count(), 3); // default and added ctors @@ -142,8 +144,9 @@ void TestAddFunction::testAddFunctionTagDefaultValues() <add-function signature='func()'/>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().count(), 3); // default ctor, default copy ctor and the added function @@ -166,8 +169,9 @@ void TestAddFunction::testAddFunctionCodeSnippets() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); AbstractMetaFunction* addedFunc = classA->functions().last(); @@ -193,8 +197,9 @@ void TestAddFunction::testAddFunctionWithoutParenteses() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("func")); @@ -225,8 +230,9 @@ void TestAddFunction::testAddFunctionWithDefaultArgs() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("func")); @@ -247,8 +253,9 @@ void TestAddFunction::testAddFunctionAtModuleLevel() </add-function>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -285,8 +292,9 @@ void TestAddFunction::testAddFunctionWithVarargs() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("func")); @@ -308,8 +316,9 @@ void TestAddFunction::testAddStaticFunction() </add-function>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("func")); @@ -332,11 +341,12 @@ void TestAddFunction::testAddGlobalFunction() </add-function>\n\ <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaFunctionList globalFuncs = t.builder()->globalFunctions(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaFunctionList globalFuncs = builder->globalFunctions(); QCOMPARE(globalFuncs.count(), 2); - QVERIFY(!t.builder()->classes().findClass(QLatin1String("B"))->findFunction(QLatin1String("globalFunc"))); - QVERIFY(!t.builder()->classes().findClass(QLatin1String("B"))->findFunction(QLatin1String("globalFunc2"))); + QVERIFY(!builder->classes().findClass(QLatin1String("B"))->findFunction(QLatin1String("globalFunc"))); + QVERIFY(!builder->classes().findClass(QLatin1String("B"))->findFunction(QLatin1String("globalFunc2"))); QVERIFY(!globalFuncs[0]->injectedCodeSnips().isEmpty()); QVERIFY(!globalFuncs[1]->injectedCodeSnips().isEmpty()); } @@ -354,8 +364,9 @@ void TestAddFunction::testAddFunctionWithApiVersion() <inject-code class='target' position='beginning'>custom_code();</inject-code>\n\ </add-function>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true, "0.1"); - AbstractMetaFunctionList globalFuncs = t.builder()->globalFunctions(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true, "0.1")); + QVERIFY(!builder.isNull()); + AbstractMetaFunctionList globalFuncs = builder->globalFunctions(); QCOMPARE(globalFuncs.count(), 1); } @@ -376,8 +387,9 @@ void TestAddFunction::testModifyAddedFunction() </add-function>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* foo = classes.findClass(QLatin1String("Foo")); const AbstractMetaFunction* method = foo->findFunction(QLatin1String("method")); QCOMPARE(method->arguments().size(), 2); @@ -403,8 +415,9 @@ void TestAddFunction::testAddFunctionOnTypedef() </add-function>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* foo = classes.findClass(QLatin1String("FooInt")); QVERIFY(foo); QVERIFY(foo->hasNonPrivateConstructor()); @@ -426,9 +439,10 @@ void TestAddFunction::testAddFunctionWithTemplateArg() <add-function signature='func(Foo<int>)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - QCOMPARE(t.builder()->globalFunctions().size(), 1); - AbstractMetaFunction* func = t.builder()->globalFunctions().first(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + QCOMPARE(builder->globalFunctions().size(), 1); + AbstractMetaFunction* func = builder->globalFunctions().first(); AbstractMetaArgument* arg = func->arguments().first(); QCOMPARE(arg->type()->instantiations().count(), 1); } diff --git a/ApiExtractor/tests/testarrayargument.cpp b/ApiExtractor/tests/testarrayargument.cpp index 4209da0f3..5a99dcf98 100644 --- a/ApiExtractor/tests/testarrayargument.cpp +++ b/ApiExtractor/tests/testarrayargument.cpp @@ -47,8 +47,9 @@ void TestArrayArgument::testArrayArgumentWithSizeDefinedByInteger() </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaArgument* arg = classA->functions().last()->arguments().first(); @@ -72,8 +73,9 @@ void TestArrayArgument::testArrayArgumentWithSizeDefinedByEnumValue() </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); AbstractMetaEnum* someEnum = classA->findEnum(QLatin1String("SomeEnum")); @@ -102,11 +104,12 @@ void TestArrayArgument::testArrayArgumentWithSizeDefinedByEnumValueFromGlobalEnu </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); - AbstractMetaEnum* someEnum = t.builder()->globalEnums().first(); + AbstractMetaEnum* someEnum = builder->globalEnums().first(); QVERIFY(someEnum); AbstractMetaEnumValue* nvalues = 0; foreach (AbstractMetaEnumValue* enumValue, someEnum->values()) { diff --git a/ApiExtractor/tests/testcodeinjection.cpp b/ApiExtractor/tests/testcodeinjection.cpp index d000dbfa9..3ed8872bb 100644 --- a/ApiExtractor/tests/testcodeinjection.cpp +++ b/ApiExtractor/tests/testcodeinjection.cpp @@ -50,8 +50,9 @@ void TestCodeInjections::testReadFileUtf8() </value-type>\n\ <value-type name='A::B'/>\n\ </typesystem>\n"); - TestUtil t(cppCode, xmlCode.toLocal8Bit().constData()); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode.toLocal8Bit().constData())); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QCOMPARE(classA->typeEntry()->codeSnips().count(), 1); QString code = classA->typeEntry()->codeSnips().first().code(); @@ -73,9 +74,9 @@ void TestCodeInjections::testInjectWithValidApiVersion() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true, "1.0"); - - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true, "1.0")); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QCOMPARE(classA->typeEntry()->codeSnips().count(), 1); } @@ -92,9 +93,10 @@ void TestCodeInjections::testInjectWithInvalidApiVersion() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true, "0.1"); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true, "0.1")); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QCOMPARE(classA->typeEntry()->codeSnips().count(), 0); } diff --git a/ApiExtractor/tests/testcontainer.cpp b/ApiExtractor/tests/testcontainer.cpp index 47a298385..ccc6d6bfb 100644 --- a/ApiExtractor/tests/testcontainer.cpp +++ b/ApiExtractor/tests/testcontainer.cpp @@ -50,8 +50,9 @@ void TestContainer::testContainerType() <object-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); //search for class A AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); @@ -80,8 +81,9 @@ void TestContainer::testListOfValueType() <value-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); diff --git a/ApiExtractor/tests/testconversionoperator.cpp b/ApiExtractor/tests/testconversionoperator.cpp index 6d0b45195..da8d74792 100644 --- a/ApiExtractor/tests/testconversionoperator.cpp +++ b/ApiExtractor/tests/testconversionoperator.cpp @@ -50,8 +50,9 @@ void TestConversionOperator::testConversionOperator() <value-type name='C'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); AbstractMetaClass* classC = classes.findClass(QLatin1String("C")); @@ -87,8 +88,9 @@ void TestConversionOperator::testConversionOperatorOfDiscardedClass() <value-type name='A' />\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->externalConversionOperators().count(), 0); @@ -110,8 +112,9 @@ void TestConversionOperator::testRemovedConversionOperator() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classA); @@ -135,8 +138,9 @@ void TestConversionOperator::testConversionOperatorReturningReference() <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classA); @@ -164,8 +168,9 @@ void TestConversionOperator::testConversionOperatorReturningConstReference() <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classA); diff --git a/ApiExtractor/tests/testconversionruletag.cpp b/ApiExtractor/tests/testconversionruletag.cpp index c78d230ac..5a815b277 100644 --- a/ApiExtractor/tests/testconversionruletag.cpp +++ b/ApiExtractor/tests/testconversionruletag.cpp @@ -50,8 +50,9 @@ void TestConversionRuleTag::testConversionRuleTagWithFile() <conversion-rule file='") + file.fileName() + QLatin1String("'/>\n\ </value-type>\n\ </typesystem>\n"); - TestUtil t(cppCode, xmlCode.toLocal8Bit().data()); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode.toLocal8Bit().data())); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const ComplexTypeEntry* typeEntry = classA->typeEntry(); @@ -97,7 +98,8 @@ void TestConversionRuleTag::testConversionRuleTagReplace() <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); TypeDatabase* typeDb = TypeDatabase::instance(); PrimitiveTypeEntry* typeA = typeDb->findPrimitiveType(QLatin1String("A")); QVERIFY(typeA); @@ -163,8 +165,9 @@ if (!TargetDateTimeAPI) TargetDateTime_IMPORT;\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("Date")); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("Date")); QVERIFY(classA); CustomConversion* conversion = classA->typeEntry()->customConversion(); @@ -222,7 +225,8 @@ void TestConversionRuleTag::testConversionRuleTagWithInsertTemplate() "%OUT = %IN.createA();\n" "// TEMPLATE - target_to_native - END"; - TestUtil t(cppCode, xmlCode); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); TypeDatabase* typeDb = TypeDatabase::instance(); PrimitiveTypeEntry* typeA = typeDb->findPrimitiveType(QLatin1String("A")); QVERIFY(typeA); diff --git a/ApiExtractor/tests/testctorinformation.cpp b/ApiExtractor/tests/testctorinformation.cpp index 5ec295b01..582ec2794 100644 --- a/ApiExtractor/tests/testctorinformation.cpp +++ b/ApiExtractor/tests/testctorinformation.cpp @@ -43,8 +43,9 @@ void TestCtorInformation::testCtorIsPrivate() <object-type name='Subject'/>\n\ <value-type name='CtorLess'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); QCOMPARE(classes.findClass(QLatin1String("Control"))->hasNonPrivateConstructor(), true); QCOMPARE(classes.findClass(QLatin1String("Subject"))->hasNonPrivateConstructor(), false); @@ -62,8 +63,9 @@ void TestCtorInformation::testHasNonPrivateCtor() <object-type name='Base' generate='no'/>\n\ <object-type name='Derived'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* base = classes.findClass(QLatin1String("Base")); QCOMPARE(base->hasNonPrivateConstructor(), true); diff --git a/ApiExtractor/tests/testdroptypeentries.cpp b/ApiExtractor/tests/testdroptypeentries.cpp index 53b12690b..a64e95409 100644 --- a/ApiExtractor/tests/testdroptypeentries.cpp +++ b/ApiExtractor/tests/testdroptypeentries.cpp @@ -70,9 +70,10 @@ void TestDropTypeEntries::testDropEntries() droppedEntries << QLatin1String("Foo.ObjectB") << QLatin1String("Foo.NamespaceA.InnerClassA"); droppedEntries << QLatin1String("Foo.NamespaceB") << QLatin1String("Foo.EnumB") << QLatin1String("Foo.funcB()"); droppedEntries << QLatin1String("Foo.NamespaceA.InnerNamespaceA"); - TestUtil t(cppCode, xmlCode, false, 0, droppedEntries); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false, Q_NULLPTR, droppedEntries)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.findClass(QLatin1String("ValueA"))); QVERIFY(!classes.findClass(QLatin1String("ValueB"))); QVERIFY(classes.findClass(QLatin1String("ObjectA"))); @@ -81,7 +82,7 @@ void TestDropTypeEntries::testDropEntries() QVERIFY(!classes.findClass(QLatin1String("NamespaceA::InnerClassA"))); QVERIFY(!classes.findClass(QLatin1String("NamespaceB"))); - AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + AbstractMetaEnumList globalEnums = builder->globalEnums(); QCOMPARE(globalEnums.count(), 1); QCOMPARE(globalEnums.first()->name(), QLatin1String("EnumA")); @@ -92,9 +93,10 @@ void TestDropTypeEntries::testDropEntries() void TestDropTypeEntries::testDontDropEntries() { - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.findClass(QLatin1String("ValueA"))); QVERIFY(classes.findClass(QLatin1String("ValueB"))); QVERIFY(classes.findClass(QLatin1String("ObjectA"))); @@ -103,7 +105,7 @@ void TestDropTypeEntries::testDontDropEntries() QVERIFY(classes.findClass(QLatin1String("NamespaceA::InnerClassA"))); QVERIFY(classes.findClass(QLatin1String("NamespaceB"))); - QCOMPARE(t.builder()->globalEnums().size(), 2); + QCOMPARE(builder->globalEnums().size(), 2); TypeDatabase* td = TypeDatabase::instance(); QVERIFY(td->findType(QLatin1String("funcA"))); @@ -127,14 +129,17 @@ static const char* xmlCode2 = "\ void TestDropTypeEntries::testDropEntryWithChildTags() { QStringList droppedEntries(QLatin1String("Foo.ValueA")); - TestUtil t(cppCode2, xmlCode2, false, 0, droppedEntries); - QVERIFY(!t.builder()->classes().findClass(QLatin1String("ValueA"))); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode2, xmlCode2, false, Q_NULLPTR, droppedEntries)); + QVERIFY(!builder.isNull()); + QVERIFY(!builder->classes().findClass(QLatin1String("ValueA"))); } + void TestDropTypeEntries::testDontDropEntryWithChildTags() { - TestUtil t(cppCode2, xmlCode2, false); - QVERIFY(t.builder()->classes().findClass(QLatin1String("ValueA"))); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode2, xmlCode2, false)); + QVERIFY(!builder.isNull()); + QVERIFY(builder->classes().findClass(QLatin1String("ValueA"))); } QTEST_APPLESS_MAIN(TestDropTypeEntries) diff --git a/ApiExtractor/tests/testdtorinformation.cpp b/ApiExtractor/tests/testdtorinformation.cpp index 0425a4dd7..c20cf24fb 100644 --- a/ApiExtractor/tests/testdtorinformation.cpp +++ b/ApiExtractor/tests/testdtorinformation.cpp @@ -37,8 +37,9 @@ void TestDtorInformation::testDtorIsPrivate() { const char* cppCode ="class Control { public: ~Control() {} }; class Subject { private: ~Subject() {} };"; const char* xmlCode = "<typesystem package=\"Foo\"><value-type name=\"Control\"/><value-type name=\"Subject\"/></typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); QCOMPARE(classes.findClass(QLatin1String("Control"))->hasPrivateDestructor(), false); QCOMPARE(classes.findClass(QLatin1String("Subject"))->hasPrivateDestructor(), true); @@ -48,8 +49,9 @@ void TestDtorInformation::testDtorIsProtected() { const char* cppCode ="class Control { public: ~Control() {} }; class Subject { protected: ~Subject() {} };"; const char* xmlCode = "<typesystem package=\"Foo\"><value-type name=\"Control\"/><value-type name=\"Subject\"/></typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); QCOMPARE(classes.findClass(QLatin1String("Control"))->hasProtectedDestructor(), false); QCOMPARE(classes.findClass(QLatin1String("Subject"))->hasProtectedDestructor(), true); @@ -59,8 +61,9 @@ void TestDtorInformation::testDtorIsVirtual() { const char* cppCode ="class Control { public: ~Control() {} }; class Subject { protected: virtual ~Subject() {} };"; const char* xmlCode = "<typesystem package=\"Foo\"><value-type name=\"Control\"/><value-type name=\"Subject\"/></typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); QCOMPARE(classes.findClass(QLatin1String("Control"))->hasVirtualDestructor(), false); QCOMPARE(classes.findClass(QLatin1String("Subject"))->hasVirtualDestructor(), true); @@ -70,8 +73,9 @@ void TestDtorInformation::testClassWithVirtualDtorIsPolymorphic() { const char* cppCode ="class Control { public: virtual ~Control() {} }; class Subject { protected: virtual ~Subject() {} };"; const char* xmlCode = "<typesystem package=\"Foo\"><value-type name=\"Control\"/><value-type name=\"Subject\"/></typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); QCOMPARE(classes.findClass(QLatin1String("Control"))->isPolymorphic(), true); QCOMPARE(classes.findClass(QLatin1String("Subject"))->isPolymorphic(), true); diff --git a/ApiExtractor/tests/testenum.cpp b/ApiExtractor/tests/testenum.cpp index c5b3fa322..3a90f8eff 100644 --- a/ApiExtractor/tests/testenum.cpp +++ b/ApiExtractor/tests/testenum.cpp @@ -51,16 +51,17 @@ void TestEnum::testEnumCppSignature() <function signature='func(A::ClassEnum)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); - AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + AbstractMetaEnumList globalEnums = builder->globalEnums(); QCOMPARE(globalEnums.count(), 1); QCOMPARE(globalEnums.first()->name(), QLatin1String("GlobalEnum")); // enum as parameter of a function - AbstractMetaFunctionList functions = t.builder()->globalFunctions(); + AbstractMetaFunctionList functions = builder->globalFunctions(); QCOMPARE(functions.count(), 1); QCOMPARE(functions.first()->arguments().count(), 1); QCOMPARE(functions.first()->arguments().first()->type()->cppSignature(), QLatin1String("A::ClassEnum")); @@ -99,8 +100,9 @@ void TestEnum::testEnumWithApiVersion() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, true, "0.1"); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true, "0.1")); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); QCOMPARE(classes[0]->enums().count(), 1); } @@ -124,14 +126,15 @@ void TestEnum::testAnonymousEnum() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + AbstractMetaEnumList globalEnums = builder->globalEnums(); QCOMPARE(globalEnums.count(), 1); QCOMPARE(globalEnums.first()->typeEntry()->qualifiedCppName(), QLatin1String("Global0")); QVERIFY(globalEnums.first()->isAnonymous()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); QCOMPARE(classes[0]->enums().count(), 2); @@ -177,9 +180,10 @@ void TestEnum::testGlobalEnums() <enum-type name='EnumB'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + AbstractMetaEnumList globalEnums = builder->globalEnums(); QCOMPARE(globalEnums.count(), 2); AbstractMetaEnum* enumA = globalEnums.first(); @@ -224,9 +228,10 @@ void TestEnum::testEnumValueFromNeighbourEnum() </namespace-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); QCOMPARE(classes[0]->enums().count(), 2); @@ -281,9 +286,10 @@ void TestEnum::testEnumValueFromExpression() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); AbstractMetaEnum* enumA = classA->findEnum(QLatin1String("EnumA")); @@ -347,9 +353,10 @@ void TestEnum::testPrivateEnum() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + AbstractMetaClass* classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->enums().count(), 2); @@ -385,9 +392,10 @@ void TestEnum::testTypedefEnum() <enum-type name='EnumA'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaEnumList globalEnums = t.builder()->globalEnums(); + AbstractMetaEnumList globalEnums = builder->globalEnums(); QEXPECT_FAIL("", "APIExtractor does not handle typedef enum correctly yet", Abort); QCOMPARE(globalEnums.count(), 1); diff --git a/ApiExtractor/tests/testextrainclude.cpp b/ApiExtractor/tests/testextrainclude.cpp index 0a84d18d5..e208a37c0 100644 --- a/ApiExtractor/tests/testextrainclude.cpp +++ b/ApiExtractor/tests/testextrainclude.cpp @@ -44,8 +44,9 @@ void TestExtraInclude::testClassExtraInclude() </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); const AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -66,8 +67,9 @@ void TestExtraInclude::testGlobalExtraIncludes() <value-type name='A'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.findClass(QLatin1String("A"))); TypeDatabase* td = TypeDatabase::instance(); diff --git a/ApiExtractor/tests/testfunctiontag.cpp b/ApiExtractor/tests/testfunctiontag.cpp index 9d2e4c454..a29d740bf 100644 --- a/ApiExtractor/tests/testfunctiontag.cpp +++ b/ApiExtractor/tests/testfunctiontag.cpp @@ -41,11 +41,12 @@ void TestFunctionTag::testFunctionTagForSpecificSignature() <primitive-type name='float'/>\n\ <function signature='globalFunction(int)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); const TypeEntry *func = TypeDatabase::instance()->findType(QLatin1String("globalFunction")); QVERIFY(func); - QCOMPARE(t.builder()->globalFunctions().size(), 1); + QCOMPARE(builder->globalFunctions().size(), 1); } void TestFunctionTag::testFunctionTagForAllSignatures() @@ -58,11 +59,12 @@ void TestFunctionTag::testFunctionTagForAllSignatures() <function signature='globalFunction(int)'/>\n\ <function signature='globalFunction(float)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); const TypeEntry *func = TypeDatabase::instance()->findType(QLatin1String("globalFunction")); QVERIFY(func); - QCOMPARE(t.builder()->globalFunctions().size(), 2); + QCOMPARE(builder->globalFunctions().size(), 2); } void TestFunctionTag::testRenameGlobalFunction() @@ -72,13 +74,14 @@ void TestFunctionTag::testRenameGlobalFunction() <typesystem package='Foo'>\n\ <function signature='global_function_with_ugly_name()' rename='smooth'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); const TypeEntry *func = TypeDatabase::instance()->findType(QLatin1String("global_function_with_ugly_name")); QVERIFY(func); - QCOMPARE(t.builder()->globalFunctions().size(), 1); - const AbstractMetaFunction* metaFunc = t.builder()->globalFunctions().first(); + QCOMPARE(builder->globalFunctions().size(), 1); + const AbstractMetaFunction* metaFunc = builder->globalFunctions().first(); QVERIFY(metaFunc); QCOMPARE(metaFunc->modifications().size(), 1); diff --git a/ApiExtractor/tests/testimplicitconversions.cpp b/ApiExtractor/tests/testimplicitconversions.cpp index fa65f215a..fc97a6038 100644 --- a/ApiExtractor/tests/testimplicitconversions.cpp +++ b/ApiExtractor/tests/testimplicitconversions.cpp @@ -50,8 +50,9 @@ void TestImplicitConversions::testWithPrivateCtors() <value-type name='B'/>\n\ <value-type name='C'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); @@ -79,8 +80,9 @@ void TestImplicitConversions::testWithModifiedVisibility() </value-type>\n\ <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); @@ -111,8 +113,9 @@ void TestImplicitConversions::testWithAddedCtor() </value-type>\n\ <value-type name='C'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); @@ -137,8 +140,9 @@ void TestImplicitConversions::testWithExternalConversionOperator() <value-type name='A'/>\n\ <value-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); diff --git a/ApiExtractor/tests/testinserttemplate.cpp b/ApiExtractor/tests/testinserttemplate.cpp index ab849fa02..3205ceb47 100644 --- a/ApiExtractor/tests/testinserttemplate.cpp +++ b/ApiExtractor/tests/testinserttemplate.cpp @@ -46,8 +46,9 @@ void TestInsertTemplate::testInsertTemplateOnClassInjectCode() </inject-code>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); @@ -68,8 +69,9 @@ void TestInsertTemplate::testInsertTemplateOnModuleInjectCode() <insert-template name='code_template'/>\n\ </inject-code>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.isEmpty()); TypeEntry* module = TypeDatabase::instance()->findType(QLatin1String("Foo")); @@ -88,8 +90,9 @@ void TestInsertTemplate::testInvalidTypeSystemTemplate() <insert-template name='this_code_template_does_not_exists'/>\n\ </inject-code>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.isEmpty()); TypeEntry* module = TypeDatabase::instance()->findType(QLatin1String("Foo")); @@ -112,8 +115,9 @@ void TestInsertTemplate::testValidAndInvalidTypeSystemTemplate() <insert-template name='code_template'/>\n\ </inject-code>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QVERIFY(classes.isEmpty()); TypeEntry* module = TypeDatabase::instance()->findType(QLatin1String("Foo")); diff --git a/ApiExtractor/tests/testmodifydocumentation.cpp b/ApiExtractor/tests/testmodifydocumentation.cpp index 9ca63e2d4..ab68082e0 100644 --- a/ApiExtractor/tests/testmodifydocumentation.cpp +++ b/ApiExtractor/tests/testmodifydocumentation.cpp @@ -48,9 +48,9 @@ void TestModifyDocumentation::testModifyDocumentation() </modify-documentation>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - - AbstractMetaClass* classA = t.builder()->classes().findClass(QLatin1String("A")); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClass *classA = builder->classes().findClass(QLatin1String("A")); QVERIFY(classA); DocModificationList docMods = classA->typeEntry()->docModifications(); QCOMPARE(docMods.count(), 1); diff --git a/ApiExtractor/tests/testmodifyfunction.cpp b/ApiExtractor/tests/testmodifyfunction.cpp index 8f1dc0208..7e61e56e7 100644 --- a/ApiExtractor/tests/testmodifyfunction.cpp +++ b/ApiExtractor/tests/testmodifyfunction.cpp @@ -49,8 +49,9 @@ void TestModifyFunction::testRenameArgument() </modify-function>\n\ </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); const AbstractMetaFunction* func = classA->findFunction(QLatin1String("method")); Q_ASSERT(func); @@ -76,8 +77,9 @@ void TestModifyFunction::testOwnershipTransfer() </modify-function>\n\ </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("method")); @@ -122,8 +124,9 @@ void TestModifyFunction::invalidateAfterUse() </object-type>\n\ <object-type name='E' />\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false, "0.1"); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false, "0.1")); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("call")); QCOMPARE(func->modifications().size(), 1); @@ -193,8 +196,9 @@ void TestModifyFunction::testWithApiVersion() </modify-function>\n\ </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false, "0.1"); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false, "0.1")); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("method")); @@ -222,8 +226,9 @@ void TestModifyFunction::testGlobalFunctionModification() </function>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - QCOMPARE(t.builder()->globalFunctions().size(), 1); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + QCOMPARE(builder->globalFunctions().size(), 1); FunctionModificationList mods = TypeDatabase::instance()->functionModifications(QLatin1String("function(A*)")); QCOMPARE(mods.count(), 1); @@ -232,7 +237,7 @@ void TestModifyFunction::testGlobalFunctionModification() ArgumentModification argMod = argMods.first(); QCOMPARE(argMod.replacedDefaultExpression, QLatin1String("A()")); - const AbstractMetaFunction* func = t.builder()->globalFunctions().first(); + const AbstractMetaFunction* func = builder->globalFunctions().first(); QVERIFY(func); QCOMPARE(func->arguments().count(), 1); const AbstractMetaArgument* arg = func->arguments().first(); diff --git a/ApiExtractor/tests/testmultipleinheritance.cpp b/ApiExtractor/tests/testmultipleinheritance.cpp index 30c8d9795..01c05348d 100644 --- a/ApiExtractor/tests/testmultipleinheritance.cpp +++ b/ApiExtractor/tests/testmultipleinheritance.cpp @@ -54,8 +54,9 @@ void TestMultipleInheritance::testVirtualClass() <object-type name='D' />\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 4); AbstractMetaClass* classD = classes.findClass(QLatin1String("D")); diff --git a/ApiExtractor/tests/testnamespace.cpp b/ApiExtractor/tests/testnamespace.cpp index ec35c3553..1a691e632 100644 --- a/ApiExtractor/tests/testnamespace.cpp +++ b/ApiExtractor/tests/testnamespace.cpp @@ -49,8 +49,9 @@ void NamespaceTest::testNamespaceMembers() <enum-type name='Option' />\n\ </namespace-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* ns = classes.findClass(QLatin1String("Namespace")); QVERIFY(ns); const AbstractMetaEnum* metaEnum = ns->findEnum(QLatin1String("Option")); @@ -78,8 +79,9 @@ void NamespaceTest::testNamespaceInnerClassMembers() </namespace-type>\n\ </namespace-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* ons = classes.findClass(QLatin1String("OuterNamespace")); QVERIFY(ons); AbstractMetaClass* ins = classes.findClass(QLatin1String("OuterNamespace::InnerNamespace")); diff --git a/ApiExtractor/tests/testnestedtypes.cpp b/ApiExtractor/tests/testnestedtypes.cpp index 830a759b7..6dbdb3a71 100644 --- a/ApiExtractor/tests/testnestedtypes.cpp +++ b/ApiExtractor/tests/testnestedtypes.cpp @@ -57,8 +57,9 @@ void TestNestedTypes::testNestedTypesModifications() </namespace-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* ons = classes.findClass(QLatin1String("OuterNamespace")); QVERIFY(ons); @@ -104,8 +105,9 @@ void TestNestedTypes::testDuplicationOfNestedTypes() </namespace-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 2); AbstractMetaClass* nspace = classes.findClass(QLatin1String("Namespace")); QVERIFY(nspace); diff --git a/ApiExtractor/tests/testnumericaltypedef.cpp b/ApiExtractor/tests/testnumericaltypedef.cpp index c37820628..3491d5cb4 100644 --- a/ApiExtractor/tests/testnumericaltypedef.cpp +++ b/ApiExtractor/tests/testnumericaltypedef.cpp @@ -45,12 +45,13 @@ void TestNumericalTypedef::testNumericalTypedef() <function signature='funcDouble(double)'/>\n\ <function signature='funcReal(real)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - QCOMPARE(t.builder()->globalFunctions().size(), 2); - const AbstractMetaFunction* funcDouble = t.builder()->globalFunctions().first(); + QCOMPARE(builder->globalFunctions().size(), 2); + const AbstractMetaFunction* funcDouble = builder->globalFunctions().first(); QVERIFY(funcDouble); - const AbstractMetaFunction* funcReal = t.builder()->globalFunctions().last(); + const AbstractMetaFunction* funcReal = builder->globalFunctions().last(); QVERIFY(funcReal); if (funcDouble->name() == QLatin1String("funcReal")) @@ -86,12 +87,13 @@ void TestNumericalTypedef::testUnsignedNumericalTypedef() <function signature='funcUnsignedShort(unsigned short)'/>\n\ <function signature='funcUShort(ushort)'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - QCOMPARE(t.builder()->globalFunctions().size(), 2); - const AbstractMetaFunction* funcUnsignedShort = t.builder()->globalFunctions().first(); + QCOMPARE(builder->globalFunctions().size(), 2); + const AbstractMetaFunction* funcUnsignedShort = builder->globalFunctions().first(); QVERIFY(funcUnsignedShort); - const AbstractMetaFunction* funcUShort = t.builder()->globalFunctions().last(); + const AbstractMetaFunction* funcUShort = builder->globalFunctions().last(); QVERIFY(funcUShort); if (funcUnsignedShort->name() == QLatin1String("funcUShort")) diff --git a/ApiExtractor/tests/testprimitivetypetag.cpp b/ApiExtractor/tests/testprimitivetypetag.cpp index 099cd7684..c2e176740 100644 --- a/ApiExtractor/tests/testprimitivetypetag.cpp +++ b/ApiExtractor/tests/testprimitivetypetag.cpp @@ -42,9 +42,10 @@ void TestPrimitiveTypeTag::testPrimitiveTypeDefaultConstructor() <primitive-type name='A' default-constructor='A()'/>\n\ <object-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); - AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classB); diff --git a/ApiExtractor/tests/testrefcounttag.cpp b/ApiExtractor/tests/testrefcounttag.cpp index 0d7cce7d8..15f8dde98 100644 --- a/ApiExtractor/tests/testrefcounttag.cpp +++ b/ApiExtractor/tests/testrefcounttag.cpp @@ -50,8 +50,9 @@ void TestRefCountTag::testReferenceCountTag() </modify-function>\n\ </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("keepObject")); QVERIFY(func); @@ -81,8 +82,9 @@ void TestRefCountTag::testWithApiVersion() </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false, "0.1"); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false, "0.1")); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("keepObject")); QVERIFY(func); diff --git a/ApiExtractor/tests/testreferencetopointer.cpp b/ApiExtractor/tests/testreferencetopointer.cpp index 549643b29..1f47f0463 100644 --- a/ApiExtractor/tests/testreferencetopointer.cpp +++ b/ApiExtractor/tests/testreferencetopointer.cpp @@ -44,8 +44,9 @@ void TestReferenceToPointer::testReferenceToPointerArgument() <object-type name='A'/>\n\ <object-type name='B'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classB); const AbstractMetaFunction* func = classB->findFunction(QLatin1String("dummy")); diff --git a/ApiExtractor/tests/testremovefield.cpp b/ApiExtractor/tests/testremovefield.cpp index c59959f0a..f5cc4611e 100644 --- a/ApiExtractor/tests/testremovefield.cpp +++ b/ApiExtractor/tests/testremovefield.cpp @@ -46,8 +46,9 @@ void TestRemoveField::testRemoveField() <modify-field name='fieldB' remove='all'/>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->fields().size(), 1); diff --git a/ApiExtractor/tests/testremoveimplconv.cpp b/ApiExtractor/tests/testremoveimplconv.cpp index 8cd9aa05c..83804c6f3 100644 --- a/ApiExtractor/tests/testremoveimplconv.cpp +++ b/ApiExtractor/tests/testremoveimplconv.cpp @@ -51,8 +51,9 @@ void TestRemoveImplConv::testRemoveImplConv() <modify-function signature='C(const A&)' remove='all'/>\n\ </value-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); diff --git a/ApiExtractor/tests/testremoveoperatormethod.cpp b/ApiExtractor/tests/testremoveoperatormethod.cpp index e579dc8b3..6fcc80278 100644 --- a/ApiExtractor/tests/testremoveoperatormethod.cpp +++ b/ApiExtractor/tests/testremoveoperatormethod.cpp @@ -85,8 +85,9 @@ void TestRemoveOperatorMethod::testRemoveOperatorMethod() <modify-function signature='operator>>(String&)' remove='all'/>\n\ </object-type>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().size(), 14); diff --git a/ApiExtractor/tests/testresolvetype.cpp b/ApiExtractor/tests/testresolvetype.cpp index 13c5d4c8d..ea1db9ffd 100644 --- a/ApiExtractor/tests/testresolvetype.cpp +++ b/ApiExtractor/tests/testresolvetype.cpp @@ -51,8 +51,9 @@ void TestResolveType::testResolveReturnTypeFromParentScope() <value-type name='A::B::C'/>\n\ <value-type name='A::D'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classD = classes.findClass(QLatin1String("A::D")); QVERIFY(classD); const AbstractMetaFunction* meth = classD->findFunction(QLatin1String("method")); diff --git a/ApiExtractor/tests/testreverseoperators.cpp b/ApiExtractor/tests/testreverseoperators.cpp index 6cdcfe754..fc7b408a4 100644 --- a/ApiExtractor/tests/testreverseoperators.cpp +++ b/ApiExtractor/tests/testreverseoperators.cpp @@ -44,8 +44,9 @@ void TestReverseOperators::testReverseSum() <value-type name='A' />\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().count(), 4); @@ -87,8 +88,9 @@ void TestReverseOperators::testReverseSumWithAmbiguity() <value-type name='B' />\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); QCOMPARE(classA->functions().count(), 6); diff --git a/ApiExtractor/tests/testtemplates.cpp b/ApiExtractor/tests/testtemplates.cpp index 73bf6407c..715d3647b 100644 --- a/ApiExtractor/tests/testtemplates.cpp +++ b/ApiExtractor/tests/testtemplates.cpp @@ -65,8 +65,9 @@ void TestTemplates::testTemplateWithNamespace() <value-type name='Internet::Bookmarks'/>\n\ </typesystem>").arg(file.fileName()); - TestUtil t(cppCode, qPrintable(xmlCode1), false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, qPrintable(xmlCode1), false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("Bookmarks")); QVERIFY(classB); @@ -99,8 +100,9 @@ void TestTemplates::testTemplateOnContainers() <object-type name='Namespace::B'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classB); @@ -135,8 +137,9 @@ void TestTemplates::testTemplateValueAsArgument() </typesystem>\n\ "; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaFunctionList globalFuncs = t.builder()->globalFunctions(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaFunctionList globalFuncs = builder->globalFunctions(); QCOMPARE(globalFuncs.count(), 1); AbstractMetaFunction* func = globalFuncs.first(); @@ -159,8 +162,9 @@ void TestTemplates::testTemplatePointerAsArgument() </typesystem>\n\ "; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaFunctionList globalFuncs = t.builder()->globalFunctions(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaFunctionList globalFuncs = builder->globalFunctions(); QCOMPARE(globalFuncs.count(), 1); AbstractMetaFunction* func = globalFuncs.first(); @@ -183,8 +187,9 @@ void TestTemplates::testTemplateReferenceAsArgument() </typesystem>\n\ "; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaFunctionList globalFuncs = t.builder()->globalFunctions(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaFunctionList globalFuncs = builder->globalFunctions(); QCOMPARE(globalFuncs.count(), 1); AbstractMetaFunction* func = globalFuncs.first(); @@ -208,8 +213,9 @@ void TestTemplates::testTemplateParameterFixup() <value-type name='List::Iterator'/>\n\ </typesystem>\n"; - TestUtil t(cppCode, xmlCode, false); - const AbstractMetaClassList templates = t.builder()->templates(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + const AbstractMetaClassList templates = builder->templates(); QCOMPARE(templates.count(), 1); const AbstractMetaClass *list = templates.first(); @@ -248,9 +254,10 @@ void TestTemplates::testInheritanceFromContainterTemplate() </typesystem>\n\ "; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); - AbstractMetaClassList templates = t.builder()->templates(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); + AbstractMetaClassList templates = builder->templates(); QCOMPARE(classes.count(), 2); QCOMPARE(templates.count(), 1); @@ -283,8 +290,9 @@ void TestTemplates::testTemplateInheritanceMixedWithForwardDeclaration() <value-type name='Future' generate='no'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("B")); QVERIFY(classB); @@ -319,8 +327,9 @@ void TestTemplates::testTemplateInheritanceMixedWithNamespaceAndForwardDeclarati <value-type name='Namespace::Future' generate='no'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classB = classes.findClass(QLatin1String("Namespace::B")); QVERIFY(classB); @@ -355,8 +364,9 @@ void TestTemplates::testTypedefOfInstantiationOfTemplateClass() </typesystem>\n\ "; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 3); const AbstractMetaClass* base = classes.findClass(QLatin1String("BaseTemplateClass")); @@ -403,8 +413,9 @@ void TestTemplates::testContainerTypeIncompleteArgument() <value-type name='IntVector'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, true); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.count(), 1); AbstractMetaClass* vector = classes.findClass(QLatin1String("IntVector")); diff --git a/ApiExtractor/tests/testtyperevision.cpp b/ApiExtractor/tests/testtyperevision.cpp index 4c4097ac8..fc67917be 100644 --- a/ApiExtractor/tests/testtyperevision.cpp +++ b/ApiExtractor/tests/testtyperevision.cpp @@ -45,8 +45,9 @@ void TestTypeRevision::testRevisionAttr() " <enum-type name=\"Rev_5\" revision=\"5\" flags=\"Flag_5\" />" "</object-type>" "</typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* rev0 = classes.findClass(QLatin1String("Rev_0")); QCOMPARE(getTypeRevision(rev0->typeEntry()), 0); diff --git a/ApiExtractor/tests/testutil.h b/ApiExtractor/tests/testutil.h index ef712e9dc..81c35bdf6 100644 --- a/ApiExtractor/tests/testutil.h +++ b/ApiExtractor/tests/testutil.h @@ -33,16 +33,14 @@ #include "reporthandler.h" #include "typedatabase.h" -class TestUtil +namespace TestUtil { -public: - TestUtil(const char* cppCode, const char* xmlCode, - bool silent = true, const char* apiVersion = 0, - QStringList dropTypeEntries = QStringList()) - : m_builder(0) + static AbstractMetaBuilder *parse(const char *cppCode, const char *xmlCode, + bool silent = true, + const char *apiVersion = Q_NULLPTR, + const QStringList &dropTypeEntries = QStringList()) { ReportHandler::setSilent(silent); - m_builder = new AbstractMetaBuilder; TypeDatabase* td = TypeDatabase::instance(true); if (apiVersion) td->setApiVersion(QLatin1String("*"), apiVersion); @@ -54,24 +52,13 @@ public: buffer.close(); // parse C++ code buffer.setData(cppCode); - bool res = m_builder->build(&buffer); - Q_UNUSED(res); - Q_ASSERT(res); + AbstractMetaBuilder *builder = new AbstractMetaBuilder; + if (!builder->build(&buffer)) { + delete builder; + return Q_NULLPTR; + } + return builder; } - - ~TestUtil() - { - delete m_builder; - m_builder = 0; - } - - AbstractMetaBuilder* builder() - { - return m_builder; - } - -private: - AbstractMetaBuilder* m_builder; -}; +} // namespace TestUtil #endif diff --git a/ApiExtractor/tests/testvaluetypedefaultctortag.cpp b/ApiExtractor/tests/testvaluetypedefaultctortag.cpp index 728aed2de..deadd1435 100644 --- a/ApiExtractor/tests/testvaluetypedefaultctortag.cpp +++ b/ApiExtractor/tests/testvaluetypedefaultctortag.cpp @@ -46,8 +46,10 @@ void TestValueTypeDefaultCtorTag::testValueTypeDefaultCtorTagArgument() <value-type name='A' default-constructor='A(0, 0)' />\n\ <value-type name='B' />\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode, false); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false)); + QVERIFY(!builder.isNull()); + + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); diff --git a/ApiExtractor/tests/testvoidarg.cpp b/ApiExtractor/tests/testvoidarg.cpp index 5b5de5c23..a13cab7bd 100644 --- a/ApiExtractor/tests/testvoidarg.cpp +++ b/ApiExtractor/tests/testvoidarg.cpp @@ -39,8 +39,9 @@ void TestVoidArg::testVoidParsedFunction() <typesystem package=\"Foo\">\n\ <value-type name='A'/>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("a")); @@ -56,8 +57,9 @@ void TestVoidArg::testVoidAddedFunction() <add-function signature=\"a(void)\"/>\n\ </value-type>\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("a")); @@ -72,8 +74,9 @@ void TestVoidArg::testVoidPointerParsedFunction() <typesystem package=\"Foo\">\n\ <value-type name='A' />\n\ </typesystem>"; - TestUtil t(cppCode, xmlCode); - AbstractMetaClassList classes = t.builder()->classes(); + QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); + QVERIFY(!builder.isNull()); + AbstractMetaClassList classes = builder->classes(); AbstractMetaClass* classA = classes.findClass(QLatin1String("A")); QVERIFY(classA); const AbstractMetaFunction* addedFunc = classA->findFunction(QLatin1String("a")); |