diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-01-31 14:46:38 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-02-01 12:15:22 +0000 |
commit | 2489000d3fd66319a8355fd4e37cfdfda47296d0 (patch) | |
tree | caad79e7b5bec3863604b20190b682c0d73d2b25 /o3tl | |
parent | 595848c85acc2609fcc48a40c7a9f216a2722cd8 (diff) |
loplugin:useuniqueptr extend to check local vars
just the simple and obvious case for now, of a local var being allocated
and deleted inside a single local block, and the delete happening at the
end of the block
Change-Id: I3a7a094da543debdcd2374737c2ecff91d644625
Reviewed-on: https://gerrit.libreoffice.org/33749
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'o3tl')
-rw-r--r-- | o3tl/qa/test-sorted_vector.cxx | 150 |
1 files changed, 66 insertions, 84 deletions
diff --git a/o3tl/qa/test-sorted_vector.cxx b/o3tl/qa/test-sorted_vector.cxx index 471ca7e12dfb..3f05381fe423 100644 --- a/o3tl/qa/test-sorted_vector.cxx +++ b/o3tl/qa/test-sorted_vector.cxx @@ -36,41 +36,38 @@ public: void testBasics() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent> > aVec; - SwContent *p1 = new SwContent(1); - SwContent *p2 = new SwContent(2); + std::unique_ptr<SwContent> p1( new SwContent(1) ); + std::unique_ptr<SwContent> p2( new SwContent(2) ); SwContent *p3 = new SwContent(3); - SwContent *p4 = new SwContent(4); + std::unique_ptr<SwContent> p4( new SwContent(4) ); CPPUNIT_ASSERT( aVec.insert(p3).second ); - CPPUNIT_ASSERT( aVec.insert(p1).second ); + CPPUNIT_ASSERT( aVec.insert(p1.get()).second ); CPPUNIT_ASSERT( !aVec.insert(p3).second ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(2), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( p1, aVec[0] ); + CPPUNIT_ASSERT_EQUAL( p1.get(), aVec[0] ); CPPUNIT_ASSERT_EQUAL( p3, aVec[1] ); - CPPUNIT_ASSERT_EQUAL( p1, *aVec.begin() ); + CPPUNIT_ASSERT_EQUAL( p1.get(), *aVec.begin() ); CPPUNIT_ASSERT_EQUAL( p3, *(aVec.end()-1) ); - CPPUNIT_ASSERT_EQUAL( p1, aVec.front() ); + CPPUNIT_ASSERT_EQUAL( p1.get(), aVec.front() ); CPPUNIT_ASSERT_EQUAL( p3, aVec.back() ); - CPPUNIT_ASSERT( aVec.find(p1) != aVec.end() ); - CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(0), aVec.find(p1) - aVec.begin() ); + CPPUNIT_ASSERT( aVec.find(p1.get()) != aVec.end() ); + CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(0), aVec.find(p1.get()) - aVec.begin() ); CPPUNIT_ASSERT( aVec.find(p3) != aVec.end() ); CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(1), aVec.find(p3) - aVec.begin() ); - CPPUNIT_ASSERT( bool(aVec.find(p2) == aVec.end()) ); - CPPUNIT_ASSERT( bool(aVec.find(p4) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p2.get()) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p4.get()) == aVec.end()) ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1.get()) ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p2) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p2.get()) ); aVec.DeleteAndDestroyAll(); - delete p1; - delete p2; - delete p4; } void testErase() @@ -79,7 +76,7 @@ public: SwContent *p1 = new SwContent(1); SwContent *p2 = new SwContent(2); SwContent *p3 = new SwContent(3); - SwContent *p4 = new SwContent(4); + std::unique_ptr<SwContent> p4( new SwContent(4) ); aVec.insert(p1); aVec.insert(p2); @@ -91,7 +88,7 @@ public: aVec.erase(1); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p4) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p4.get()) ); aVec.clear(); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.size() ); @@ -101,162 +98,147 @@ public: aVec.insert(p3); aVec.DeleteAndDestroyAll(); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.size() ); - delete p4; } void testInsertRange() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent> > aVec1; - SwContent *p1 = new SwContent(1); - SwContent *p2 = new SwContent(2); - SwContent *p3 = new SwContent(3); + std::unique_ptr<SwContent> p1( new SwContent(1) ); + std::unique_ptr<SwContent> p2( new SwContent(2) ); + std::unique_ptr<SwContent> p3( new SwContent(3) ); - aVec1.insert(p1); - aVec1.insert(p2); - aVec1.insert(p3); + aVec1.insert(p1.get()); + aVec1.insert(p2.get()); + aVec1.insert(p3.get()); o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent> > aVec2; aVec2.insert( aVec1 ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(3), aVec2.size() ); - delete p1; - delete p2; - delete p3; } void testLowerBound() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent> > aVec; - SwContent *p1 = new SwContent(1); - SwContent *p2 = new SwContent(2); - SwContent *p3 = new SwContent(3); - SwContent *p4 = new SwContent(4); + std::unique_ptr<SwContent> p1( new SwContent(1) ); + std::unique_ptr<SwContent> p2( new SwContent(2) ); + std::unique_ptr<SwContent> p3( new SwContent(3) ); + std::unique_ptr<SwContent> p4( new SwContent(4) ); - aVec.insert(p1); - aVec.insert(p2); - aVec.insert(p3); + aVec.insert(p1.get()); + aVec.insert(p2.get()); + aVec.insert(p3.get()); - CPPUNIT_ASSERT( bool(aVec.lower_bound(p1) == aVec.begin()) ); - CPPUNIT_ASSERT( bool(aVec.lower_bound(p4) == aVec.end()) ); - delete p1; - delete p2; - delete p3; - delete p4; + CPPUNIT_ASSERT( bool(aVec.lower_bound(p1.get()) == aVec.begin()) ); + CPPUNIT_ASSERT( bool(aVec.lower_bound(p4.get()) == aVec.end()) ); } void testBasics_FindPtr() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent>, o3tl::find_partialorder_ptrequals> aVec; - SwContent *p1 = new SwContent(1); - SwContent *p2 = new SwContent(2); + std::unique_ptr<SwContent> p1( new SwContent(1) ); + std::unique_ptr<SwContent> p2( new SwContent(2) ); SwContent *p2_2 = new SwContent(2); - SwContent *p2_3 = new SwContent(2); + std::unique_ptr<SwContent> p2_3( new SwContent(2) ); SwContent *p2_4 = new SwContent(2); SwContent *p3 = new SwContent(3); - SwContent *p4 = new SwContent(4); + std::unique_ptr<SwContent> p4( new SwContent(4) ); CPPUNIT_ASSERT( aVec.insert(p3).second ); - CPPUNIT_ASSERT( aVec.insert(p1).second ); + CPPUNIT_ASSERT( aVec.insert(p1.get()).second ); CPPUNIT_ASSERT( !aVec.insert(p3).second ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(2), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( p1, aVec[0] ); + CPPUNIT_ASSERT_EQUAL( p1.get(), aVec[0] ); CPPUNIT_ASSERT_EQUAL( p3, aVec[1] ); CPPUNIT_ASSERT( aVec.insert(p2_2).second ); - CPPUNIT_ASSERT( aVec.insert(p2_3).second ); + CPPUNIT_ASSERT( aVec.insert(p2_3.get()).second ); CPPUNIT_ASSERT( !aVec.insert(p2_2).second ); CPPUNIT_ASSERT( aVec.insert(p2_4).second ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(5), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( p1, *aVec.begin() ); + CPPUNIT_ASSERT_EQUAL( p1.get(), *aVec.begin() ); CPPUNIT_ASSERT_EQUAL( p3, *(aVec.end()-1) ); - CPPUNIT_ASSERT_EQUAL( p1, aVec.front() ); + CPPUNIT_ASSERT_EQUAL( p1.get(), aVec.front() ); CPPUNIT_ASSERT_EQUAL( p3, aVec.back() ); - CPPUNIT_ASSERT( aVec.find(p1) != aVec.end() ); - CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(0), aVec.find(p1) - aVec.begin() ); + CPPUNIT_ASSERT( aVec.find(p1.get()) != aVec.end() ); + CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(0), aVec.find(p1.get()) - aVec.begin() ); CPPUNIT_ASSERT( aVec.find(p3) != aVec.end() ); CPPUNIT_ASSERT_EQUAL( static_cast<std::ptrdiff_t>(4), aVec.find(p3) - aVec.begin() ); - CPPUNIT_ASSERT( bool(aVec.find(p2) == aVec.end()) ); - CPPUNIT_ASSERT( bool(aVec.find(p4) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p2.get()) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p4.get()) == aVec.end()) ); CPPUNIT_ASSERT( aVec.find(p2_2) != aVec.end() ); CPPUNIT_ASSERT( aVec.find(p2_2) - aVec.begin() >= 1 ); CPPUNIT_ASSERT( aVec.find(p2_2) - aVec.begin() < 4 ); - CPPUNIT_ASSERT( aVec.find(p2_3) != aVec.end() ); - CPPUNIT_ASSERT( aVec.find(p2_3) - aVec.begin() >= 1 ); - CPPUNIT_ASSERT( aVec.find(p2_3) - aVec.begin() < 4 ); + CPPUNIT_ASSERT( aVec.find(p2_3.get()) != aVec.end() ); + CPPUNIT_ASSERT( aVec.find(p2_3.get()) - aVec.begin() >= 1 ); + CPPUNIT_ASSERT( aVec.find(p2_3.get()) - aVec.begin() < 4 ); CPPUNIT_ASSERT( aVec.find(p2_4) != aVec.end() ); CPPUNIT_ASSERT( aVec.find(p2_4) - aVec.begin() >= 1 ); CPPUNIT_ASSERT( aVec.find(p2_4) - aVec.begin() < 4 ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1.get()) ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(4), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p2) ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p2_3) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p2.get()) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p2_3.get()) ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(3), aVec.size() ); aVec.DeleteAndDestroyAll(); - delete p1; - delete p2; - delete p2_3; - delete p4; } void testErase_FindPtr() { o3tl::sorted_vector<SwContent*, o3tl::less_ptr_to<SwContent>, o3tl::find_partialorder_ptrequals> aVec; - SwContent *p1 = new SwContent(1); + std::unique_ptr<SwContent> p1( new SwContent(1) ); SwContent *p1_2 = new SwContent(1); - SwContent *p1_3 = new SwContent(1); + std::unique_ptr<SwContent> p1_3( new SwContent(1) ); SwContent *p2 = new SwContent(2); SwContent *p3 = new SwContent(3); - SwContent *p4 = new SwContent(4); + std::unique_ptr<SwContent> p4( new SwContent(4) ); - aVec.insert(p1); + aVec.insert(p1.get()); aVec.insert(p2); aVec.insert(p3); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1.get()) ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(2), aVec.size() ); aVec.erase(1); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p4) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p4.get()) ); aVec.clear(); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.size() ); - aVec.insert(p1); + aVec.insert(p1.get()); aVec.insert(p2); aVec.insert(p3); aVec.insert(p1_2); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(4), aVec.size() ); - aVec.insert(p1_3); + aVec.insert(p1_3.get()); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(5), aVec.size() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1) ); - CPPUNIT_ASSERT( bool(aVec.find(p1) == aVec.end()) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1.get()) ); + CPPUNIT_ASSERT( bool(aVec.find(p1.get()) == aVec.end()) ); CPPUNIT_ASSERT( aVec.find(p1_2) != aVec.end() ); - CPPUNIT_ASSERT( aVec.find(p1_3) != aVec.end() ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1_3) ); - CPPUNIT_ASSERT( bool(aVec.find(p1) == aVec.end()) ); + CPPUNIT_ASSERT( aVec.find(p1_3.get()) != aVec.end() ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), aVec.erase(p1_3.get()) ); + CPPUNIT_ASSERT( bool(aVec.find(p1.get()) == aVec.end()) ); CPPUNIT_ASSERT( aVec.find(p1_2) != aVec.end() ); - CPPUNIT_ASSERT( bool(aVec.find(p1_3) == aVec.end()) ); - CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p1_3) ); - CPPUNIT_ASSERT( bool(aVec.find(p1) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p1_3.get()) == aVec.end()) ); + CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.erase(p1_3.get()) ); + CPPUNIT_ASSERT( bool(aVec.find(p1.get()) == aVec.end()) ); CPPUNIT_ASSERT( aVec.find(p1_2) != aVec.end() ); - CPPUNIT_ASSERT( bool(aVec.find(p1_3) == aVec.end()) ); + CPPUNIT_ASSERT( bool(aVec.find(p1_3.get()) == aVec.end()) ); aVec.DeleteAndDestroyAll(); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(0), aVec.size() ); - delete p1; - delete p1_3; - delete p4; } |