diff options
author | Jacques Lucke <mail@jlucke.com> | 2019-09-14 13:11:14 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2019-09-14 13:11:14 +0300 |
commit | 79e1165bd7488850e896112c2b0f8bf1e6b25db9 (patch) | |
tree | 1cb20163e2aaff754e295360457b1f15428eca25 /tests/gtests/blenlib/BLI_map_test.cc | |
parent | ca76ecfa0ee1153677d8c89149000c7e9a5814d6 (diff) |
BLI: Improve forwarding semantics of some data structures
This makes it possible to use e.g. `std::unique_ptr` in a map.
Diffstat (limited to 'tests/gtests/blenlib/BLI_map_test.cc')
-rw-r--r-- | tests/gtests/blenlib/BLI_map_test.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/tests/gtests/blenlib/BLI_map_test.cc b/tests/gtests/blenlib/BLI_map_test.cc index 8d5b178aea6..3acb76e09f0 100644 --- a/tests/gtests/blenlib/BLI_map_test.cc +++ b/tests/gtests/blenlib/BLI_map_test.cc @@ -2,7 +2,8 @@ #include "BLI_map.h" #include "BLI_set.h" -using IntFloatMap = BLI::Map<int, float>; +using BLI::Map; +using IntFloatMap = Map<int, float>; TEST(map, DefaultConstructor) { @@ -258,3 +259,24 @@ TEST(map, Clear) EXPECT_FALSE(map.contains(1)); EXPECT_FALSE(map.contains(2)); } + +TEST(map, UniquePtrValue) +{ + auto value1 = std::unique_ptr<int>(new int()); + auto value2 = std::unique_ptr<int>(new int()); + auto value3 = std::unique_ptr<int>(new int()); + + int *value1_ptr = value1.get(); + + Map<int, std::unique_ptr<int>> map; + map.add_new(1, std::move(value1)); + map.add(2, std::move(value2)); + map.add_override(3, std::move(value3)); + map.lookup_or_add(4, []() { return std::unique_ptr<int>(new int()); }); + map.add_new(5, std::unique_ptr<int>(new int())); + map.add(6, std::unique_ptr<int>(new int())); + map.add_override(7, std::unique_ptr<int>(new int())); + + EXPECT_EQ(map.lookup(1).get(), value1_ptr); + EXPECT_EQ(map.lookup_ptr(100), nullptr); +} |