diff --git a/tests/NamespacesBase/NamespacesBase.h b/tests/NamespacesBase/NamespacesBase.h index c83df7a7c1..d6e0544b33 100644 --- a/tests/NamespacesBase/NamespacesBase.h +++ b/tests/NamespacesBase/NamespacesBase.h @@ -51,6 +51,10 @@ class DLL_API Abstract template class TemplateClass { +public: + T getField() const; + void setField(const T& value); +private: union { int i; @@ -59,6 +63,18 @@ class TemplateClass T t; }; +template +T TemplateClass::getField() const +{ + return t; +} + +template +void TemplateClass::setField(const T& value) +{ + t = value; +} + template class DLL_API TemplateWithIndependentFields { @@ -84,3 +100,6 @@ class DLL_API SecondaryBase ~SecondaryBase(); void function(); }; + +// force the symbols for the template instantiations because we do not have the auto-compilation for the generated C++ source +template class DLL_API TemplateClass; diff --git a/tests/NamespacesDerived/NamespacesDerived.Tests.cs b/tests/NamespacesDerived/NamespacesDerived.Tests.cs index 0b2e147af1..06511576e9 100644 --- a/tests/NamespacesDerived/NamespacesDerived.Tests.cs +++ b/tests/NamespacesDerived/NamespacesDerived.Tests.cs @@ -18,6 +18,12 @@ public void TestNonRenamedMethod() var parent = derived.Parent; derived.parent(0); } + using (var derived2 = new Derived2()) + { + var template = derived2.Template; + template.Field = 5; + Assert.That(template.Field, Is.EqualTo(5)); + } } [Test] diff --git a/tests/NamespacesDerived/NamespacesDerived.cpp b/tests/NamespacesDerived/NamespacesDerived.cpp index 51740df9c9..e463a7c39d 100644 --- a/tests/NamespacesDerived/NamespacesDerived.cpp +++ b/tests/NamespacesDerived/NamespacesDerived.cpp @@ -33,6 +33,14 @@ void Derived::setNestedNSComponent(OverlappingNamespace::InBaseLib c) nestedNSComponent = c; } +Derived2::Derived2() +{ +} + +Derived2::~Derived2() +{ +} + Base3 Derived2::getBase() { return baseComponent; @@ -57,6 +65,11 @@ void Derived2::defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c { } +TemplateClass Derived2::getTemplate() +{ + return t; +} + Abstract* Derived2::getAbstract() { return 0; diff --git a/tests/NamespacesDerived/NamespacesDerived.h b/tests/NamespacesDerived/NamespacesDerived.h index a5a66d4368..0d7f531fa6 100644 --- a/tests/NamespacesDerived/NamespacesDerived.h +++ b/tests/NamespacesDerived/NamespacesDerived.h @@ -44,9 +44,11 @@ class Base3 template class TemplateClass; -class Derived2 : public Base3 +class DLL_API Derived2 : public Base3 { public: + Derived2(); + ~Derived2(); Base3 baseComponent; Base3 getBase(); void setBase(Base3); @@ -56,10 +58,12 @@ class Derived2 : public Base3 void setNestedNSComponent(OverlappingNamespace::InDerivedLib); void defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c = OverlappingNamespace::ColorsEnum::black); + TemplateClass getTemplate(); Abstract* getAbstract(); private: TemplateClass t; TemplateClass d; + Derived dd; }; class DLL_API HasVirtualInDependency : public HasVirtualInCore