39TEST(DisplayListRTree, ManySizes) {
45 const int kMaxN = 250;
48 for (
int i = 0;
i <= kMaxN;
i++) {
52 std::vector<int> results;
53 for (
int N = 0; N <= kMaxN; N++) {
55 auto desc =
"node count = " + std::to_string(N);
58 EXPECT_EQ(tree.
id(-1), -1) << desc;
60 EXPECT_EQ(tree.
id(N), -1) << desc;
64 EXPECT_EQ(results.size(), 0u) << desc;
68 EXPECT_EQ(results.size(), 0u) << desc;
70 EXPECT_EQ(results.size(), 1u) << desc;
71 EXPECT_EQ(results[0], 0) << desc;
72 EXPECT_EQ(tree.
id(results[0]), ids[0]) << desc;
73 EXPECT_EQ(tree.
bounds(results[0]), rects[0]) << desc;
74 for (
int i = 1;
i < N;
i++) {
77 tree.
search(query, &results);
78 EXPECT_EQ(results.size(), 1u) << desc;
79 EXPECT_EQ(results[0],
i) << desc;
80 EXPECT_EQ(tree.
id(results[0]), ids[
i]) << desc;
81 EXPECT_EQ(tree.
bounds(results[0]), rects[
i]) << desc;
83 EXPECT_EQ(list.size(), 1u);
84 EXPECT_EQ(list.front(), rects[
i]);
90TEST(DisplayListRTree, HugeSize) {
99 for (
int i = 0;
i < N;
i++) {
106 EXPECT_EQ(tree.
id(-1), -1);
108 EXPECT_EQ(tree.
id(N), -1);
110 std::vector<int> results;
112 EXPECT_EQ(results.size(), 0u);
113 for (
int i = 0;
i < N;
i++) {
116 EXPECT_EQ(results.size(), 1u);
117 EXPECT_EQ(results[0],
i);
118 EXPECT_EQ(tree.
id(results[0]), ids[
i]);
119 EXPECT_EQ(tree.
bounds(results[0]), rects[
i]);
131 const int N = ROWS * COLS;
134 for (
int r = 0; r < ROWS; r++) {
136 for (
int c = 0; c < COLS; c++) {
138 int i = r * COLS + c;
146 EXPECT_EQ(tree.
id(-1), -1);
148 EXPECT_EQ(tree.
id(N), -1);
150 std::vector<int> results;
152 EXPECT_EQ(results.size(), 0u);
154 for (
int r = 0; r < ROWS; r++) {
156 for (
int c = 0; c < COLS; c++) {
158 int i = r * COLS + c;
160 "row " + std::to_string(r + 1) +
", col " + std::to_string(c + 1);
163 tree.
search(query, &results);
164 EXPECT_EQ(results.size(), 1u) << desc;
165 EXPECT_EQ(results[0],
i) << desc;
166 EXPECT_EQ(tree.
id(results[0]), ids[
i]) << desc;
167 EXPECT_EQ(tree.
bounds(results[0]), rects[
i]) << desc;
169 EXPECT_EQ(list.size(), 1u);
170 EXPECT_EQ(list.front(), rects[
i]);
174 for (
int r = 1; r < ROWS; r++) {
176 for (
int c = 1; c < COLS; c++) {
179 "row " + std::to_string(r + 1) +
", col " + std::to_string(c + 1);
182 tree.
search(query, &results);
183 EXPECT_EQ(results.size(), 0u) << desc;
185 EXPECT_EQ(list.size(), 0u) << desc;
189 for (
int r = 1; r < ROWS; r++) {
191 for (
int c = 1; c < COLS; c++) {
194 int i = r * COLS + c;
196 "row " + std::to_string(r + 1) +
", col " + std::to_string(c + 1);
199 tree.
search(query, &results);
200 EXPECT_EQ(results.size(), 4u) << desc;
203 EXPECT_EQ(results[0],
i - COLS - 1) << desc;
204 EXPECT_EQ(tree.
id(results[0]), ids[
i - COLS - 1]) << desc;
205 EXPECT_EQ(tree.
bounds(results[0]), rects[
i - COLS - 1]) << desc;
208 EXPECT_EQ(results[1],
i - COLS) << desc;
209 EXPECT_EQ(tree.
id(results[1]), ids[
i - COLS]) << desc;
210 EXPECT_EQ(tree.
bounds(results[1]), rects[
i - COLS]) << desc;
213 EXPECT_EQ(results[2],
i - 1) << desc;
214 EXPECT_EQ(tree.
id(results[2]), ids[
i - 1]) << desc;
215 EXPECT_EQ(tree.
bounds(results[2]), rects[
i - 1]) << desc;
218 EXPECT_EQ(results[3],
i) << desc;
219 EXPECT_EQ(tree.
id(results[3]), ids[
i]) << desc;
220 EXPECT_EQ(tree.
bounds(results[3]), rects[
i]) << desc;
223 EXPECT_EQ(list.size(), 4u);
224 list.remove(rects[
i - COLS - 1]);
225 list.remove(rects[
i - COLS]);
226 list.remove(rects[
i - 1]);
227 list.remove(rects[
i]);
228 EXPECT_EQ(list.size(), 0u);
233TEST(DisplayListRTree, OverlappingRects) {
256 for (
int r = 0; r < 3; r++) {
258 for (
int c = 0; c < 3; c++) {
265 for (
int r = 0; r < 3; r++) {
267 for (
int c = 0; c < 3; c++) {
271 EXPECT_EQ(list.size(), 1u);
272 EXPECT_EQ(list.front(), rects[r * 3 + c]);
276 for (
int r = 0; r < 3; r++) {
282 EXPECT_EQ(list.size(), 1u);
286 for (
int c = 0; c < 3; c++) {
292 EXPECT_EQ(list.size(), 1u);
298 EXPECT_EQ(list.size(), 1u);