From 614621747ea214efc72a095fbef6695bf98a2bb4 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 23 Apr 2020 11:57:58 +0200 Subject: BLI: optimize VectorSet implementation Instead of building on top of `BLI::Vector`, just use a raw array and handle the growing in `BLI::VectorSet`. After this change, the existing `EdgeSet` can be reimplemented using `BLI::VectorSet` without performance regressions. --- tests/gtests/blenlib/BLI_vector_set_test.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/gtests') diff --git a/tests/gtests/blenlib/BLI_vector_set_test.cc b/tests/gtests/blenlib/BLI_vector_set_test.cc index 410e7a1b319..816d5d653a5 100644 --- a/tests/gtests/blenlib/BLI_vector_set_test.cc +++ b/tests/gtests/blenlib/BLI_vector_set_test.cc @@ -39,6 +39,17 @@ TEST(vector_set, Copy) EXPECT_EQ(set2.index(2), 1); } +TEST(vector_set, CopyAssignment) +{ + IntVectorSet set1 = {1, 2, 3}; + IntVectorSet set2 = {}; + set2 = set1; + EXPECT_EQ(set1.size(), 3); + EXPECT_EQ(set2.size(), 3); + EXPECT_EQ(set1.index(2), 1); + EXPECT_EQ(set2.index(2), 1); +} + TEST(vector_set, Move) { IntVectorSet set1 = {1, 2, 3}; @@ -47,6 +58,15 @@ TEST(vector_set, Move) EXPECT_EQ(set2.size(), 3); } +TEST(vector_set, MoveAssignment) +{ + IntVectorSet set1 = {1, 2, 3}; + IntVectorSet set2 = {}; + set2 = std::move(set1); + EXPECT_EQ(set1.size(), 0); + EXPECT_EQ(set2.size(), 3); +} + TEST(vector_set, AddNewIncreasesSize) { IntVectorSet set; -- cgit v1.2.3