xref: /llvm-project/llvm/unittests/ADT/IntervalTreeTest.cpp (revision bab129f2d30391596d130c1582f252a6a726f7be)
16584d1f9SCarlos Alberto Enciso //===---- ADT/IntervalTreeTest.cpp - IntervalTree unit tests --------------===//
26584d1f9SCarlos Alberto Enciso //
36584d1f9SCarlos Alberto Enciso // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
46584d1f9SCarlos Alberto Enciso // See https://llvm.org/LICENSE.txt for license information.
56584d1f9SCarlos Alberto Enciso // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66584d1f9SCarlos Alberto Enciso //
76584d1f9SCarlos Alberto Enciso //===----------------------------------------------------------------------===//
86584d1f9SCarlos Alberto Enciso 
96584d1f9SCarlos Alberto Enciso #include "llvm/ADT/IntervalTree.h"
106584d1f9SCarlos Alberto Enciso #include "gtest/gtest.h"
116584d1f9SCarlos Alberto Enciso 
126584d1f9SCarlos Alberto Enciso // The test cases for the IntervalTree implementation, follow the below steps:
136584d1f9SCarlos Alberto Enciso // a) Insert a series of intervals with their associated mapped value.
146584d1f9SCarlos Alberto Enciso // b) Create the interval tree.
156584d1f9SCarlos Alberto Enciso // c) Query for specific interval point, covering points inside and outside
166584d1f9SCarlos Alberto Enciso //    of any given intervals.
176584d1f9SCarlos Alberto Enciso // d) Traversal for specific interval point, using the iterators.
186584d1f9SCarlos Alberto Enciso //
196584d1f9SCarlos Alberto Enciso // When querying for a set of intervals containing a given value, the query is
206584d1f9SCarlos Alberto Enciso // done three times, by calling:
216584d1f9SCarlos Alberto Enciso // 1) Intervals = getContaining(...).
226584d1f9SCarlos Alberto Enciso // 2) Intervals = getContaining(...).
236584d1f9SCarlos Alberto Enciso //    sortIntervals(Intervals, Sorting=Ascending).
246584d1f9SCarlos Alberto Enciso // 3) Intervals = getContaining(...).
256584d1f9SCarlos Alberto Enciso //    sortIntervals(Intervals, Sorting=Ascending).
266584d1f9SCarlos Alberto Enciso //
276584d1f9SCarlos Alberto Enciso // The returned intervals are:
286584d1f9SCarlos Alberto Enciso // 1) In their location order within the tree.
296584d1f9SCarlos Alberto Enciso // 2) Smaller intervals first.
306584d1f9SCarlos Alberto Enciso // 3) Bigger intervals first.
316584d1f9SCarlos Alberto Enciso 
326584d1f9SCarlos Alberto Enciso using namespace llvm;
336584d1f9SCarlos Alberto Enciso 
346584d1f9SCarlos Alberto Enciso namespace {
356584d1f9SCarlos Alberto Enciso 
366584d1f9SCarlos Alberto Enciso // Helper function to test a specific item or iterator.
376584d1f9SCarlos Alberto Enciso template <typename TPoint, typename TItem, typename TValue>
checkItem(TPoint Point,TItem Item,TPoint Left,TPoint Right,TValue Value)386584d1f9SCarlos Alberto Enciso void checkItem(TPoint Point, TItem Item, TPoint Left, TPoint Right,
396584d1f9SCarlos Alberto Enciso                TValue Value) {
406584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Item->contains(Point));
416584d1f9SCarlos Alberto Enciso   EXPECT_EQ(Item->left(), Left);
426584d1f9SCarlos Alberto Enciso   EXPECT_EQ(Item->right(), Right);
436584d1f9SCarlos Alberto Enciso   EXPECT_EQ(Item->value(), Value);
446584d1f9SCarlos Alberto Enciso }
456584d1f9SCarlos Alberto Enciso 
466584d1f9SCarlos Alberto Enciso // User class tree tests.
TEST(IntervalTreeTest,UserClass)476584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, UserClass) {
486584d1f9SCarlos Alberto Enciso   using UUPoint = unsigned;
496584d1f9SCarlos Alberto Enciso   using UUValue = double;
506584d1f9SCarlos Alberto Enciso   class MyData : public IntervalData<UUPoint, UUValue> {
516584d1f9SCarlos Alberto Enciso     using UUData = IntervalData<UUPoint, UUValue>;
526584d1f9SCarlos Alberto Enciso 
536584d1f9SCarlos Alberto Enciso   public:
546584d1f9SCarlos Alberto Enciso     // Inherit Base's constructors.
556584d1f9SCarlos Alberto Enciso     using UUData::UUData;
566584d1f9SCarlos Alberto Enciso     PointType left() const { return UUData::left(); }
576584d1f9SCarlos Alberto Enciso     PointType right() const { return UUData::right(); }
586584d1f9SCarlos Alberto Enciso     ValueType value() const { return UUData::value(); }
596584d1f9SCarlos Alberto Enciso 
606584d1f9SCarlos Alberto Enciso     bool left(const PointType &Point) const { return UUData::left(Point); }
616584d1f9SCarlos Alberto Enciso     bool right(const PointType &Point) const { return UUData::right(Point); }
626584d1f9SCarlos Alberto Enciso     bool contains(const PointType &Point) const {
636584d1f9SCarlos Alberto Enciso       return UUData::contains(Point);
646584d1f9SCarlos Alberto Enciso     }
656584d1f9SCarlos Alberto Enciso   };
666584d1f9SCarlos Alberto Enciso 
676584d1f9SCarlos Alberto Enciso   using UUTree = IntervalTree<UUPoint, UUValue, MyData>;
686584d1f9SCarlos Alberto Enciso   using UUReferences = UUTree::IntervalReferences;
696584d1f9SCarlos Alberto Enciso   using UUData = UUTree::DataType;
706584d1f9SCarlos Alberto Enciso   using UUAlloc = UUTree::Allocator;
716584d1f9SCarlos Alberto Enciso 
726584d1f9SCarlos Alberto Enciso   auto CheckData = [](UUPoint Point, const UUData *Data, UUPoint Left,
736584d1f9SCarlos Alberto Enciso                       UUPoint Right, UUValue Value) {
746584d1f9SCarlos Alberto Enciso     checkItem<UUPoint, const UUData *, UUValue>(Point, Data, Left, Right,
756584d1f9SCarlos Alberto Enciso                                                 Value);
766584d1f9SCarlos Alberto Enciso   };
776584d1f9SCarlos Alberto Enciso 
786584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
796584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
806584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
816584d1f9SCarlos Alberto Enciso   UUPoint Point;
826584d1f9SCarlos Alberto Enciso 
836584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
846584d1f9SCarlos Alberto Enciso   Tree.clear();
856584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
866584d1f9SCarlos Alberto Enciso 
876584d1f9SCarlos Alberto Enciso   // [10, 20] <- (10.20)
886584d1f9SCarlos Alberto Enciso   // [30, 40] <- (30.40)
896584d1f9SCarlos Alberto Enciso   //
906584d1f9SCarlos Alberto Enciso   //    [10...20]   [30...40]
916584d1f9SCarlos Alberto Enciso   Tree.insert(10, 20, 10.20);
926584d1f9SCarlos Alberto Enciso   Tree.insert(30, 40, 30.40);
936584d1f9SCarlos Alberto Enciso   Tree.create();
946584d1f9SCarlos Alberto Enciso 
956584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10
966584d1f9SCarlos Alberto Enciso   Point = 5;
976584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
986584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
996584d1f9SCarlos Alberto Enciso 
1006584d1f9SCarlos Alberto Enciso   // Valid interval values: [10...20]
1016584d1f9SCarlos Alberto Enciso   Point = 10;
1026584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
103*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1046584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 10, 20, 10.20);
1056584d1f9SCarlos Alberto Enciso 
1066584d1f9SCarlos Alberto Enciso   Point = 15;
1076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
108*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1096584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 10, 20, 10.20);
1106584d1f9SCarlos Alberto Enciso 
1116584d1f9SCarlos Alberto Enciso   Point = 20;
1126584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
113*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1146584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 10, 20, 10.20);
1156584d1f9SCarlos Alberto Enciso 
1166584d1f9SCarlos Alberto Enciso   // Invalid interval values: 20] < x < [30
1176584d1f9SCarlos Alberto Enciso   Point = 25;
1186584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1196584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
1206584d1f9SCarlos Alberto Enciso 
1216584d1f9SCarlos Alberto Enciso   // Valid interval values: [30...40]
1226584d1f9SCarlos Alberto Enciso   Point = 30;
1236584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
124*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1256584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 30, 40, 30.40);
1266584d1f9SCarlos Alberto Enciso 
1276584d1f9SCarlos Alberto Enciso   Point = 35;
1286584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
129*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1306584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 30, 40, 30.40);
1316584d1f9SCarlos Alberto Enciso 
1326584d1f9SCarlos Alberto Enciso   Point = 40;
1336584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
134*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
1356584d1f9SCarlos Alberto Enciso   CheckData(Point, Intervals[0], 30, 40, 30.40);
1366584d1f9SCarlos Alberto Enciso 
1376584d1f9SCarlos Alberto Enciso   // Invalid interval values: 40] < x
1386584d1f9SCarlos Alberto Enciso   Point = 45;
1396584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1406584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
1416584d1f9SCarlos Alberto Enciso }
1426584d1f9SCarlos Alberto Enciso 
1436584d1f9SCarlos Alberto Enciso using UUPoint = unsigned; // Interval endpoint type.
1446584d1f9SCarlos Alberto Enciso using UUValue = unsigned; // Mapped value type.
1456584d1f9SCarlos Alberto Enciso 
1466584d1f9SCarlos Alberto Enciso using UUTree = IntervalTree<UUPoint, UUValue>;
1476584d1f9SCarlos Alberto Enciso using UUReferences = UUTree::IntervalReferences;
1486584d1f9SCarlos Alberto Enciso using UUData = UUTree::DataType;
1496584d1f9SCarlos Alberto Enciso using UUSorting = UUTree::Sorting;
1506584d1f9SCarlos Alberto Enciso using UUPoint = UUTree::PointType;
1516584d1f9SCarlos Alberto Enciso using UUValue = UUTree::ValueType;
1526584d1f9SCarlos Alberto Enciso using UUIter = UUTree::find_iterator;
1536584d1f9SCarlos Alberto Enciso using UUAlloc = UUTree::Allocator;
1546584d1f9SCarlos Alberto Enciso 
checkData(UUPoint Point,const UUData * Data,UUPoint Left,UUPoint Right,UUValue Value)1556584d1f9SCarlos Alberto Enciso void checkData(UUPoint Point, const UUData *Data, UUPoint Left, UUPoint Right,
1566584d1f9SCarlos Alberto Enciso                UUValue Value) {
1576584d1f9SCarlos Alberto Enciso   checkItem<UUPoint, const UUData *, UUValue>(Point, Data, Left, Right, Value);
1586584d1f9SCarlos Alberto Enciso }
1596584d1f9SCarlos Alberto Enciso 
checkData(UUPoint Point,UUIter Iter,UUPoint Left,UUPoint Right,UUValue Value)1606584d1f9SCarlos Alberto Enciso void checkData(UUPoint Point, UUIter Iter, UUPoint Left, UUPoint Right,
1616584d1f9SCarlos Alberto Enciso                UUValue Value) {
1626584d1f9SCarlos Alberto Enciso   checkItem<UUPoint, UUIter, UUValue>(Point, Iter, Left, Right, Value);
1636584d1f9SCarlos Alberto Enciso }
1646584d1f9SCarlos Alberto Enciso 
1656584d1f9SCarlos Alberto Enciso // Empty tree tests.
TEST(IntervalTreeTest,NoIntervals)1666584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, NoIntervals) {
1676584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
1686584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
1696584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
1706584d1f9SCarlos Alberto Enciso   Tree.clear();
1716584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
1726584d1f9SCarlos Alberto Enciso 
1736584d1f9SCarlos Alberto Enciso   // Create the tree and switch to query mode.
1746584d1f9SCarlos Alberto Enciso   Tree.create();
1756584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
1766584d1f9SCarlos Alberto Enciso   EXPECT_EQ(Tree.find(1), Tree.find_end());
1776584d1f9SCarlos Alberto Enciso }
1786584d1f9SCarlos Alberto Enciso 
1796584d1f9SCarlos Alberto Enciso // One item tree tests.
TEST(IntervalTreeTest,OneInterval)1806584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, OneInterval) {
1816584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
1826584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
1836584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
1846584d1f9SCarlos Alberto Enciso   UUPoint Point;
1856584d1f9SCarlos Alberto Enciso 
1866584d1f9SCarlos Alberto Enciso   // [10, 20] <- (1020)
1876584d1f9SCarlos Alberto Enciso   //
1886584d1f9SCarlos Alberto Enciso   //    [10...20]
1896584d1f9SCarlos Alberto Enciso   Tree.insert(10, 20, 1020);
1906584d1f9SCarlos Alberto Enciso 
1916584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
1926584d1f9SCarlos Alberto Enciso   Tree.create();
1936584d1f9SCarlos Alberto Enciso   EXPECT_FALSE(Tree.empty());
1946584d1f9SCarlos Alberto Enciso 
1956584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10.
1966584d1f9SCarlos Alberto Enciso   Point = 5;
1976584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1986584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
1996584d1f9SCarlos Alberto Enciso 
2006584d1f9SCarlos Alberto Enciso   // Valid interval values: [10...20].
2016584d1f9SCarlos Alberto Enciso   Point = 10;
2026584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
203*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2056584d1f9SCarlos Alberto Enciso 
2066584d1f9SCarlos Alberto Enciso   Point = 15;
2076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
208*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2096584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2106584d1f9SCarlos Alberto Enciso 
2116584d1f9SCarlos Alberto Enciso   Point = 20;
2126584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
213*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2156584d1f9SCarlos Alberto Enciso 
2166584d1f9SCarlos Alberto Enciso   // Invalid interval values: 20] < x
2176584d1f9SCarlos Alberto Enciso   Point = 25;
2186584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
2196584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
2206584d1f9SCarlos Alberto Enciso }
2216584d1f9SCarlos Alberto Enciso 
2226584d1f9SCarlos Alberto Enciso // Two items tree tests. No overlapping.
TEST(IntervalTreeTest,TwoIntervals)2236584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, TwoIntervals) {
2246584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
2256584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
2266584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
2276584d1f9SCarlos Alberto Enciso   UUPoint Point;
2286584d1f9SCarlos Alberto Enciso 
2296584d1f9SCarlos Alberto Enciso   // [10, 20] <- (1020)
2306584d1f9SCarlos Alberto Enciso   // [30, 40] <- (3040)
2316584d1f9SCarlos Alberto Enciso   //
2326584d1f9SCarlos Alberto Enciso   //    [10...20]   [30...40]
2336584d1f9SCarlos Alberto Enciso   Tree.insert(10, 20, 1020);
2346584d1f9SCarlos Alberto Enciso   Tree.insert(30, 40, 3040);
2356584d1f9SCarlos Alberto Enciso   Tree.create();
2366584d1f9SCarlos Alberto Enciso 
2376584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10
2386584d1f9SCarlos Alberto Enciso   Point = 5;
2396584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
2406584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
2416584d1f9SCarlos Alberto Enciso 
2426584d1f9SCarlos Alberto Enciso   // Valid interval values: [10...20]
2436584d1f9SCarlos Alberto Enciso   Point = 10;
2446584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
245*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2476584d1f9SCarlos Alberto Enciso 
2486584d1f9SCarlos Alberto Enciso   Point = 15;
2496584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
250*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2516584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2526584d1f9SCarlos Alberto Enciso 
2536584d1f9SCarlos Alberto Enciso   Point = 20;
2546584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
255*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2566584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
2576584d1f9SCarlos Alberto Enciso 
2586584d1f9SCarlos Alberto Enciso   // Invalid interval values: 20] < x < [30
2596584d1f9SCarlos Alberto Enciso   Point = 25;
2606584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
2616584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
2626584d1f9SCarlos Alberto Enciso 
2636584d1f9SCarlos Alberto Enciso   // Valid interval values: [30...40]
2646584d1f9SCarlos Alberto Enciso   Point = 30;
2656584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
266*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
2686584d1f9SCarlos Alberto Enciso 
2696584d1f9SCarlos Alberto Enciso   Point = 35;
2706584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
271*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
2736584d1f9SCarlos Alberto Enciso 
2746584d1f9SCarlos Alberto Enciso   Point = 40;
2756584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
276*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
2776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
2786584d1f9SCarlos Alberto Enciso 
2796584d1f9SCarlos Alberto Enciso   // Invalid interval values: 40] < x
2806584d1f9SCarlos Alberto Enciso   Point = 45;
2816584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
2826584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
2836584d1f9SCarlos Alberto Enciso }
2846584d1f9SCarlos Alberto Enciso 
2856584d1f9SCarlos Alberto Enciso // Three items tree tests. No overlapping.
TEST(IntervalTreeTest,ThreeIntervals)2866584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, ThreeIntervals) {
2876584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
2886584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
2896584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
2906584d1f9SCarlos Alberto Enciso   UUPoint Point;
2916584d1f9SCarlos Alberto Enciso 
2926584d1f9SCarlos Alberto Enciso   // [10, 20] <- (1020)
2936584d1f9SCarlos Alberto Enciso   // [30, 40] <- (3040)
2946584d1f9SCarlos Alberto Enciso   // [50, 60] <- (5060)
2956584d1f9SCarlos Alberto Enciso   //
2966584d1f9SCarlos Alberto Enciso   //    [10...20]   [30...40]   [50...60]
2976584d1f9SCarlos Alberto Enciso   Tree.insert(10, 20, 1020);
2986584d1f9SCarlos Alberto Enciso   Tree.insert(30, 40, 3040);
2996584d1f9SCarlos Alberto Enciso   Tree.insert(50, 60, 5060);
3006584d1f9SCarlos Alberto Enciso   Tree.create();
3016584d1f9SCarlos Alberto Enciso 
3026584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10
3036584d1f9SCarlos Alberto Enciso   Point = 5;
3046584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
3056584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
3066584d1f9SCarlos Alberto Enciso 
3076584d1f9SCarlos Alberto Enciso   // Valid interval values: [10...20]
3086584d1f9SCarlos Alberto Enciso   Point = 10;
3096584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
310*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
3126584d1f9SCarlos Alberto Enciso 
3136584d1f9SCarlos Alberto Enciso   Point = 15;
3146584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
315*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
3176584d1f9SCarlos Alberto Enciso 
3186584d1f9SCarlos Alberto Enciso   Point = 20;
3196584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
320*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 20, 1020);
3226584d1f9SCarlos Alberto Enciso 
3236584d1f9SCarlos Alberto Enciso   // Invalid interval values: 20] < x < [30
3246584d1f9SCarlos Alberto Enciso   Point = 25;
3256584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
3266584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
3276584d1f9SCarlos Alberto Enciso 
3286584d1f9SCarlos Alberto Enciso   // Valid interval values: [30...40]
3296584d1f9SCarlos Alberto Enciso   Point = 30;
3306584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
331*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3326584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
3336584d1f9SCarlos Alberto Enciso 
3346584d1f9SCarlos Alberto Enciso   Point = 35;
3356584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
336*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
3386584d1f9SCarlos Alberto Enciso 
3396584d1f9SCarlos Alberto Enciso   Point = 40;
3406584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
341*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 40, 3040);
3436584d1f9SCarlos Alberto Enciso 
3446584d1f9SCarlos Alberto Enciso   // Invalid interval values: 40] < x < [50
3456584d1f9SCarlos Alberto Enciso   Point = 45;
3466584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
3476584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
3486584d1f9SCarlos Alberto Enciso 
3496584d1f9SCarlos Alberto Enciso   // Valid interval values: [50...60]
3506584d1f9SCarlos Alberto Enciso   Point = 50;
3516584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
352*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 50, 60, 5060);
3546584d1f9SCarlos Alberto Enciso 
3556584d1f9SCarlos Alberto Enciso   Point = 55;
3566584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
357*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3586584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 50, 60, 5060);
3596584d1f9SCarlos Alberto Enciso 
3606584d1f9SCarlos Alberto Enciso   Point = 60;
3616584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
362*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
3636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 50, 60, 5060);
3646584d1f9SCarlos Alberto Enciso 
3656584d1f9SCarlos Alberto Enciso   // Invalid interval values: 60] < x
3666584d1f9SCarlos Alberto Enciso   Point = 65;
3676584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
3686584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
3696584d1f9SCarlos Alberto Enciso }
3706584d1f9SCarlos Alberto Enciso 
3716584d1f9SCarlos Alberto Enciso // One item tree tests.
TEST(IntervalTreeTest,EmptyIntervals)3726584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, EmptyIntervals) {
3736584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
3746584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
3756584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
3766584d1f9SCarlos Alberto Enciso   UUPoint Point;
3776584d1f9SCarlos Alberto Enciso 
3786584d1f9SCarlos Alberto Enciso   // [40, 60] <- (4060)
3796584d1f9SCarlos Alberto Enciso   // [50, 50] <- (5050)
3806584d1f9SCarlos Alberto Enciso   // [10, 10] <- (1010)
3816584d1f9SCarlos Alberto Enciso   // [70, 70] <- (7070)
3826584d1f9SCarlos Alberto Enciso   //
3836584d1f9SCarlos Alberto Enciso   //                [40...............60]
3846584d1f9SCarlos Alberto Enciso   //                      [50...50]
3856584d1f9SCarlos Alberto Enciso   //    [10...10]
3866584d1f9SCarlos Alberto Enciso   //                                        [70...70]
3876584d1f9SCarlos Alberto Enciso   Tree.insert(40, 60, 4060);
3886584d1f9SCarlos Alberto Enciso   Tree.insert(50, 50, 5050);
3896584d1f9SCarlos Alberto Enciso   Tree.insert(10, 10, 1010);
3906584d1f9SCarlos Alberto Enciso   Tree.insert(70, 70, 7070);
3916584d1f9SCarlos Alberto Enciso 
3926584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Tree.empty());
3936584d1f9SCarlos Alberto Enciso   Tree.create();
3946584d1f9SCarlos Alberto Enciso   EXPECT_FALSE(Tree.empty());
3956584d1f9SCarlos Alberto Enciso 
3966584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10.
3976584d1f9SCarlos Alberto Enciso   Point = 5;
3986584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
3996584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
4006584d1f9SCarlos Alberto Enciso 
4016584d1f9SCarlos Alberto Enciso   // Valid interval values: [10...10].
4026584d1f9SCarlos Alberto Enciso   Point = 10;
4036584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
404*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 10, 1010);
4066584d1f9SCarlos Alberto Enciso 
4076584d1f9SCarlos Alberto Enciso   // Invalid interval values: 10] < x
4086584d1f9SCarlos Alberto Enciso   Point = 15;
4096584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4106584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
4116584d1f9SCarlos Alberto Enciso 
4126584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [50.
4136584d1f9SCarlos Alberto Enciso   Point = 45;
4146584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
415*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
4176584d1f9SCarlos Alberto Enciso 
4186584d1f9SCarlos Alberto Enciso   // Valid interval values: [50...50].
4196584d1f9SCarlos Alberto Enciso   Point = 50;
4206584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
421*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
4226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
4236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 50, 5050);
4246584d1f9SCarlos Alberto Enciso 
4256584d1f9SCarlos Alberto Enciso   // Invalid interval values: 50] < x
4266584d1f9SCarlos Alberto Enciso   Point = 55;
4276584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
428*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
4306584d1f9SCarlos Alberto Enciso 
4316584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [70.
4326584d1f9SCarlos Alberto Enciso   Point = 65;
4336584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4346584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
4356584d1f9SCarlos Alberto Enciso 
4366584d1f9SCarlos Alberto Enciso   // Valid interval values: [70...70].
4376584d1f9SCarlos Alberto Enciso   Point = 70;
4386584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
439*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4406584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 70, 70, 7070);
4416584d1f9SCarlos Alberto Enciso 
4426584d1f9SCarlos Alberto Enciso   // Invalid interval values: 70] < x
4436584d1f9SCarlos Alberto Enciso   Point = 75;
4446584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4456584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
4466584d1f9SCarlos Alberto Enciso }
4476584d1f9SCarlos Alberto Enciso 
4486584d1f9SCarlos Alberto Enciso // Simple overlapping tests.
TEST(IntervalTreeTest,SimpleIntervalsOverlapping)4496584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, SimpleIntervalsOverlapping) {
4506584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
4516584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
4526584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
4536584d1f9SCarlos Alberto Enciso   UUPoint Point;
4546584d1f9SCarlos Alberto Enciso 
4556584d1f9SCarlos Alberto Enciso   // [40, 60] <- (4060)
4566584d1f9SCarlos Alberto Enciso   // [30, 70] <- (3070)
4576584d1f9SCarlos Alberto Enciso   // [20, 80] <- (2080)
4586584d1f9SCarlos Alberto Enciso   // [10, 90] <- (1090)
4596584d1f9SCarlos Alberto Enciso   //
4606584d1f9SCarlos Alberto Enciso   //                      [40...60]
4616584d1f9SCarlos Alberto Enciso   //                [30...............70]
4626584d1f9SCarlos Alberto Enciso   //          [20...........................80]
4636584d1f9SCarlos Alberto Enciso   //    [10.......................................90]
4646584d1f9SCarlos Alberto Enciso   Tree.insert(40, 60, 4060);
4656584d1f9SCarlos Alberto Enciso   Tree.insert(30, 70, 3070);
4666584d1f9SCarlos Alberto Enciso   Tree.insert(20, 80, 2080);
4676584d1f9SCarlos Alberto Enciso   Tree.insert(10, 90, 1090);
4686584d1f9SCarlos Alberto Enciso   Tree.create();
4696584d1f9SCarlos Alberto Enciso 
4706584d1f9SCarlos Alberto Enciso   // Invalid interval values: x < [10
4716584d1f9SCarlos Alberto Enciso   Point = 5;
4726584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4736584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
4746584d1f9SCarlos Alberto Enciso 
4756584d1f9SCarlos Alberto Enciso   // Valid interval values:
4766584d1f9SCarlos Alberto Enciso   Point = 10;
4776584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
478*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
4806584d1f9SCarlos Alberto Enciso 
4816584d1f9SCarlos Alberto Enciso   Point = 15;
4826584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
483*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
4846584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
4856584d1f9SCarlos Alberto Enciso 
4866584d1f9SCarlos Alberto Enciso   Point = 20;
4876584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
488*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
4896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
4906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
4916584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4926584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
493*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
4946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 20, 80, 2080);
4956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 90, 1090);
4966584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
4976584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
498*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
4996584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5006584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5016584d1f9SCarlos Alberto Enciso 
5026584d1f9SCarlos Alberto Enciso   Point = 25;
5036584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
504*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
5056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5086584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
509*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
5106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 20, 80, 2080);
5116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 90, 1090);
5126584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5136584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
514*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
5156584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5176584d1f9SCarlos Alberto Enciso 
5186584d1f9SCarlos Alberto Enciso   Point = 30;
5196584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
520*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5246584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5256584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
526*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 70, 3070);
5286584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 90, 1090);
5306584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5316584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
532*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5336584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5346584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5366584d1f9SCarlos Alberto Enciso 
5376584d1f9SCarlos Alberto Enciso   Point = 35;
5386584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
539*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5406584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5416584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5436584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5446584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
545*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 70, 3070);
5476584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5486584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 90, 1090);
5496584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5506584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
551*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
5526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5556584d1f9SCarlos Alberto Enciso 
5566584d1f9SCarlos Alberto Enciso   Point = 40;
5576584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
558*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
5636584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5646584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
565*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5666584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
5676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 30, 70, 3070);
5686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 80, 2080);
5696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 90, 1090);
5706584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5716584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
572*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5766584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
5776584d1f9SCarlos Alberto Enciso 
5786584d1f9SCarlos Alberto Enciso   Point = 50;
5796584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
580*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5846584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
5856584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5866584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
587*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
5896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 30, 70, 3070);
5906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 80, 2080);
5916584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 90, 1090);
5926584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
5936584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
594*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
5956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
5966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
5976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
5986584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
5996584d1f9SCarlos Alberto Enciso 
6006584d1f9SCarlos Alberto Enciso   Point = 60;
6016584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
602*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
6036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
6076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6086584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
609*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
6106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 40, 60, 4060);
6116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 30, 70, 3070);
6126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 80, 2080);
6136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 90, 1090);
6146584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6156584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
616*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
6176584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6196584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6206584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 40, 60, 4060);
6216584d1f9SCarlos Alberto Enciso 
6226584d1f9SCarlos Alberto Enciso   Point = 65;
6236584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
624*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6256584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6266584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6286584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6296584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
630*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 70, 3070);
6326584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6336584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 90, 1090);
6346584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6356584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
636*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6386584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6396584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6406584d1f9SCarlos Alberto Enciso 
6416584d1f9SCarlos Alberto Enciso   Point = 70;
6426584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
643*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6456584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6476584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6486584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
649*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6506584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 70, 3070);
6516584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 90, 1090);
6536584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6546584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
655*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
6566584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6576584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6586584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 30, 70, 3070);
6596584d1f9SCarlos Alberto Enciso 
6606584d1f9SCarlos Alberto Enciso   Point = 75;
6616584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
662*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6656584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6666584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
667*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 20, 80, 2080);
6696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 90, 1090);
6706584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6716584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
672*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6756584d1f9SCarlos Alberto Enciso 
6766584d1f9SCarlos Alberto Enciso   Point = 80;
6776584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
678*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6816584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6826584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
683*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6846584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 20, 80, 2080);
6856584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 90, 1090);
6866584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
6876584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
688*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
6896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 80, 2080);
6916584d1f9SCarlos Alberto Enciso 
6926584d1f9SCarlos Alberto Enciso   Point = 85;
6936584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
694*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
6956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
6966584d1f9SCarlos Alberto Enciso 
6976584d1f9SCarlos Alberto Enciso   Point = 90;
6986584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
699*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
7006584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 90, 1090);
7016584d1f9SCarlos Alberto Enciso 
7026584d1f9SCarlos Alberto Enciso   // Invalid interval values: 90] < x
7036584d1f9SCarlos Alberto Enciso   Point = 95;
7046584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
7056584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
7066584d1f9SCarlos Alberto Enciso }
7076584d1f9SCarlos Alberto Enciso 
7086584d1f9SCarlos Alberto Enciso // Complex Overlapping.
TEST(IntervalTreeTest,ComplexIntervalsOverlapping)7096584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, ComplexIntervalsOverlapping) {
7106584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
7116584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
7126584d1f9SCarlos Alberto Enciso   UUReferences Intervals;
7136584d1f9SCarlos Alberto Enciso   UUPoint Point;
7146584d1f9SCarlos Alberto Enciso 
7156584d1f9SCarlos Alberto Enciso   // [30, 35] <- (3035)
7166584d1f9SCarlos Alberto Enciso   // [39, 50] <- (3950)
7176584d1f9SCarlos Alberto Enciso   // [55, 61] <- (5561)
7186584d1f9SCarlos Alberto Enciso   // [31, 56] <- (3156)
7196584d1f9SCarlos Alberto Enciso   // [12, 21] <- (1221)
7206584d1f9SCarlos Alberto Enciso   // [25, 41] <- (2541)
7216584d1f9SCarlos Alberto Enciso   // [49, 65] <- (4965)
7226584d1f9SCarlos Alberto Enciso   // [71, 79] <- (7179)
7236584d1f9SCarlos Alberto Enciso   // [11, 16] <- (1116)
7246584d1f9SCarlos Alberto Enciso   // [20, 30] <- (2030)
7256584d1f9SCarlos Alberto Enciso   // [36, 54] <- (3654)
7266584d1f9SCarlos Alberto Enciso   // [60, 70] <- (6070)
7276584d1f9SCarlos Alberto Enciso   // [74, 80] <- (7480)
7286584d1f9SCarlos Alberto Enciso   // [15, 40] <- (1540)
7296584d1f9SCarlos Alberto Enciso   // [43, 45] <- (4345)
7306584d1f9SCarlos Alberto Enciso   // [50, 75] <- (5075)
7316584d1f9SCarlos Alberto Enciso   // [10, 85] <- (1085)
7326584d1f9SCarlos Alberto Enciso 
7336584d1f9SCarlos Alberto Enciso   //                    30--35  39------------50  55----61
7346584d1f9SCarlos Alberto Enciso   //                      31------------------------56
7356584d1f9SCarlos Alberto Enciso   //     12--------21 25------------41      49-------------65   71-----79
7366584d1f9SCarlos Alberto Enciso   //   11----16  20-----30    36----------------54    60------70  74---- 80
7376584d1f9SCarlos Alberto Enciso   //       15---------------------40  43--45  50--------------------75
7386584d1f9SCarlos Alberto Enciso   // 10----------------------------------------------------------------------85
7396584d1f9SCarlos Alberto Enciso 
7406584d1f9SCarlos Alberto Enciso   Tree.insert(30, 35, 3035);
7416584d1f9SCarlos Alberto Enciso   Tree.insert(39, 50, 3950);
7426584d1f9SCarlos Alberto Enciso   Tree.insert(55, 61, 5561);
7436584d1f9SCarlos Alberto Enciso   Tree.insert(31, 56, 3156);
7446584d1f9SCarlos Alberto Enciso   Tree.insert(12, 21, 1221);
7456584d1f9SCarlos Alberto Enciso   Tree.insert(25, 41, 2541);
7466584d1f9SCarlos Alberto Enciso   Tree.insert(49, 65, 4965);
7476584d1f9SCarlos Alberto Enciso   Tree.insert(71, 79, 7179);
7486584d1f9SCarlos Alberto Enciso   Tree.insert(11, 16, 1116);
7496584d1f9SCarlos Alberto Enciso   Tree.insert(20, 30, 2030);
7506584d1f9SCarlos Alberto Enciso   Tree.insert(36, 54, 3654);
7516584d1f9SCarlos Alberto Enciso   Tree.insert(60, 70, 6070);
7526584d1f9SCarlos Alberto Enciso   Tree.insert(74, 80, 7480);
7536584d1f9SCarlos Alberto Enciso   Tree.insert(15, 40, 1540);
7546584d1f9SCarlos Alberto Enciso   Tree.insert(43, 45, 4345);
7556584d1f9SCarlos Alberto Enciso   Tree.insert(50, 75, 5075);
7566584d1f9SCarlos Alberto Enciso   Tree.insert(10, 85, 1085);
7576584d1f9SCarlos Alberto Enciso   Tree.create();
7586584d1f9SCarlos Alberto Enciso 
7596584d1f9SCarlos Alberto Enciso   // Find valid interval values.
7606584d1f9SCarlos Alberto Enciso   Point = 30;
7616584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
762*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
7636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
7646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
7656584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
7666584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 20, 30, 2030);
7676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
7686584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
7696584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
770*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
7716584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 35, 3035);
7726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 30, 2030);
7736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
7746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
7756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
7766584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
7776584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
778*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
7796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
7806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
7816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
7826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 20, 30, 2030);
7836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
7846584d1f9SCarlos Alberto Enciso 
7856584d1f9SCarlos Alberto Enciso   Point = 35;
7866584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
787*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
7886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
7896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
7906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
7916584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
7926584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
7936584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
7946584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
795*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
7966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 35, 3035);
7976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
7986584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
7996584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
8006584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
8016584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8026584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
803*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
8046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
8076584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 25, 41, 2541);
8086584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
8096584d1f9SCarlos Alberto Enciso 
8106584d1f9SCarlos Alberto Enciso   Point = 39;
8116584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
812*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8156584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
8166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
8176584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
8186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 15, 40, 1540);
8196584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8206584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
821*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
8236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
8246584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
8256584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
8266584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 15, 40, 1540);
8276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 10, 85, 1085);
8286584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8296584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
830*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8326584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8336584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
8346584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
8356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
8366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 39, 50, 3950);
8376584d1f9SCarlos Alberto Enciso 
8386584d1f9SCarlos Alberto Enciso   Point = 50;
8396584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
840*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8416584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
8446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
8456584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
8466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 50, 75, 5075);
8476584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8486584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
849*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8506584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
8516584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
8526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
8536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
8546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 50, 75, 5075);
8556584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 10, 85, 1085);
8566584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8576584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
858*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
8596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
8626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
8636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
8646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 39, 50, 3950);
8656584d1f9SCarlos Alberto Enciso 
8666584d1f9SCarlos Alberto Enciso   Point = 55;
8676584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
868*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
8696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8706584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8716584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
8726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
8736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
8746584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8756584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
876*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
8776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 55, 61, 5561);
8786584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
8796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
8806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
8816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
8826584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
8836584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
884*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
8856584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8866584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
8876584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
8886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 49, 65, 4965);
8896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
8906584d1f9SCarlos Alberto Enciso 
8916584d1f9SCarlos Alberto Enciso   Point = 61;
8926584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
893*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
8946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
8956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
8966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
8976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 55, 61, 5561);
8986584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 60, 70, 6070);
8996584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9006584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
901*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 55, 61, 5561);
9036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 60, 70, 6070);
9046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
9056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
9066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
9076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9086584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
909*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
9126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
9136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 60, 70, 6070);
9146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
9156584d1f9SCarlos Alberto Enciso 
9166584d1f9SCarlos Alberto Enciso   Point = 31;
9176584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
918*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9196584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9206584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
9216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
9226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
9236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
9246584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9256584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
926*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 35, 3035);
9286584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
9296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
9306584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
9316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
9326584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9336584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
934*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
9376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
9386584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 25, 41, 2541);
9396584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
9406584d1f9SCarlos Alberto Enciso 
9416584d1f9SCarlos Alberto Enciso   Point = 56;
9426584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
943*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9456584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
9466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
9476584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
9486584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
9496584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9506584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
951*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 55, 61, 5561);
9536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
9546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
9556584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
9566584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
9576584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9586584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
959*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
9606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
9626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
9636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 49, 65, 4965);
9646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
9656584d1f9SCarlos Alberto Enciso 
9666584d1f9SCarlos Alberto Enciso   Point = 12;
9676584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
968*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
9696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9706584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 11, 16, 1116);
9716584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 12, 21, 1221);
9726584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9736584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
974*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
9756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 11, 16, 1116);
9766584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 12, 21, 1221);
9776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 85, 1085);
9786584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9796584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
980*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
9816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 12, 21, 1221);
9836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 11, 16, 1116);
9846584d1f9SCarlos Alberto Enciso 
9856584d1f9SCarlos Alberto Enciso   Point = 21;
9866584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
987*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
9886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
9896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
9906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 30, 2030);
9916584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 12, 21, 1221);
9926584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
9936584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
994*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
9956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 12, 21, 1221);
9966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 30, 2030);
9976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
9986584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
9996584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10006584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1001*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
10046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 30, 2030);
10056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 12, 21, 1221);
10066584d1f9SCarlos Alberto Enciso 
10076584d1f9SCarlos Alberto Enciso   Point = 25;
10086584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1009*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
10126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 30, 2030);
10136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 25, 41, 2541);
10146584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10156584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1016*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10176584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 20, 30, 2030);
10186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
10196584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
10206584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
10216584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10226584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1023*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10246584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10256584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
10266584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
10276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 20, 30, 2030);
10286584d1f9SCarlos Alberto Enciso 
10296584d1f9SCarlos Alberto Enciso   Point = 41;
10306584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1031*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10326584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10336584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
10346584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
10366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
10376584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10386584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1039*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10406584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
10416584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
10426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
10446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
10456584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10466584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1047*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10486584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10496584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
10506584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10516584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 25, 41, 2541);
10526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 39, 50, 3950);
10536584d1f9SCarlos Alberto Enciso 
10546584d1f9SCarlos Alberto Enciso   Point = 49;
10556584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1056*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10576584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10586584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
10596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
10616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
10626584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10636584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1064*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10656584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
10666584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
10676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
10696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
10706584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10716584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1072*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
10736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
10756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
10766584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 49, 65, 4965);
10776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 39, 50, 3950);
10786584d1f9SCarlos Alberto Enciso 
10796584d1f9SCarlos Alberto Enciso   Point = 65;
10806584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1081*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
10846584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 60, 70, 6070);
10856584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 49, 65, 4965);
10866584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10876584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1088*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 60, 70, 6070);
10906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
10916584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
10926584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
10936584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
10946584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1095*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
10966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
10976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
10986584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
10996584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 60, 70, 6070);
11006584d1f9SCarlos Alberto Enciso 
11016584d1f9SCarlos Alberto Enciso   Point = 71;
11026584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1103*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
11066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
11076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11086584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1109*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 71, 79, 7179);
11116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
11126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 85, 1085);
11136584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11146584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1115*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11176584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
11186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
11196584d1f9SCarlos Alberto Enciso 
11206584d1f9SCarlos Alberto Enciso   Point = 79;
11216584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1122*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11246584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 74, 80, 7480);
11256584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
11266584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11276584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1128*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 74, 80, 7480);
11306584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 71, 79, 7179);
11316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 85, 1085);
11326584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11336584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1134*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
11356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 71, 79, 7179);
11376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 74, 80, 7480);
11386584d1f9SCarlos Alberto Enciso 
11396584d1f9SCarlos Alberto Enciso   Point = 11;
11406584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1141*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
11426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 11, 16, 1116);
11446584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11456584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1146*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
11476584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 11, 16, 1116);
11486584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 85, 1085);
11496584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11506584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1151*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
11526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 11, 16, 1116);
11546584d1f9SCarlos Alberto Enciso 
11556584d1f9SCarlos Alberto Enciso   Point = 16;
11566584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1157*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11586584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
11606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 12, 21, 1221);
11616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 11, 16, 1116);
11626584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11636584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1164*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11656584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 11, 16, 1116);
11666584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 12, 21, 1221);
11676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
11686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
11696584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11706584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1171*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
11746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 12, 21, 1221);
11756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 11, 16, 1116);
11766584d1f9SCarlos Alberto Enciso 
11776584d1f9SCarlos Alberto Enciso   Point = 20;
11786584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1179*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
11826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 30, 2030);
11836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 12, 21, 1221);
11846584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11856584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1186*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11876584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 12, 21, 1221);
11886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 30, 2030);
11896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
11906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
11916584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
11926584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1193*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
11946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
11956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
11966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 20, 30, 2030);
11976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 12, 21, 1221);
11986584d1f9SCarlos Alberto Enciso 
11996584d1f9SCarlos Alberto Enciso   Point = 30;
12006584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1201*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
12046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
12056584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 20, 30, 2030);
12066584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
12076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12086584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1209*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 30, 35, 3035);
12116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 20, 30, 2030);
12126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
12136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
12146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
12156584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12166584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1217*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12196584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
12206584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 25, 41, 2541);
12216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 20, 30, 2030);
12226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 30, 35, 3035);
12236584d1f9SCarlos Alberto Enciso 
12246584d1f9SCarlos Alberto Enciso   Point = 36;
12256584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1226*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12286584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
12296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
12306584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 25, 41, 2541);
12316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 15, 40, 1540);
12326584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12336584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1234*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 25, 41, 2541);
12366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 36, 54, 3654);
12376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
12386584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 15, 40, 1540);
12396584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
12406584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12416584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1242*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
12456584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
12466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
12476584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
12486584d1f9SCarlos Alberto Enciso 
12496584d1f9SCarlos Alberto Enciso   Point = 54;
12506584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1251*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
12546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
12556584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 49, 65, 4965);
12566584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 50, 75, 5075);
12576584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12586584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1259*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 49, 65, 4965);
12616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 36, 54, 3654);
12626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 31, 56, 3156);
12636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
12646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
12656584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12666584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1267*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
12706584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
12716584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
12726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
12736584d1f9SCarlos Alberto Enciso 
12746584d1f9SCarlos Alberto Enciso   Point = 60;
12756584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1276*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12786584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
12796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
12806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 55, 61, 5561);
12816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 60, 70, 6070);
12826584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12836584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1284*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12856584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 55, 61, 5561);
12866584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 60, 70, 6070);
12876584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
12886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 50, 75, 5075);
12896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
12906584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
12916584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1292*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
12936584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
12946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
12956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 49, 65, 4965);
12966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 60, 70, 6070);
12976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 55, 61, 5561);
12986584d1f9SCarlos Alberto Enciso 
12996584d1f9SCarlos Alberto Enciso   Point = 70;
13006584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1301*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
13026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
13046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 60, 70, 6070);
13056584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13066584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1307*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
13086584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 60, 70, 6070);
13096584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
13106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 10, 85, 1085);
13116584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13126584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1313*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 3u);
13146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13156584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
13166584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 60, 70, 6070);
13176584d1f9SCarlos Alberto Enciso 
13186584d1f9SCarlos Alberto Enciso   Point = 74;
13196584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1320*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13226584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
13236584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
13246584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 74, 80, 7480);
13256584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13266584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1327*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13286584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 74, 80, 7480);
13296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 71, 79, 7179);
13306584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
13316584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
13326584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13336584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1334*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
13376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
13386584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 74, 80, 7480);
13396584d1f9SCarlos Alberto Enciso 
13406584d1f9SCarlos Alberto Enciso   Point = 80;
13416584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1342*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
13436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 74, 80, 7480);
13456584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13466584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1347*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
13486584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 74, 80, 7480);
13496584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 10, 85, 1085);
13506584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13516584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1352*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 2u);
13536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 74, 80, 7480);
13556584d1f9SCarlos Alberto Enciso 
13566584d1f9SCarlos Alberto Enciso   Point = 15;
13576584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1358*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
13616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 11, 16, 1116);
13626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 12, 21, 1221);
13636584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13646584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1365*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13666584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 11, 16, 1116);
13676584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 12, 21, 1221);
13686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
13696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
13706584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13716584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1372*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
13736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13746584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 15, 40, 1540);
13756584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 12, 21, 1221);
13766584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 11, 16, 1116);
13776584d1f9SCarlos Alberto Enciso 
13786584d1f9SCarlos Alberto Enciso   Point = 40;
13796584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1380*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
13816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
13826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
13836584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
13846584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
13856584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
13866584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 15, 40, 1540);
13876584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13886584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1389*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
13906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
13916584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 25, 41, 2541);
13926584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
13936584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
13946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 15, 40, 1540);
13956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 10, 85, 1085);
13966584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
13976584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1398*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
13996584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14006584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14016584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 15, 40, 1540);
14026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
14036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 25, 41, 2541);
14046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 39, 50, 3950);
14056584d1f9SCarlos Alberto Enciso 
14066584d1f9SCarlos Alberto Enciso   Point = 43;
14076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1408*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14096584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14106584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14116584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14126584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
14136584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 43, 45, 4345);
14146584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14156584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1416*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14176584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 43, 45, 4345);
14186584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 39, 50, 3950);
14196584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14206584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
14216584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
14226584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14236584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1424*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14256584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14266584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14276584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14286584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
14296584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 43, 45, 4345);
14306584d1f9SCarlos Alberto Enciso 
14316584d1f9SCarlos Alberto Enciso   Point = 45;
14326584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1433*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14346584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14356584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14366584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14376584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
14386584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 43, 45, 4345);
14396584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14406584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1441*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14426584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 43, 45, 4345);
14436584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 39, 50, 3950);
14446584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14456584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
14466584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 10, 85, 1085);
14476584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14486584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1449*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 5u);
14506584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14516584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14526584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14536584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
14546584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 43, 45, 4345);
14556584d1f9SCarlos Alberto Enciso 
14566584d1f9SCarlos Alberto Enciso   Point = 50;
14576584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1458*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
14596584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14606584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14616584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14626584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 39, 50, 3950);
14636584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
14646584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 50, 75, 5075);
14656584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14666584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1467*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
14686584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 39, 50, 3950);
14696584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 49, 65, 4965);
14706584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 36, 54, 3654);
14716584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 31, 56, 3156);
14726584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 50, 75, 5075);
14736584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 10, 85, 1085);
14746584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14756584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1476*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 6u);
14776584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14786584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 31, 56, 3156);
14796584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
14806584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 36, 54, 3654);
14816584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[4], 49, 65, 4965);
14826584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[5], 39, 50, 3950);
14836584d1f9SCarlos Alberto Enciso 
14846584d1f9SCarlos Alberto Enciso   Point = 75;
14856584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1486*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
14876584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
14886584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
14896584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 74, 80, 7480);
14906584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 71, 79, 7179);
14916584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14926584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Ascending);
1493*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
14946584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 74, 80, 7480);
14956584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 71, 79, 7179);
14966584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 50, 75, 5075);
14976584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 10, 85, 1085);
14986584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
14996584d1f9SCarlos Alberto Enciso   Tree.sortIntervals(Intervals, UUSorting::Descending);
1500*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 4u);
15016584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
15026584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[1], 50, 75, 5075);
15036584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[2], 71, 79, 7179);
15046584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[3], 74, 80, 7480);
15056584d1f9SCarlos Alberto Enciso 
15066584d1f9SCarlos Alberto Enciso   Point = 10;
15076584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1508*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
15096584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
15106584d1f9SCarlos Alberto Enciso 
15116584d1f9SCarlos Alberto Enciso   Point = 85;
15126584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
1513*bab129f2SCarlos Alberto Enciso   ASSERT_EQ(Intervals.size(), 1u);
15146584d1f9SCarlos Alberto Enciso   checkData(Point, Intervals[0], 10, 85, 1085);
15156584d1f9SCarlos Alberto Enciso 
15166584d1f9SCarlos Alberto Enciso   // Invalid interval values.
15176584d1f9SCarlos Alberto Enciso   Point = 5;
15186584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
15196584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
15206584d1f9SCarlos Alberto Enciso   Point = 90;
15216584d1f9SCarlos Alberto Enciso   Intervals = Tree.getContaining(Point);
15226584d1f9SCarlos Alberto Enciso   EXPECT_TRUE(Intervals.empty());
15236584d1f9SCarlos Alberto Enciso }
15246584d1f9SCarlos Alberto Enciso 
15256584d1f9SCarlos Alberto Enciso // Four items tree tests. Overlapping. Check mapped values and iterators.
TEST(IntervalTreeTest,MappedValuesIteratorsTree)15266584d1f9SCarlos Alberto Enciso TEST(IntervalTreeTest, MappedValuesIteratorsTree) {
15276584d1f9SCarlos Alberto Enciso   UUAlloc Allocator;
15286584d1f9SCarlos Alberto Enciso   UUTree Tree(Allocator);
15296584d1f9SCarlos Alberto Enciso   UUPoint Point;
15306584d1f9SCarlos Alberto Enciso 
15316584d1f9SCarlos Alberto Enciso   // [10, 20] <- (1020)
15326584d1f9SCarlos Alberto Enciso   // [15, 25] <- (1525)
15336584d1f9SCarlos Alberto Enciso   // [50, 60] <- (5060)
15346584d1f9SCarlos Alberto Enciso   // [55, 65] <- (5565)
15356584d1f9SCarlos Alberto Enciso   //
15366584d1f9SCarlos Alberto Enciso   //    [10.........20]
15376584d1f9SCarlos Alberto Enciso   //          [15.........25]
15386584d1f9SCarlos Alberto Enciso   //                            [50.........60]
15396584d1f9SCarlos Alberto Enciso   //                                  [55.........65]
15406584d1f9SCarlos Alberto Enciso   Tree.insert(10, 20, 1020);
15416584d1f9SCarlos Alberto Enciso   Tree.insert(15, 25, 1525);
15426584d1f9SCarlos Alberto Enciso   Tree.insert(50, 60, 5060);
15436584d1f9SCarlos Alberto Enciso   Tree.insert(55, 65, 5565);
15446584d1f9SCarlos Alberto Enciso   Tree.create();
15456584d1f9SCarlos Alberto Enciso 
15466584d1f9SCarlos Alberto Enciso   // Iterators.
15476584d1f9SCarlos Alberto Enciso   {
15486584d1f9SCarlos Alberto Enciso     // Start searching for '10'.
15496584d1f9SCarlos Alberto Enciso     Point = 10;
15506584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15516584d1f9SCarlos Alberto Enciso     EXPECT_NE(Iter, Tree.find_end());
15526584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 10, 20, 1020);
15536584d1f9SCarlos Alberto Enciso     ++Iter;
15546584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15556584d1f9SCarlos Alberto Enciso   }
15566584d1f9SCarlos Alberto Enciso   {
15576584d1f9SCarlos Alberto Enciso     // Start searching for '15'.
15586584d1f9SCarlos Alberto Enciso     Point = 15;
15596584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15606584d1f9SCarlos Alberto Enciso     ASSERT_TRUE(Iter != Tree.find_end());
15616584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 15, 25, 1525);
15626584d1f9SCarlos Alberto Enciso     ++Iter;
15636584d1f9SCarlos Alberto Enciso     ASSERT_TRUE(Iter != Tree.find_end());
15646584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 10, 20, 1020);
15656584d1f9SCarlos Alberto Enciso     ++Iter;
15666584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15676584d1f9SCarlos Alberto Enciso   }
15686584d1f9SCarlos Alberto Enciso   {
15696584d1f9SCarlos Alberto Enciso     // Start searching for '20'.
15706584d1f9SCarlos Alberto Enciso     Point = 20;
15716584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15726584d1f9SCarlos Alberto Enciso     ASSERT_TRUE(Iter != Tree.find_end());
15736584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 15, 25, 1525);
15746584d1f9SCarlos Alberto Enciso     ++Iter;
15756584d1f9SCarlos Alberto Enciso     ASSERT_TRUE(Iter != Tree.find_end());
15766584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 10, 20, 1020);
15776584d1f9SCarlos Alberto Enciso     ++Iter;
15786584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15796584d1f9SCarlos Alberto Enciso   }
15806584d1f9SCarlos Alberto Enciso   {
15816584d1f9SCarlos Alberto Enciso     // Start searching for '25'.
15826584d1f9SCarlos Alberto Enciso     Point = 25;
15836584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15846584d1f9SCarlos Alberto Enciso     ASSERT_TRUE(Iter != Tree.find_end());
15856584d1f9SCarlos Alberto Enciso     checkData(Point, Iter, 15, 25, 1525);
15866584d1f9SCarlos Alberto Enciso     ++Iter;
15876584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15886584d1f9SCarlos Alberto Enciso   }
15896584d1f9SCarlos Alberto Enciso   // Invalid interval values.
15906584d1f9SCarlos Alberto Enciso   {
15916584d1f9SCarlos Alberto Enciso     Point = 5;
15926584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15936584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15946584d1f9SCarlos Alberto Enciso   }
15956584d1f9SCarlos Alberto Enciso   {
15966584d1f9SCarlos Alberto Enciso     Point = 45;
15976584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
15986584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
15996584d1f9SCarlos Alberto Enciso   }
16006584d1f9SCarlos Alberto Enciso   {
16016584d1f9SCarlos Alberto Enciso     Point = 70;
16026584d1f9SCarlos Alberto Enciso     UUIter Iter = Tree.find(Point);
16036584d1f9SCarlos Alberto Enciso     EXPECT_EQ(Iter, Tree.find_end());
16046584d1f9SCarlos Alberto Enciso   }
16056584d1f9SCarlos Alberto Enciso }
16066584d1f9SCarlos Alberto Enciso 
16076584d1f9SCarlos Alberto Enciso } // namespace
1608