aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-06-28 16:12:45 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-07-02 12:34:12 +0000
commit163c06d1431da7aa4aa88e571cc48c2ee39c83a3 (patch)
treecc633ecd8189db28a89ac0c4c7f9f41d4c185469
parentefa74f9f83cef878fb02bc61e21a3442d2e02f26 (diff)
shiboken: Use raw string literals in ApiExtractor test testtemplates
This improves the readability. Task-number: PYSIDE-672 Change-Id: I936ef46fb30af6163b8337adbf9cf585e68f3424 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testtemplates.cpp388
1 files changed, 195 insertions, 193 deletions
diff --git a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
index ea506f3b5..8d869e3f9 100644
--- a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
@@ -35,35 +35,37 @@
void TestTemplates::testTemplateWithNamespace()
{
- const char cppCode[] = "\n\
- template<typename T> struct QList {}; \n\
- struct Url {\n\
- void name();\n\
- };\n\
- namespace Internet {\n\
- struct Url{};\n\
- struct Bookmarks {\n\
- QList<Url> list();\n\
- };\n\
- }";
- const char xmlCode0[] = "\n\
- <typesystem package='Pakcage.Network'>\n\
- <value-type name='Url'/>\n\
- </typesystem>";
+ const char cppCode[] = R"CPP(
+template<typename T> struct QList {};
+struct Url {
+ void name();
+};
+namespace Internet {
+ struct Url{};
+ struct Bookmarks {
+ QList<Url> list();
+ };
+};
+)CPP";
+
+ const char xmlCode0[] = R"XML(
+<typesystem package='Package.Network'>
+ <value-type name='Url'/>
+</typesystem>)XML";
QTemporaryFile file;
QVERIFY(file.open());
file.write(xmlCode0);
file.close();
- QString xmlCode1 = QString::fromLatin1("\n\
- <typesystem package='Package.Internet'>\n\
- <load-typesystem name='%1' generate='no'/>\n\
- <container-type name='QList' type='list'/>\n\
- <namespace-type name='Internet' generate='no'/>\n\
- <value-type name='Internet::Url'/>\n\
- <value-type name='Internet::Bookmarks'/>\n\
- </typesystem>").arg(file.fileName());
+ QString xmlCode1 = QString::fromLatin1(R"XML(
+<typesystem package='Package.Internet'>
+ <load-typesystem name='%1' generate='no'/>
+ <container-type name='QList' type='list'/>
+ <namespace-type name='Internet' generate='no'/>
+ <value-type name='Internet::Url'/>
+ <value-type name='Internet::Bookmarks'/>
+</typesystem>)XML").arg(file.fileName());
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, qPrintable(xmlCode1), false));
QVERIFY(!builder.isNull());
@@ -79,26 +81,27 @@ void TestTemplates::testTemplateWithNamespace()
void TestTemplates::testTemplateOnContainers()
{
- const char cppCode[] = "\n\
- struct Base {};\n\
- template<typename T> struct QList {}; \n\
- namespace Namespace {\n\
- enum SomeEnum { E1, E2 };\n\
- template<SomeEnum type> struct A {\n\
- A<type> foo(const QList<A<type> >& a);\n\
- };\n\
- typedef A<E1> B;\n\
- }\n\
- ";
- const char xmlCode[] = "\n\
- <typesystem package=\"Package\">\n\
- <container-type name='QList' type='list'/>\n\
- <namespace-type name='Namespace'/>\n\
- <enum-type name='Namespace::SomeEnum'/>\n\
- <object-type name='Base'/>\n\
- <object-type name='Namespace::A' generate='no'/>\n\
- <object-type name='Namespace::B'/>\n\
- </typesystem>";
+ const char cppCode[] = R"CPP(
+struct Base {};
+template<typename T> struct QList {};
+namespace Namespace {
+ enum SomeEnum { E1, E2 };
+ template<SomeEnum type> struct A {
+ A<type> foo(const QList<A<type> >& a);
+ };
+ typedef A<E1> B;
+}
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package="Package">
+ <container-type name='QList' type='list'/>
+ <namespace-type name='Namespace'/>
+ <enum-type name='Namespace::SomeEnum'/>
+ <object-type name='Base'/>
+ <object-type name='Namespace::A' generate='no'/>
+ <object-type name='Namespace::B'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -124,18 +127,17 @@ void TestTemplates::testTemplateOnContainers()
void TestTemplates::testTemplateValueAsArgument()
{
- const char cppCode[] = "\n\
- template<typename T> struct List {};\n\
- void func(List<int> arg) {}\n\
- ";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <primitive-type name='int'/>\n\
- <container-type name='List' type='list'/>\n\
- <function signature='func(List&lt;int&gt;)'/>\n\
- </typesystem>\n\
- ";
+ const char cppCode[] = R"CPP(
+template<typename T> struct List {};
+void func(List<int> arg) {}
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <primitive-type name='int'/>
+ <container-type name='List' type='list'/>
+ <function signature='func(List&lt;int&gt;)'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -149,18 +151,17 @@ void TestTemplates::testTemplateValueAsArgument()
void TestTemplates::testTemplatePointerAsArgument()
{
- const char cppCode[] = "\n\
- template<typename T> struct List {};\n\
- void func(List<int>* arg) {}\n\
- ";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <primitive-type name='int'/>\n\
- <container-type name='List' type='list'/>\n\
- <function signature='func(List&lt;int&gt;*)'/>\n\
- </typesystem>\n\
- ";
+ const char cppCode[] = R"CPP(
+template<typename T> struct List {};
+void func(List<int>* arg) {}
+)CPP";
+
+ const char xmlCode[] = R"XML(
+ <typesystem package='Package'>
+ <primitive-type name='int'/>
+ <container-type name='List' type='list'/>
+ <function signature='func(List&lt;int&gt;*)'/>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -174,18 +175,17 @@ void TestTemplates::testTemplatePointerAsArgument()
void TestTemplates::testTemplateReferenceAsArgument()
{
- const char cppCode[] = "\n\
- template<typename T> struct List {};\n\
- void func(List<int>& arg) {}\n\
- ";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <primitive-type name='int'/>\n\
- <container-type name='List' type='list'/>\n\
- <function signature='func(List&lt;int&gt;&amp;)'/>\n\
- </typesystem>\n\
- ";
+ const char cppCode[] = R"CPP(
+template<typename T> struct List {};
+void func(List<int>& arg) {}
+ )CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <primitive-type name='int'/>
+ <container-type name='List' type='list'/>
+ <function signature='func(List&lt;int&gt;&amp;)'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -199,19 +199,20 @@ void TestTemplates::testTemplateReferenceAsArgument()
void TestTemplates::testTemplateParameterFixup()
{
- const char cppCode[] = "\n\
- template<typename T>\n\
- struct List {\n\
- struct Iterator {};\n\
- void append(List l);\n\
- void erase(List::Iterator it);\n\
- };\n";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <container-type name='List' type='list'/>\n\
- <value-type name='List::Iterator'/>\n\
- </typesystem>\n";
+ const char cppCode[] = R"CPP(
+template<typename T>
+struct List {
+ struct Iterator {};
+ void append(List l);
+ void erase(List::Iterator it);
+};
+)CPP";
+
+ const char xmlCode[] = R"XML(
+ <typesystem package='Package'>
+ <container-type name='List' type='list'/>
+ <value-type name='List::Iterator'/>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -234,26 +235,25 @@ void TestTemplates::testTemplateParameterFixup()
void TestTemplates::testInheritanceFromContainterTemplate()
{
- const char cppCode[] = "\n\
- template<typename T>\n\
- struct ListContainer {\n\
- inline void push_front(const T& t);\n\
- inline T& front();\n\
- };\n\
- struct FooBar {};\n\
- struct FooBars : public ListContainer<FooBar> {};\n\
- ";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <container-type name='ListContainer' type='list'/>\n\
- <value-type name='FooBar'/>\n\
- <value-type name='FooBars'>\n\
- <modify-function signature='push_front(FooBar)' remove='all'/>\n\
- <modify-function signature='front()' remove='all'/>\n\
- </value-type>\n\
- </typesystem>\n\
- ";
+ const char cppCode[] = R"CPP(
+template<typename T>
+struct ListContainer {
+ inline void push_front(const T& t);
+ inline T& front();
+};
+struct FooBar {};
+struct FooBars : public ListContainer<FooBar> {};
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <container-type name='ListContainer' type='list'/>
+ <value-type name='FooBar'/>
+ <value-type name='FooBars'>
+ <modify-function signature='push_front(FooBar)' remove='all'/>
+ <modify-function signature='front()' remove='all'/>
+ </value-type>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -271,25 +271,26 @@ void TestTemplates::testInheritanceFromContainterTemplate()
void TestTemplates::testTemplateInheritanceMixedWithForwardDeclaration()
{
- const char cppCode[] = "\n\
- enum SomeEnum { E1, E2 };\n\
- template<SomeEnum type> struct Future;\n\
- template<SomeEnum type>\n\
- struct A {\n\
- A();\n\
- void method();\n\
- friend struct Future<type>;\n\
- };\n\
- typedef A<E1> B;\n\
- template<SomeEnum type> struct Future {};\n\
- ";
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <enum-type name='SomeEnum'/>\n\
- <value-type name='A' generate='no'/>\n\
- <value-type name='B'/>\n\
- <value-type name='Future' generate='no'/>\n\
- </typesystem>";
+ const char cppCode[] = R"CPP(
+enum SomeEnum { E1, E2 };
+template<SomeEnum type> struct Future;
+template<SomeEnum type>
+struct A {
+ A();
+ void method();
+ friend struct Future<type>;
+};
+typedef A<E1> B;
+template<SomeEnum type> struct Future {};
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <enum-type name='SomeEnum'/>
+ <value-type name='A' generate='no'/>
+ <value-type name='B'/>
+ <value-type name='Future' generate='no'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -305,28 +306,29 @@ void TestTemplates::testTemplateInheritanceMixedWithForwardDeclaration()
void TestTemplates::testTemplateInheritanceMixedWithNamespaceAndForwardDeclaration()
{
- const char cppCode[] = "\n\
- namespace Namespace {\n\
- enum SomeEnum { E1, E2 };\n\
- template<SomeEnum type> struct Future;\n\
- template<SomeEnum type>\n\
- struct A {\n\
- A();\n\
- void method();\n\
- friend struct Future<type>;\n\
- };\n\
- typedef A<E1> B;\n\
- template<SomeEnum type> struct Future {};\n\
- };\n\
- ";
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <namespace-type name='Namespace'/>\n\
- <enum-type name='Namespace::SomeEnum'/>\n\
- <value-type name='Namespace::A' generate='no'/>\n\
- <value-type name='Namespace::B'/>\n\
- <value-type name='Namespace::Future' generate='no'/>\n\
- </typesystem>";
+ const char cppCode[] = R"CPP(
+namespace Namespace {
+enum SomeEnum { E1, E2 };
+template<SomeEnum type> struct Future;
+template<SomeEnum type>
+struct A {
+ A();
+ void method();
+ friend struct Future<type>;
+};
+typedef A<E1> B;
+template<SomeEnum type> struct Future {};
+};
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <namespace-type name='Namespace'/>
+ <enum-type name='Namespace::SomeEnum'/>
+ <value-type name='Namespace::A' generate='no'/>
+ <value-type name='Namespace::B'/>
+ <value-type name='Namespace::Future' generate='no'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -342,28 +344,27 @@ void TestTemplates::testTemplateInheritanceMixedWithNamespaceAndForwardDeclarati
void TestTemplates::testTypedefOfInstantiationOfTemplateClass()
{
- const char cppCode[] = "\n\
- namespace NSpace {\n\
- enum ClassType {\n\
- TypeOne\n\
- };\n\
- template<ClassType CLASS_TYPE>\n\
- struct BaseTemplateClass {\n\
- inline ClassType getClassType() const { CLASS_TYPE; }\n\
- };\n\
- typedef BaseTemplateClass<TypeOne> TypeOneClass;\n\
- }\n\
- ";
-
- const char xmlCode[] = "\n\
- <typesystem package='Package'>\n\
- <namespace-type name='NSpace'>\n\
- <enum-type name='ClassType'/>\n\
- <object-type name='BaseTemplateClass' generate='no'/>\n\
- <object-type name='TypeOneClass'/>\n\
- </namespace-type>\n\
- </typesystem>\n\
- ";
+ const char cppCode[] = R"CPP(
+namespace NSpace {
+enum ClassType {
+ TypeOne
+};
+template<ClassType CLASS_TYPE>
+struct BaseTemplateClass {
+ inline ClassType getClassType() const { CLASS_TYPE; }
+};
+typedef BaseTemplateClass<TypeOne> TypeOneClass;
+}
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Package'>
+ <namespace-type name='NSpace'>
+ <enum-type name='ClassType'/>
+ <object-type name='BaseTemplateClass' generate='no'/>
+ <object-type name='TypeOneClass'/>
+ </namespace-type>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
@@ -395,24 +396,25 @@ void TestTemplates::testTypedefOfInstantiationOfTemplateClass()
void TestTemplates::testContainerTypeIncompleteArgument()
{
- const char* cppCode ="\n\
- template<typename T>\n\
- class Vector {\n\
- void method(const Vector& vector);\n\
- Vector otherMethod();\n\
- };\n\
- template <typename T>\n\
- void Vector<T>::method(const Vector<T>& vector) {}\n\
- template <typename T>\n\
- Vector<T> Vector<T>::otherMethod() { return Vector<T>(); }\n\
- typedef Vector<int> IntVector;\n\
- ";
- const char* xmlCode = "\n\
- <typesystem package='Foo'>\n\
- <primitive-type name='int'/>\n\
- <container-type name='Vector' type='vector'/>\n\
- <value-type name='IntVector'/>\n\
- </typesystem>";
+ const char cppCode[] = R"CPP(
+template<typename T>
+class Vector {
+ void method(const Vector& vector);
+ Vector otherMethod();
+};
+template <typename T>
+void Vector<T>::method(const Vector<T>& vector) {}
+template <typename T>
+Vector<T> Vector<T>::otherMethod() { return Vector<T>(); }
+typedef Vector<int> IntVector;
+)CPP";
+
+ const char xmlCode[] = R"XML(
+<typesystem package='Foo'>
+ <primitive-type name='int'/>
+ <container-type name='Vector' type='vector'/>
+ <value-type name='IntVector'/>
+</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, true));
QVERIFY(!builder.isNull());