From 9946d62877f7c06c71b43415a42cacb5ba945829 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Sat, 5 Dec 2015 14:12:52 -0500 Subject: [PATCH 1/3] Fix #554 --- dart/common/detail/NameManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dart/common/detail/NameManager.h b/dart/common/detail/NameManager.h index 164b274bdd4be..224f2d0fe6ad7 100644 --- a/dart/common/detail/NameManager.h +++ b/dart/common/detail/NameManager.h @@ -200,7 +200,7 @@ template void NameManager::removeEntries(const std::string& _name, const T& _obj) { removeObject(_obj); - removeName(_name, false); + removeName(_name); } //============================================================================== From e0fdd9f9469222b4d93eba1fd578fbe72031741e Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Sat, 5 Dec 2015 14:13:22 -0500 Subject: [PATCH 2/3] Add regression test for #554 --- unittests/testNameManagement.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/unittests/testNameManagement.cpp b/unittests/testNameManagement.cpp index f0b4c6181ba29..860bb9f19f91b 100644 --- a/unittests/testNameManagement.cpp +++ b/unittests/testNameManagement.cpp @@ -216,6 +216,32 @@ TEST(NameManagement, SetPattern) EXPECT_TRUE( test_mgr.getObject("(2)-Entity") == entity2 ); } +//============================================================================== +TEST(NameManagement, Regression554) +{ + dart::common::NameManager< std::shared_ptr > test_mgr("test", "name"); + + std::shared_ptr int0(new int(0)); + std::shared_ptr int1(new int(1)); + std::shared_ptr int2(new int(2)); + std::shared_ptr int_another0(new int(2)); + + test_mgr.issueNewNameAndAdd(std::to_string(*int0), int0); + test_mgr.issueNewNameAndAdd(std::to_string(*int1), int1); + test_mgr.issueNewNameAndAdd(std::to_string(*int2), int2); + + EXPECT_TRUE( test_mgr.getObject("0") == int0 ); + EXPECT_TRUE( test_mgr.getObject("1") == int1 ); + EXPECT_TRUE( test_mgr.getObject("2") == int2 ); + + bool res1 = test_mgr.addName(std::to_string(*int_another0), int_another0); + EXPECT_FALSE( res1 ); + + test_mgr.removeEntries(std::to_string(*int_another0), int_another0); + bool res2 = test_mgr.addName(std::to_string(*int_another0), int_another0); + EXPECT_TRUE( res2 ); +} + //============================================================================== TEST(NameManagement, WorldSkeletons) { From d72a371271fbe18db08cbdf544e27a1b4353d9aa Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Sat, 5 Dec 2015 14:27:57 -0500 Subject: [PATCH 3/3] Revise regression test --- unittests/testNameManagement.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unittests/testNameManagement.cpp b/unittests/testNameManagement.cpp index 860bb9f19f91b..774acb745c0a4 100644 --- a/unittests/testNameManagement.cpp +++ b/unittests/testNameManagement.cpp @@ -224,7 +224,7 @@ TEST(NameManagement, Regression554) std::shared_ptr int0(new int(0)); std::shared_ptr int1(new int(1)); std::shared_ptr int2(new int(2)); - std::shared_ptr int_another0(new int(2)); + std::shared_ptr int_another0(new int(0)); test_mgr.issueNewNameAndAdd(std::to_string(*int0), int0); test_mgr.issueNewNameAndAdd(std::to_string(*int1), int1); @@ -240,6 +240,10 @@ TEST(NameManagement, Regression554) test_mgr.removeEntries(std::to_string(*int_another0), int_another0); bool res2 = test_mgr.addName(std::to_string(*int_another0), int_another0); EXPECT_TRUE( res2 ); + + EXPECT_TRUE( test_mgr.getObject("0") == int_another0 ); + EXPECT_TRUE( test_mgr.getObject("1") == int1 ); + EXPECT_TRUE( test_mgr.getObject("2") == int2 ); } //==============================================================================