diff options
author | Abseil Team <absl-team@google.com> | 2020-09-22 14:23:22 -0700 |
---|---|---|
committer | vslashg <gfalcon@google.com> | 2020-09-23 13:36:05 -0400 |
commit | 9927a09898f1287e0ecd1276f42ec7a252667dad (patch) | |
tree | 29cb426aed67b58a8ffe80cb48e1a3b8a70e1387 /absl/container/btree_test.cc | |
parent | 7680a5f8efe32de4753baadbd63e74e59d95bac1 (diff) | |
download | abseil-9927a09898f1287e0ecd1276f42ec7a252667dad.tar.gz abseil-9927a09898f1287e0ecd1276f42ec7a252667dad.tar.bz2 abseil-9927a09898f1287e0ecd1276f42ec7a252667dad.zip |
Export of internal Abseil changes
--
bddfb8bae4e569884bf8749f5368e536562f0682 by Samuel Benzaquen <sbenza@google.com>:
Forward the Status.
PiperOrigin-RevId: 333159251
--
461640476dab1726eba8d26a0c8012b5a35ba0b1 by Evan Brown <ezb@google.com>:
Avoid relying on mutable b-tree set iterators in merge(). Mutable set iterators is an API difference from std::set that we want to get rid of.
Also remove a superfluous `public` member specification in btree_container.
PiperOrigin-RevId: 333101335
--
96cf8ac6946840be17da445739c950fd237159f4 by Abseil Team <absl-team@google.com>:
Explicitly mention that FormatDuration deviates from Go for the zero duration
PiperOrigin-RevId: 333094962
--
83389040371436aab4e952211e98ffa98e24fd94 by Abseil Team <absl-team@google.com>:
Internal change.
PiperOrigin-RevId: 332862771
GitOrigin-RevId: bddfb8bae4e569884bf8749f5368e536562f0682
Change-Id: I4a47043ddbad6e700380614c75566c09d4943103
Diffstat (limited to 'absl/container/btree_test.cc')
-rw-r--r-- | absl/container/btree_test.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index 1bfa0c20..b6c11ea1 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -55,6 +55,7 @@ using ::testing::ElementsAreArray; using ::testing::IsEmpty; using ::testing::IsNull; using ::testing::Pair; +using ::testing::SizeIs; template <typename T, typename U> void CheckPairEquals(const T &x, const U &y) { @@ -2109,6 +2110,31 @@ TEST(Btree, MergeIntoMultiMapsWithDifferentComparators) { Pair(4, 1), Pair(4, 4), Pair(5, 5))); } +TEST(Btree, MergeIntoSetMovableOnly) { + absl::btree_set<MovableOnlyInstance> src; + src.insert(MovableOnlyInstance(1)); + absl::btree_multiset<MovableOnlyInstance> dst1; + dst1.insert(MovableOnlyInstance(2)); + absl::btree_set<MovableOnlyInstance> dst2; + + // Test merge into multiset. + dst1.merge(src); + + EXPECT_TRUE(src.empty()); + // ElementsAre/ElementsAreArray don't work with move-only types. + ASSERT_THAT(dst1, SizeIs(2)); + EXPECT_EQ(*dst1.begin(), MovableOnlyInstance(1)); + EXPECT_EQ(*std::next(dst1.begin()), MovableOnlyInstance(2)); + + // Test merge into set. + dst2.merge(dst1); + + EXPECT_TRUE(dst1.empty()); + ASSERT_THAT(dst2, SizeIs(2)); + EXPECT_EQ(*dst2.begin(), MovableOnlyInstance(1)); + EXPECT_EQ(*std::next(dst2.begin()), MovableOnlyInstance(2)); +} + struct KeyCompareToWeakOrdering { template <typename T> absl::weak_ordering operator()(const T &a, const T &b) const { |