aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/ctorleak.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2018-11-23 15:37:09 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2018-11-23 15:37:09 +0100
commit572d62697dd33acbf97e4a14e8aea06e82d6095d (patch)
treefb279bec540022eaf08611511c9c78af38025c8c /test/ctorleak.cpp
parent354f14293b8a193a6f01d45081db684521ac3c0e (diff)
check two ctors
Diffstat (limited to 'test/ctorleak.cpp')
-rw-r--r--test/ctorleak.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/test/ctorleak.cpp b/test/ctorleak.cpp
index 7202e90dd..73904176b 100644
--- a/test/ctorleak.cpp
+++ b/test/ctorleak.cpp
@@ -8,7 +8,7 @@ struct Foo
static Index object_limit;
int dummy;
- Foo()
+ Foo() : dummy(0)
{
#ifdef EIGEN_EXCEPTIONS
// TODO: Is this the correct way to handle this?
@@ -37,22 +37,33 @@ EIGEN_DECLARE_TEST(ctorleak)
{
typedef Matrix<Foo, Dynamic, Dynamic> MatrixX;
typedef Matrix<Foo, Dynamic, 1> VectorX;
+
Foo::object_count = 0;
for(int i = 0; i < g_repeat; i++) {
Index rows = internal::random<Index>(2,EIGEN_TEST_MAX_SIZE), cols = internal::random<Index>(2,EIGEN_TEST_MAX_SIZE);
- Foo::object_limit = internal::random<Index>(0, rows*cols - 2);
+ Foo::object_limit = rows*cols;
+ {
+ MatrixX r(rows, cols);
+ Foo::object_limit = r.size()+internal::random<Index>(0, rows*cols - 2);
std::cout << "object_limit =" << Foo::object_limit << std::endl;
#ifdef EIGEN_EXCEPTIONS
try
{
#endif
- std::cout << "\nMatrixX m(" << rows << ", " << cols << ");\n";
- MatrixX m(rows, cols);
+ if(internal::random<bool>()) {
+ std::cout << "\nMatrixX m(" << rows << ", " << cols << ");\n";
+ MatrixX m(rows, cols);
+ }
+ else {
+ std::cout << "\nMatrixX m(r);\n";
+ MatrixX m(r);
+ }
#ifdef EIGEN_EXCEPTIONS
VERIFY(false); // not reached if exceptions are enabled
}
catch (const Foo::Fail&) { /* ignore */ }
#endif
+ }
VERIFY_IS_EQUAL(Index(0), Foo::object_count);
{
@@ -66,4 +77,5 @@ EIGEN_DECLARE_TEST(ctorleak)
}
VERIFY_IS_EQUAL(Index(0), Foo::object_count);
}
+ std::cout << "\n";
}