diff options
author | Jacques Lucke <jacques@blender.org> | 2021-04-30 12:09:19 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-04-30 12:09:19 +0300 |
commit | 7041568ff922318f462b06e1c833cc9287aaa04b (patch) | |
tree | 00b738ba21b93ca5bf34c672db0f1072ce4dd1b2 /source/blender/blenlib/tests/BLI_vector_set_test.cc | |
parent | 2b723abea02c868d94623f4dd9e9b6775cb3aaab (diff) |
BLI: improve VectorSet data structure
This adds two new methods:
* `clear` just removes all keys from the vector set.
* `index_of_or_add` returns the index of a key and adds it if has not
been added before.
Diffstat (limited to 'source/blender/blenlib/tests/BLI_vector_set_test.cc')
-rw-r--r-- | source/blender/blenlib/tests/BLI_vector_set_test.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/blenlib/tests/BLI_vector_set_test.cc b/source/blender/blenlib/tests/BLI_vector_set_test.cc index bbbe96f9b7e..c535ac57774 100644 --- a/source/blender/blenlib/tests/BLI_vector_set_test.cc +++ b/source/blender/blenlib/tests/BLI_vector_set_test.cc @@ -232,4 +232,30 @@ TEST(vector_set, PopExceptions) EXPECT_EQ(set.size(), 4); } +TEST(vector_set, IndexOfOrAdd) +{ + VectorSet<int> set; + EXPECT_EQ(set.index_of_or_add(3), 0); + EXPECT_EQ(set.index_of_or_add(3), 0); + EXPECT_EQ(set.index_of_or_add(2), 1); + EXPECT_EQ(set.index_of_or_add(0), 2); + EXPECT_EQ(set.index_of_or_add(2), 1); + EXPECT_EQ(set.index_of_or_add(3), 0); + EXPECT_EQ(set.index_of_or_add(5), 3); + EXPECT_EQ(set.index_of_or_add(8), 4); + EXPECT_EQ(set.index_of_or_add(5), 3); +} + +TEST(vector_set, Clear) +{ + VectorSet<int> set = {4, 6, 2, 4}; + EXPECT_EQ(set.size(), 3); + set.clear(); + EXPECT_EQ(set.size(), 0); + set.add_multiple({4, 1, 6, 8, 3, 6, 9, 3}); + EXPECT_EQ(set.size(), 6); + set.clear(); + EXPECT_EQ(set.size(), 0); +} + } // namespace blender::tests |