diff --git a/tests/FieldTests.cs b/tests/FieldTests.cs new file mode 100644 index 00000000..6aa2f663 --- /dev/null +++ b/tests/FieldTests.cs @@ -0,0 +1,27 @@ +using System; +using NUnit.Framework; + +namespace Tests { + + [TestFixture] + public class FieldTests { + + [Test] + public void TestReadCppObject () + { + var hf1 = new HasField (1, null); + var hf2 = new HasField (2, hf1); + var hf3 = new HasField (3, hf2); + + Assert.IsNull (hf1.other, "#1"); + Assert.AreEqual (1, hf1.number); + + Assert.AreSame (hf2.other, hf1, "#2"); + Assert.AreEqual (1, hf2.other.number); + + Assert.AreSame (hf3.other.other, hf1, "#3"); + Assert.AreEqual (1, hf3.other.other.number, "#4"); + } + } +} + diff --git a/tests/Makefile.am b/tests/Makefile.am index 81ceffed..1f8a50f9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,9 +8,11 @@ TEST_DLL = $(BUILD_DIR)/Test.dll NATIVE = \ MarshalingTests \ - InheritanceTests + InheritanceTests \ + FieldTests MANAGED = \ + FieldTests.cs \ InheritanceTests.cs \ MarshalingTests.cs \ Support/CppNUnitAsserts.cs diff --git a/tests/Native/FieldTests.cpp b/tests/Native/FieldTests.cpp new file mode 100644 index 00000000..88b50461 --- /dev/null +++ b/tests/Native/FieldTests.cpp @@ -0,0 +1,8 @@ + +#include "FieldTests.h" + +HasField::HasField (int number, HasField* other) +{ + this->number = number; + this->other = other; +} \ No newline at end of file diff --git a/tests/Native/FieldTests.h b/tests/Native/FieldTests.h new file mode 100644 index 00000000..8bae69d7 --- /dev/null +++ b/tests/Native/FieldTests.h @@ -0,0 +1,7 @@ + +class HasField { +public: + int number; + HasField* other; + HasField (int number, HasField* other); +}; diff --git a/tests/Tests.csproj b/tests/Tests.csproj index 721ab906..0fe937c7 100644 --- a/tests/Tests.csproj +++ b/tests/Tests.csproj @@ -1,4 +1,4 @@ - + Debug @@ -53,6 +53,7 @@ + @@ -73,6 +74,8 @@ + +