Browse Source

Test using a specialization from a dependent module

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1527/head
Dimitar Dobrev 5 years ago
parent
commit
6acaf248f7
  1. 19
      tests/NamespacesBase/NamespacesBase.h
  2. 6
      tests/NamespacesDerived/NamespacesDerived.Tests.cs
  3. 13
      tests/NamespacesDerived/NamespacesDerived.cpp
  4. 5
      tests/NamespacesDerived/NamespacesDerived.h

19
tests/NamespacesBase/NamespacesBase.h

@ -51,6 +51,10 @@ public:
template <typename T> template <typename T>
class TemplateClass class TemplateClass
{ {
public:
T getField() const;
void setField(const T& value);
private:
union union
{ {
int i; int i;
@ -59,6 +63,18 @@ class TemplateClass
T t; T t;
}; };
template <typename T>
T TemplateClass<T>::getField() const
{
return t;
}
template <typename T>
void TemplateClass<T>::setField(const T& value)
{
t = value;
}
template <typename T> template <typename T>
class DLL_API TemplateWithIndependentFields class DLL_API TemplateWithIndependentFields
{ {
@ -84,3 +100,6 @@ public:
~SecondaryBase(); ~SecondaryBase();
void function(); 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<int>;

6
tests/NamespacesDerived/NamespacesDerived.Tests.cs

@ -18,6 +18,12 @@ public class NamespaceDerivedTests
var parent = derived.Parent; var parent = derived.Parent;
derived.parent(0); derived.parent(0);
} }
using (var derived2 = new Derived2())
{
var template = derived2.Template;
template.Field = 5;
Assert.That(template.Field, Is.EqualTo(5));
}
} }
[Test] [Test]

13
tests/NamespacesDerived/NamespacesDerived.cpp

@ -33,6 +33,14 @@ void Derived::setNestedNSComponent(OverlappingNamespace::InBaseLib c)
nestedNSComponent = c; nestedNSComponent = c;
} }
Derived2::Derived2()
{
}
Derived2::~Derived2()
{
}
Base3 Derived2::getBase() Base3 Derived2::getBase()
{ {
return baseComponent; return baseComponent;
@ -57,6 +65,11 @@ void Derived2::defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c
{ {
} }
TemplateClass<int> Derived2::getTemplate()
{
return t;
}
Abstract* Derived2::getAbstract() Abstract* Derived2::getAbstract()
{ {
return 0; return 0;

5
tests/NamespacesDerived/NamespacesDerived.h

@ -44,9 +44,11 @@ class Base3
template <typename T> class TemplateClass; template <typename T> class TemplateClass;
class Derived2 : public Base3 class DLL_API Derived2 : public Base3
{ {
public: public:
Derived2();
~Derived2();
Base3 baseComponent; Base3 baseComponent;
Base3 getBase(); Base3 getBase();
void setBase(Base3); void setBase(Base3);
@ -56,6 +58,7 @@ public:
void setNestedNSComponent(OverlappingNamespace::InDerivedLib); void setNestedNSComponent(OverlappingNamespace::InDerivedLib);
void defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c = OverlappingNamespace::ColorsEnum::black); void defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c = OverlappingNamespace::ColorsEnum::black);
TemplateClass<int> getTemplate();
Abstract* getAbstract(); Abstract* getAbstract();
private: private:
TemplateClass<int> t; TemplateClass<int> t;

Loading…
Cancel
Save