From 625787fbba57f2bcd47b24c6e2d74e5016e775cd Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 12 Jan 2017 08:41:58 +0100 Subject: [PATCH] combine instance management with both code paths for assignable / not assignable types --- tests/library/replaceable-item-test.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/library/replaceable-item-test.cpp b/tests/library/replaceable-item-test.cpp index ef61391e3..9e6309944 100644 --- a/tests/library/replaceable-item-test.cpp +++ b/tests/library/replaceable-item-test.cpp @@ -53,6 +53,7 @@ namespace test{ // using std::vector; using std::string; using std::rand; + using std::swap; @@ -66,6 +67,7 @@ namespace test{ Tracker() : i_(rand() % 500) { ++cntTracker; } Tracker(Tracker const& ot) : i_(ot.i_) { ++cntTracker; } + Tracker(uint i) : i_() { ++cntTracker; } ~Tracker() { --cntTracker; } }; @@ -186,6 +188,8 @@ namespace test{ /** @test verify that ctor and dtor calls are balanced, * even when assigning and self-assigning. + * @note Tracker uses the simple implementation for assignable values, + * while NonAssign uses the embedded-buffer implementation */ void verifySaneInstanceHandling() @@ -197,11 +201,19 @@ namespace test{ verifyWrapper (t1, t2); verifyWrapper (&t1, &t2); + verifyWrapper (t1, t2.i_); verifyWrapper (t1, t2); + NonAssign u1; + NonAssign u2; + verifyWrapper (u1, u2); + verifyWrapper (&u1, &u2); + verifyWrapper (u1, u2.i_); + verifyWrapper (u1, u2); + verifyWrapper (u1, u2); } - CHECK (1 == cntTracker); // one singleton instance in NullValue survives - } + CHECK (2 == cntTracker); // surviving singleton instances + } // NullValue and NullValue /** @test verify especially that we can handle and re-"assign" an embedded pointer */