Browse Source

Added a test for passing an std::string by value.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
verbose_make_output
Dimitar Dobrev 7 years ago
parent
commit
a240827d54
  1. 22
      tests/Common/Common.Tests.cs
  2. 5
      tests/Common/Common.cpp
  3. 1
      tests/Common/Common.h

22
tests/Common/Common.Tests.cs

@ -777,6 +777,28 @@ This is a very long string. This is a very long string. This is a very long stri
} }
} }
[Ignore("https://github.com/mono/CppSharp/issues/867")]
public void TestStdStringPassedByValue()
{
// when C++ memory is deleted, it's only marked as free but not immediadely freed
// this can hide memory bugs while marshalling
// so let's use a long string to increase the chance of a crash right away
const string t = @"This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.
This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.
This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.
This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.
This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.
This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string. This is a very long string.";
using (var hasStdString = new HasStdString())
{
Assert.That(hasStdString.TestStdStringPassedByValue(t), Is.EqualTo(t + "_test"));
hasStdString.S = t;
Assert.That(hasStdString.S, Is.EqualTo(t));
Assert.That(hasStdString.StdString, Is.EqualTo(t));
Assert.That(hasStdString.StdString, Is.EqualTo(t));
}
}
public void TestNullStdString() public void TestNullStdString()
{ {
using (var hasStdString = new HasStdString()) using (var hasStdString = new HasStdString())

5
tests/Common/Common.cpp

@ -504,6 +504,11 @@ std::string HasStdString::testStdString(const std::string& s)
return s + "_test"; return s + "_test";
} }
std::string HasStdString::testStdStringPassedByValue(std::string s)
{
return s + "_test";
}
std::string& HasStdString::getStdString() std::string& HasStdString::getStdString()
{ {
return s; return s;

1
tests/Common/Common.h

@ -856,6 +856,7 @@ public:
HasStdString(); HasStdString();
~HasStdString(); ~HasStdString();
std::string testStdString(const std::string& s); std::string testStdString(const std::string& s);
std::string testStdStringPassedByValue(std::string s);
std::string s; std::string s;
std::string& getStdString(); std::string& getStdString();
}; };

Loading…
Cancel
Save