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

6
tests/NamespacesDerived/NamespacesDerived.Tests.cs

@ -18,6 +18,12 @@ public class NamespaceDerivedTests @@ -18,6 +18,12 @@ public class NamespaceDerivedTests
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]

13
tests/NamespacesDerived/NamespacesDerived.cpp

@ -33,6 +33,14 @@ void Derived::setNestedNSComponent(OverlappingNamespace::InBaseLib c) @@ -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 @@ -57,6 +65,11 @@ void Derived2::defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c
{
}
TemplateClass<int> Derived2::getTemplate()
{
return t;
}
Abstract* Derived2::getAbstract()
{
return 0;

5
tests/NamespacesDerived/NamespacesDerived.h

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

Loading…
Cancel
Save