Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(700)

Unified Diff: base/containers/flat_tree_unittest.cc

Issue 2776793002: Make flat containers stable, allow constructing from vector. (Closed)
Patch Set: Put back media log change lost in merge Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/containers/flat_tree.h ('k') | components/omnibox/browser/in_memory_url_index_types.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/containers/flat_tree_unittest.cc
diff --git a/base/containers/flat_tree_unittest.cc b/base/containers/flat_tree_unittest.cc
index 91a853c736ca6df5547383ca25826cff2d28a1a0..e3a8f879fcf82de71e6951a91c48c7b223d98b96 100644
--- a/base/containers/flat_tree_unittest.cc
+++ b/base/containers/flat_tree_unittest.cc
@@ -130,6 +130,13 @@ class NonDefaultConstructibleCompare {
}
};
+template <class PairType>
+struct LessByFirst {
+ bool operator()(const PairType& lhs, const PairType& rhs) const {
+ return lhs.first < rhs.first;
+ }
+};
+
// Common test trees.
// TODO(dyaroshev): replace less<int> with less<>, once we have it
@@ -138,6 +145,11 @@ using IntTreeWithLess =
flat_tree<int, int, GetKeyFromValueIdentity<int>, std::less<int>>;
using IntTree =
flat_tree<int, int, GetKeyFromValueIdentity<int>, std::less<int>>;
+using IntPair = std::pair<int, int>;
+using IntPairTree = flat_tree<IntPair,
+ IntPair,
+ GetKeyFromValueIdentity<IntPair>,
+ LessByFirst<IntPair>>;
using MoveOnlyTree = flat_tree<MoveOnlyInt,
MoveOnlyInt,
GetKeyFromValueIdentity<MoveOnlyInt>,
@@ -158,6 +170,68 @@ using ::testing::ElementsAre;
} // namespace
+TEST(FlatTree, LastUnique) {
+ using Pair = std::pair<int, int>;
+ using Vect = std::vector<Pair>;
+
+ auto cmp = [](const Pair& lhs, const Pair& rhs) {
+ return lhs.first == rhs.first;
+ };
+
+ // Empty case.
+ Vect empty;
+ EXPECT_EQ(empty.end(), LastUnique(empty.begin(), empty.end(), cmp));
+
+ // Single element.
+ Vect one;
+ one.push_back(Pair(1, 1));
+ EXPECT_EQ(one.end(), LastUnique(one.begin(), one.end(), cmp));
+ ASSERT_EQ(1u, one.size());
+ EXPECT_THAT(one, ElementsAre(Pair(1, 1)));
+
+ // Two elements, already unique.
+ Vect two_u;
+ two_u.push_back(Pair(1, 1));
+ two_u.push_back(Pair(2, 2));
+ EXPECT_EQ(two_u.end(), LastUnique(two_u.begin(), two_u.end(), cmp));
+ EXPECT_THAT(two_u, ElementsAre(Pair(1, 1), Pair(2, 2)));
+
+ // Two elements, dupes.
+ Vect two_d;
+ two_d.push_back(Pair(1, 1));
+ two_d.push_back(Pair(1, 2));
+ auto last = LastUnique(two_d.begin(), two_d.end(), cmp);
+ EXPECT_EQ(two_d.begin() + 1, last);
+ two_d.erase(last, two_d.end());
+ EXPECT_THAT(two_d, ElementsAre(Pair(1, 2)));
+
+ // Non-dupes, dupes, non-dupes.
+ Vect ndn;
+ ndn.push_back(Pair(1, 1));
+ ndn.push_back(Pair(2, 1));
+ ndn.push_back(Pair(2, 2));
+ ndn.push_back(Pair(2, 3));
+ ndn.push_back(Pair(3, 1));
+ last = LastUnique(ndn.begin(), ndn.end(), cmp);
+ EXPECT_EQ(ndn.begin() + 3, last);
+ ndn.erase(last, ndn.end());
+ EXPECT_THAT(ndn, ElementsAre(Pair(1, 1), Pair(2, 3), Pair(3, 1)));
+
+ // Dupes, non-dupes, dupes.
+ Vect dnd;
+ dnd.push_back(Pair(1, 1));
+ dnd.push_back(Pair(1, 2));
+ dnd.push_back(Pair(1, 3));
+ dnd.push_back(Pair(2, 1));
+ dnd.push_back(Pair(3, 1));
+ dnd.push_back(Pair(3, 2));
+ dnd.push_back(Pair(3, 3));
+ last = LastUnique(dnd.begin(), dnd.end(), cmp);
+ EXPECT_EQ(dnd.begin() + 3, last);
+ dnd.erase(last, dnd.end());
+ EXPECT_THAT(dnd, ElementsAre(Pair(1, 3), Pair(2, 1), Pair(3, 3)));
+}
+
// ----------------------------------------------------------------------------
// Class.
@@ -181,36 +255,31 @@ TEST(FlatTree, IncompleteType) {
TEST(FlatTree, Stability) {
using Pair = std::pair<int, int>;
- struct LessByFirst {
- bool operator()(const Pair& lhs, const Pair& rhs) const {
- return lhs.first < rhs.first;
- }
- };
-
using Tree =
- flat_tree<Pair, Pair, GetKeyFromValueIdentity<Pair>, LessByFirst>;
+ flat_tree<Pair, Pair, GetKeyFromValueIdentity<Pair>, LessByFirst<Pair>>;
- // Constructors are not stable.
- Tree cont{{0, 0}, {1, 0}, {0, 1}, {2, 0}, {0, 2}, {1, 1}};
+ // Constructors are stable.
+ Tree cont({{0, 0}, {1, 0}, {0, 1}, {2, 0}, {0, 2}, {1, 1}},
+ KEEP_FIRST_OF_DUPES);
- auto NoneOfSecondsAreTwo = [&cont] {
- return std::none_of(cont.begin(), cont.end(),
- [](const Pair& elem) { return elem.second == 2; });
+ auto AllOfSecondsAreZero = [&cont] {
+ return std::all_of(cont.begin(), cont.end(),
+ [](const Pair& elem) { return elem.second == 0; });
};
+ EXPECT_TRUE(AllOfSecondsAreZero()) << "constructor should be stable";
+
// Should not replace existing.
cont.insert(Pair(0, 2));
cont.insert(Pair(1, 2));
cont.insert(Pair(2, 2));
- EXPECT_TRUE(NoneOfSecondsAreTwo())
- << "insert should be stable with respect to constructor";
+ EXPECT_TRUE(AllOfSecondsAreZero()) << "insert should be stable";
cont.insert(Pair(3, 0));
cont.insert(Pair(3, 2));
- EXPECT_TRUE(NoneOfSecondsAreTwo())
- << "insert should be stable with respect to previous insert";
+ EXPECT_TRUE(AllOfSecondsAreZero()) << "insert should be stable";
}
// ----------------------------------------------------------------------------
@@ -263,16 +332,26 @@ TEST(FlatTree, DefaultConstructor) {
}
// flat_tree(InputIterator first,
-// InputIterator last,
-// const Compare& comp = Compare())
+// InputIterator last,
+// FlatContainerDupes dupe_handling,
+// const Compare& comp = Compare())
TEST(FlatTree, RangeConstructor) {
{
- IntTree::value_type input_vals[] = {1, 1, 1, 2, 2, 2, 3, 3, 3};
-
- IntTree cont(MakeInputIterator(std::begin(input_vals)),
- MakeInputIterator(std::end(input_vals)));
- EXPECT_THAT(cont, ElementsAre(1, 2, 3));
+ IntPair input_vals[] = {{1, 1}, {1, 2}, {2, 1}, {2, 2}, {1, 3},
+ {2, 3}, {3, 1}, {3, 2}, {3, 3}};
+
+ IntPairTree first_of(MakeInputIterator(std::begin(input_vals)),
+ MakeInputIterator(std::end(input_vals)),
+ KEEP_FIRST_OF_DUPES);
+ EXPECT_THAT(first_of,
+ ElementsAre(IntPair(1, 1), IntPair(2, 1), IntPair(3, 1)));
+
+ IntPairTree last_of(MakeInputIterator(std::begin(input_vals)),
+ MakeInputIterator(std::end(input_vals)),
+ KEEP_LAST_OF_DUPES);
+ EXPECT_THAT(last_of,
+ ElementsAre(IntPair(1, 3), IntPair(2, 3), IntPair(3, 3)));
}
{
TreeWithStrangeCompare::value_type input_vals[] = {1, 1, 1, 2, 2,
@@ -280,6 +359,7 @@ TEST(FlatTree, RangeConstructor) {
TreeWithStrangeCompare cont(MakeInputIterator(std::begin(input_vals)),
MakeInputIterator(std::end(input_vals)),
+ KEEP_FIRST_OF_DUPES,
NonDefaultConstructibleCompare(0));
EXPECT_THAT(cont, ElementsAre(1, 2, 3));
}
@@ -288,7 +368,7 @@ TEST(FlatTree, RangeConstructor) {
// flat_tree(const flat_tree& x)
TEST(FlatTree, CopyConstructor) {
- IntTree original{1, 2, 3, 4};
+ IntTree original({1, 2, 3, 4}, KEEP_FIRST_OF_DUPES);
IntTree copied(original);
EXPECT_THAT(copied, ElementsAre(1, 2, 3, 4));
@@ -303,7 +383,8 @@ TEST(FlatTree, CopyConstructor) {
TEST(FlatTree, MoveConstructor) {
int input_range[] = {1, 2, 3, 4};
- MoveOnlyTree original(std::begin(input_range), std::end(input_range));
+ MoveOnlyTree original(std::begin(input_range), std::end(input_range),
+ KEEP_FIRST_OF_DUPES);
MoveOnlyTree moved(std::move(original));
EXPECT_EQ(1U, moved.count(MoveOnlyInt(1)));
@@ -312,19 +393,65 @@ TEST(FlatTree, MoveConstructor) {
EXPECT_EQ(1U, moved.count(MoveOnlyInt(4)));
}
-// flat_tree(std::initializer_list<value_type> ilist,
+// flat_tree(std::vector<value_type>, FlatContainerDupes dupe_handling)
+
+TEST(FlatTree, VectorConstructor) {
+ using Pair = std::pair<int, MoveOnlyInt>;
+
+ // Construct an unsorted vector with a duplicate item in it. Sorted by the
+ // first item, the second allows us to test for stability. Using a move
+ // only type to ensure the vector is not copied.
+ std::vector<Pair> storage;
+ storage.push_back(Pair(2, MoveOnlyInt(0)));
+ storage.push_back(Pair(1, MoveOnlyInt(0)));
+ storage.push_back(Pair(2, MoveOnlyInt(1)));
+
+ using Tree =
+ flat_tree<Pair, Pair, GetKeyFromValueIdentity<Pair>, LessByFirst<Pair>>;
+ Tree tree(std::move(storage), KEEP_FIRST_OF_DUPES);
+
+ // The list should be two items long, with only the first "2" saved.
+ ASSERT_EQ(2u, tree.size());
+ const Pair& zeroth = *tree.begin();
+ ASSERT_EQ(1, zeroth.first);
+ ASSERT_EQ(0, zeroth.second.data());
+
+ const Pair& first = *(tree.begin() + 1);
+ ASSERT_EQ(2, first.first);
+ ASSERT_EQ(0, first.second.data());
+
+ // Test KEEP_LAST_OF_DUPES with a simple vector constructor.
+ std::vector<IntPair> int_storage{{1, 1}, {1, 2}, {2, 1}};
+ IntPairTree int_tree(std::move(int_storage), KEEP_LAST_OF_DUPES);
+ EXPECT_THAT(int_tree, ElementsAre(IntPair(1, 2), IntPair(2, 1)));
+}
+
+// flat_tree(std::initializer_list<value_type> ilist,
+// FlatContainerDupes dupe_handling,
// const Compare& comp = Compare())
TEST(FlatTree, InitializerListConstructor) {
{
- IntTree cont{1, 2, 3, 4, 5, 6, 10, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 10, 8}, KEEP_FIRST_OF_DUPES);
EXPECT_THAT(cont, ElementsAre(1, 2, 3, 4, 5, 6, 8, 10));
}
{
- TreeWithStrangeCompare cont({1, 2, 3, 4, 5, 6, 10, 8},
+ IntTree cont({1, 2, 3, 4, 5, 6, 10, 8}, KEEP_FIRST_OF_DUPES);
+ EXPECT_THAT(cont, ElementsAre(1, 2, 3, 4, 5, 6, 8, 10));
+ }
+ {
+ TreeWithStrangeCompare cont({1, 2, 3, 4, 5, 6, 10, 8}, KEEP_FIRST_OF_DUPES,
NonDefaultConstructibleCompare(0));
EXPECT_THAT(cont, ElementsAre(1, 2, 3, 4, 5, 6, 8, 10));
}
+ {
+ IntPairTree first_of({{1, 1}, {2, 1}, {1, 2}}, KEEP_FIRST_OF_DUPES);
+ EXPECT_THAT(first_of, ElementsAre(IntPair(1, 1), IntPair(2, 1)));
+ }
+ {
+ IntPairTree last_of({{1, 1}, {2, 1}, {1, 2}}, KEEP_LAST_OF_DUPES);
+ EXPECT_THAT(last_of, ElementsAre(IntPair(1, 2), IntPair(2, 1)));
+ }
}
// ----------------------------------------------------------------------------
@@ -333,7 +460,7 @@ TEST(FlatTree, InitializerListConstructor) {
// flat_tree& operator=(const flat_tree&)
TEST(FlatTree, CopyAssignable) {
- IntTree original{1, 2, 3, 4};
+ IntTree original({1, 2, 3, 4}, KEEP_FIRST_OF_DUPES);
IntTree copied;
copied = original;
@@ -347,7 +474,8 @@ TEST(FlatTree, CopyAssignable) {
TEST(FlatTree, MoveAssignable) {
int input_range[] = {1, 2, 3, 4};
- MoveOnlyTree original(std::begin(input_range), std::end(input_range));
+ MoveOnlyTree original(std::begin(input_range), std::end(input_range),
+ KEEP_FIRST_OF_DUPES);
MoveOnlyTree moved;
moved = std::move(original);
@@ -360,7 +488,7 @@ TEST(FlatTree, MoveAssignable) {
// flat_tree& operator=(std::initializer_list<value_type> ilist)
TEST(FlatTree, InitializerListAssignable) {
- IntTree cont{0};
+ IntTree cont({0}, KEEP_FIRST_OF_DUPES);
cont = {1, 2, 3, 4, 5, 6, 10, 8};
EXPECT_EQ(0U, cont.count(0));
@@ -373,7 +501,7 @@ TEST(FlatTree, InitializerListAssignable) {
// void reserve(size_type new_capacity)
TEST(FlatTree, Reserve) {
- IntTree cont{1, 2, 3};
+ IntTree cont({1, 2, 3}, KEEP_FIRST_OF_DUPES);
cont.reserve(5);
EXPECT_LE(5U, cont.capacity());
@@ -382,7 +510,7 @@ TEST(FlatTree, Reserve) {
// size_type capacity() const
TEST(FlatTree, Capacity) {
- IntTree cont{1, 2, 3};
+ IntTree cont({1, 2, 3}, KEEP_FIRST_OF_DUPES);
EXPECT_LE(cont.size(), cont.capacity());
cont.reserve(5);
@@ -392,7 +520,7 @@ TEST(FlatTree, Capacity) {
// void shrink_to_fit()
TEST(FlatTree, ShrinkToFit) {
- IntTree cont{1, 2, 3};
+ IntTree cont({1, 2, 3}, KEEP_FIRST_OF_DUPES);
IntTree::size_type capacity_before = cont.capacity();
cont.shrink_to_fit();
@@ -405,7 +533,7 @@ TEST(FlatTree, ShrinkToFit) {
// void clear()
TEST(FlatTree, Clear) {
- IntTree cont{1, 2, 3, 4, 5, 6, 7, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 7, 8}, KEEP_FIRST_OF_DUPES);
cont.clear();
EXPECT_THAT(cont, ElementsAre());
}
@@ -461,7 +589,7 @@ TEST(FlatTree, Empty) {
// const_reverse_iterator crend() const
TEST(FlatTree, Iterators) {
- IntTree cont{1, 2, 3, 4, 5, 6, 7, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 7, 8}, KEEP_FIRST_OF_DUPES);
auto size = static_cast<IntTree::difference_type>(cont.size());
@@ -684,7 +812,7 @@ TEST(FlatTree, EmplacePosition) {
// iterator erase(const_iterator position_hint)
TEST(FlatTree, ErasePosition) {
- IntTree cont{1, 2, 3, 4, 5, 6, 7, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 7, 8}, KEEP_FIRST_OF_DUPES);
IntTree::iterator it = cont.erase(std::next(cont.cbegin(), 3));
EXPECT_EQ(std::next(cont.begin(), 3), it);
@@ -722,7 +850,7 @@ TEST(FlatTree, ErasePosition) {
// iterator erase(const_iterator first, const_iterator last)
TEST(FlatTree, EraseRange) {
- IntTree cont{1, 2, 3, 4, 5, 6, 7, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 7, 8}, KEEP_FIRST_OF_DUPES);
IntTree::iterator it =
cont.erase(std::next(cont.cbegin(), 5), std::next(cont.cbegin(), 5));
@@ -749,7 +877,7 @@ TEST(FlatTree, EraseRange) {
// size_type erase(const key_type& key)
TEST(FlatTree, EraseKey) {
- IntTree cont{1, 2, 3, 4, 5, 6, 7, 8};
+ IntTree cont({1, 2, 3, 4, 5, 6, 7, 8}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(0U, cont.erase(9));
EXPECT_THAT(cont, ElementsAre(1, 2, 3, 4, 5, 6, 7, 8));
@@ -785,7 +913,7 @@ TEST(FlatTree, EraseKey) {
// key_compare key_comp() const
TEST(FlatTree, KeyComp) {
- ReversedTree cont{1, 2, 3, 4, 5};
+ ReversedTree cont({1, 2, 3, 4, 5}, KEEP_FIRST_OF_DUPES);
EXPECT_TRUE(std::is_sorted(cont.begin(), cont.end(), cont.key_comp()));
int new_elements[] = {6, 7, 8, 9, 10};
@@ -797,7 +925,7 @@ TEST(FlatTree, KeyComp) {
// value_compare value_comp() const
TEST(FlatTree, ValueComp) {
- ReversedTree cont{1, 2, 3, 4, 5};
+ ReversedTree cont({1, 2, 3, 4, 5}, KEEP_FIRST_OF_DUPES);
EXPECT_TRUE(std::is_sorted(cont.begin(), cont.end(), cont.value_comp()));
int new_elements[] = {6, 7, 8, 9, 10};
@@ -813,7 +941,7 @@ TEST(FlatTree, ValueComp) {
TEST(FlatTree, Count) {
{
- const IntTree cont{5, 6, 7, 8, 9, 10, 11, 12};
+ const IntTree cont({5, 6, 7, 8, 9, 10, 11, 12}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(1U, cont.count(5));
EXPECT_EQ(1U, cont.count(6));
@@ -826,7 +954,8 @@ TEST(FlatTree, Count) {
EXPECT_EQ(0U, cont.count(4));
}
{
- const IntTreeWithLess cont{5, 6, 7, 8, 9, 10, 11, 12};
+ const IntTreeWithLess cont({5, 6, 7, 8, 9, 10, 11, 12},
+ KEEP_FIRST_OF_DUPES);
EXPECT_EQ(1U, cont.count(5));
EXPECT_EQ(1U, cont.count(6));
@@ -845,7 +974,7 @@ TEST(FlatTree, Count) {
TEST(FlatTree, Find) {
{
- IntTree cont{5, 6, 7, 8, 9, 10, 11, 12};
+ IntTree cont({5, 6, 7, 8, 9, 10, 11, 12}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.find(5));
EXPECT_EQ(std::next(cont.begin()), cont.find(6));
@@ -858,7 +987,7 @@ TEST(FlatTree, Find) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.find(4));
}
{
- const IntTree cont{5, 6, 7, 8, 9, 10, 11, 12};
+ const IntTree cont({5, 6, 7, 8, 9, 10, 11, 12}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.find(5));
EXPECT_EQ(std::next(cont.begin()), cont.find(6));
@@ -871,7 +1000,7 @@ TEST(FlatTree, Find) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.find(4));
}
{
- IntTreeWithLess cont{5, 6, 7, 8, 9, 10, 11, 12};
+ IntTreeWithLess cont({5, 6, 7, 8, 9, 10, 11, 12}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.find(5));
EXPECT_EQ(std::next(cont.begin()), cont.find(6));
@@ -890,7 +1019,7 @@ TEST(FlatTree, Find) {
TEST(FlatTree, EqualRange) {
{
- IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
std::pair<IntTree::iterator, IntTree::iterator> result =
cont.equal_range(5);
@@ -946,7 +1075,7 @@ TEST(FlatTree, EqualRange) {
EXPECT_EQ(std::next(cont.begin(), 8), result.second);
}
{
- const IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ const IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
std::pair<IntTree::const_iterator, IntTree::const_iterator> result =
cont.equal_range(5);
@@ -1002,7 +1131,7 @@ TEST(FlatTree, EqualRange) {
EXPECT_EQ(std::next(cont.begin(), 8), result.second);
}
{
- IntTreeWithLess cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTreeWithLess cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
std::pair<IntTree::iterator, IntTree::iterator> result =
cont.equal_range(5);
@@ -1064,7 +1193,7 @@ TEST(FlatTree, EqualRange) {
TEST(FlatTree, LowerBound) {
{
- IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.lower_bound(5));
EXPECT_EQ(std::next(cont.begin()), cont.lower_bound(7));
@@ -1085,7 +1214,7 @@ TEST(FlatTree, LowerBound) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.lower_bound(20));
}
{
- const IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ const IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.lower_bound(5));
EXPECT_EQ(std::next(cont.begin()), cont.lower_bound(7));
@@ -1106,7 +1235,7 @@ TEST(FlatTree, LowerBound) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.lower_bound(20));
}
{
- IntTreeWithLess cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTreeWithLess cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(cont.begin(), cont.lower_bound(5));
EXPECT_EQ(std::next(cont.begin()), cont.lower_bound(7));
@@ -1133,7 +1262,7 @@ TEST(FlatTree, LowerBound) {
TEST(FlatTree, UpperBound) {
{
- IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(std::next(cont.begin(), 1), cont.upper_bound(5));
EXPECT_EQ(std::next(cont.begin(), 2), cont.upper_bound(7));
@@ -1154,7 +1283,7 @@ TEST(FlatTree, UpperBound) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.upper_bound(20));
}
{
- const IntTree cont{5, 7, 9, 11, 13, 15, 17, 19};
+ const IntTree cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(std::next(cont.begin(), 1), cont.upper_bound(5));
EXPECT_EQ(std::next(cont.begin(), 2), cont.upper_bound(7));
@@ -1175,7 +1304,7 @@ TEST(FlatTree, UpperBound) {
EXPECT_EQ(std::next(cont.begin(), 8), cont.upper_bound(20));
}
{
- IntTreeWithLess cont{5, 7, 9, 11, 13, 15, 17, 19};
+ IntTreeWithLess cont({5, 7, 9, 11, 13, 15, 17, 19}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(std::next(cont.begin(), 1), cont.upper_bound(5));
EXPECT_EQ(std::next(cont.begin(), 2), cont.upper_bound(7));
@@ -1204,8 +1333,8 @@ TEST(FlatTree, UpperBound) {
// void swap(flat_tree& lhs, flat_tree& rhs)
TEST(FlatTreeOurs, Swap) {
- IntTree x{1, 2, 3};
- IntTree y{4};
+ IntTree x({1, 2, 3}, KEEP_FIRST_OF_DUPES);
+ IntTree y({4}, KEEP_FIRST_OF_DUPES);
swap(x, y);
EXPECT_THAT(x, ElementsAre(4));
EXPECT_THAT(y, ElementsAre(1, 2, 3));
@@ -1224,9 +1353,9 @@ TEST(FlatTreeOurs, Swap) {
TEST(FlatTree, Comparison) {
// Provided comparator does not participate in comparison.
- ReversedTree biggest{3};
- ReversedTree smallest{1};
- ReversedTree middle{1, 2};
+ ReversedTree biggest({3}, KEEP_FIRST_OF_DUPES);
+ ReversedTree smallest({1}, KEEP_FIRST_OF_DUPES);
+ ReversedTree middle({1, 2}, KEEP_FIRST_OF_DUPES);
EXPECT_EQ(biggest, biggest);
EXPECT_NE(biggest, smallest);
« no previous file with comments | « base/containers/flat_tree.h ('k') | components/omnibox/browser/in_memory_url_index_types.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698