aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testtemplates.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testtemplates.cpp')
-rw-r--r--tests/testtemplates.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/testtemplates.cpp b/tests/testtemplates.cpp
index 2eb66acb2..d0ea40e3d 100644
--- a/tests/testtemplates.cpp
+++ b/tests/testtemplates.cpp
@@ -110,6 +110,42 @@ void TestTemplates::testTemplateOnContainers()
QCOMPARE(instance2->typeEntry()->qualifiedCppName(), QString("Namespace::E1"));
}
+void TestTemplates::testInheritanceFromContainterTemplate()
+{
+ const char cppCode[] = "\
+ template<typename T>\
+ struct ListContainer {\
+ inline void push_front(const T& t);\
+ inline T& front();\
+ };\
+ struct FooBar {};\
+ struct FooBars : public ListContainer<FooBar> {};\
+ ";
+
+ const char xmlCode[] = "\
+ <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>\
+ ";
+
+ TestUtil t(cppCode, xmlCode, false);
+ AbstractMetaClassList classes = t.builder()->classes();
+ AbstractMetaClassList templates = t.builder()->templates();
+ QCOMPARE(classes.count(), 2);
+ QCOMPARE(templates.count(), 1);
+
+ const AbstractMetaClass* foobars = classes.findClass("FooBars");
+ QCOMPARE(foobars->functions().count(), 4);
+
+ const AbstractMetaClass* lc = templates.first();
+ QCOMPARE(lc->functions().count(), 2);
+}
+
void TestTemplates::testTemplateInheritanceMixedWithForwardDeclaration()
{
const char cppCode[] = "\