17 #include "gmock/gmock.h"
18 #include "gtest/gtest.h"
28 for (
auto it =
map.mappings_.begin();
it !=
map.mappings_.end(); ++
it) {
30 last_end =
map.RangeEnd(
it);
41 std::vector<std::string>
keys;
47 const std::vector<Row>& rows) {
53 const auto& row = rows[
i];
70 const std::vector<Entry>& entries) {
71 auto iter =
map.mappings_.begin();
73 for (;
i < entries.size() &&
iter !=
map.mappings_.end(); ++
i, ++
iter) {
74 const auto& entry = entries[
i];
86 [&
i, &entries](
const std::vector<std::string>&
keys,
89 const auto& entry = entries[
i];
112 AssertMainMapEquals({});
114 map_.AddRange(4, 3,
"foo");
116 AssertMainMapEquals({
117 {4, 7, kNoTranslation,
"foo"}
120 map_.AddRange(30, 5,
"bar");
122 AssertMainMapEquals({
123 {4, 7, kNoTranslation,
"foo"},
124 {30, 35, kNoTranslation,
"bar"}
127 map_.AddRange(50, 0,
"baz");
129 AssertMainMapEquals({
130 {4, 7, kNoTranslation,
"foo"},
131 {30, 35, kNoTranslation,
"bar"}
134 map_.AddRange(20, 5,
"baz");
135 map_.AddRange(25, 5,
"baz2");
136 map_.AddRange(40, 5,
"quux");
138 AssertMainMapEquals({
139 {4, 7, kNoTranslation,
"foo"},
140 {20, 25, kNoTranslation,
"baz"},
141 {25, 30, kNoTranslation,
"baz2"},
142 {30, 35, kNoTranslation,
"bar"},
143 {40, 45, kNoTranslation,
"quux"}
146 map_.AddRange(21, 25,
"overlapping");
148 AssertMainMapEquals({
149 {4, 7, kNoTranslation,
"foo"},
150 {20, 25, kNoTranslation,
"baz"},
151 {25, 30, kNoTranslation,
"baz2"},
152 {30, 35, kNoTranslation,
"bar"},
153 {35, 40, kNoTranslation,
"overlapping"},
154 {40, 45, kNoTranslation,
"quux"},
155 {45, 46, kNoTranslation,
"overlapping"}
158 map_.AddRange(21, 25,
"overlapping no-op");
160 AssertMainMapEquals({
161 {4, 7, kNoTranslation,
"foo"},
162 {20, 25, kNoTranslation,
"baz"},
163 {25, 30, kNoTranslation,
"baz2"},
164 {30, 35, kNoTranslation,
"bar"},
165 {35, 40, kNoTranslation,
"overlapping"},
166 {40, 45, kNoTranslation,
"quux"},
167 {45, 46, kNoTranslation,
"overlapping"}
170 map_.AddRange(0, 100,
"overlap everything");
172 AssertMainMapEquals({
173 {0, 4, kNoTranslation,
"overlap everything"},
174 {4, 7, kNoTranslation,
"foo"},
175 {7, 20, kNoTranslation,
"overlap everything"},
176 {20, 25, kNoTranslation,
"baz"},
177 {25, 30, kNoTranslation,
"baz2"},
178 {30, 35, kNoTranslation,
"bar"},
179 {35, 40, kNoTranslation,
"overlapping"},
180 {40, 45, kNoTranslation,
"quux"},
181 {45, 46, kNoTranslation,
"overlapping"},
182 {46, 100, kNoTranslation,
"overlap everything"},
187 map_.AddRange(5, kUnknownSize,
"foo");
189 AssertMainMapEquals({
193 map_.AddRange(100, 15,
"bar");
194 map_.AddRange(200, kUnknownSize,
"baz");
196 AssertMainMapEquals({
197 {5, 100, kNoTranslation,
"foo"},
198 {100, 115, kNoTranslation,
"bar"},
202 map2_.AddRange(5, 110,
"base0");
203 map2_.AddRange(200, 50,
"base1");
205 AssertRollupEquals({&map2_, &map_}, {
206 {{
"base0",
"foo"}, 5, 100},
207 {{
"base0",
"bar"}, 100, 115},
208 {{
"base1",
"baz"}, 200, 250},
216 map_.AddRange(100, kUnknownSize,
"foo");
217 map_.AddRange(95, 10,
"bar");
218 AssertMainMapEquals({
219 {95, 100, kNoTranslation,
"bar"},
220 {100, 105, kNoTranslation,
"foo"},
225 map_.AddRange(100, kUnknownSize,
"foo");
226 map_.AddRange(150, kUnknownSize,
"bar");
229 map_.AddRange(100, 100,
"baz");
230 AssertMainMapEquals({
231 {100, 150, kNoTranslation,
"foo"},
232 {150, 200, kNoTranslation,
"bar"},
237 map_.AddRange(100, kUnknownSize,
"foo");
238 map_.AddRange(150, 100,
"bar");
241 map_.AddRange(100, 100,
"baz");
242 AssertMainMapEquals({
243 {100, 150, kNoTranslation,
"foo"},
244 {150, 250, kNoTranslation,
"bar"},
249 map_.AddRange(100, 20,
"foo");
250 map_.AddRange(120, 20,
"bar");
251 map_.AddRange(100, 15,
"baz");
252 AssertMainMapEquals({
253 {100, 120, kNoTranslation,
"foo"},
254 {120, 140, kNoTranslation,
"bar"},
259 map_.AddRange(100, kUnknownSize,
"foo");
260 map_.AddRange(200, 50,
"bar");
261 map_.AddRange(150, 10,
"baz");
262 AssertMainMapEquals({
263 {100, 150, kNoTranslation,
"foo"},
264 {150, 160, kNoTranslation,
"baz"},
265 {200, 250, kNoTranslation,
"bar"},
270 map_.AddRange(100, kUnknownSize,
"foo");
271 map_.AddRange(200, kUnknownSize,
"bar");
272 map_.AddRange(150, 10,
"baz");
273 AssertMainMapEquals({
274 {100, 150, kNoTranslation,
"foo"},
275 {150, 160, kNoTranslation,
"baz"},
281 map_.AddRange(100, kUnknownSize,
"foo");
282 map_.AddRange(200, 50,
"bar");
283 map_.AddRange(150, 10,
"baz");
284 AssertMainMapEquals({
285 {100, 150, kNoTranslation,
"foo"},
286 {150, 160, kNoTranslation,
"baz"},
287 {200, 250, kNoTranslation,
"bar"},
310 map_.AddDualRange(20, 5, 120,
"foo");
312 AssertMainMapEquals({
316 ASSERT_TRUE(map2_.AddRangeWithTranslation(20, 5,
"translate me", map_,
false,
320 AssertMapEquals(map2_, {
321 {20, 25, kNoTranslation,
"translate me"}
323 AssertMapEquals(map3_, {
324 {120, 125, kNoTranslation,
"translate me"}
327 map_.AddDualRange(1000, 30, 1100,
"bar");
328 ASSERT_TRUE(map2_.AddRangeWithTranslation(1000, 5,
"translate me2", map_,
330 AssertMapEquals(map2_, {
331 {20, 25, kNoTranslation,
"translate me"},
332 {1000, 1005, kNoTranslation,
"translate me2"}
334 AssertMapEquals(map3_, {
335 {120, 125, kNoTranslation,
"translate me"},
336 {1100, 1105, kNoTranslation,
"translate me2"}
340 ASSERT_FALSE(map2_.AddRangeWithTranslation(15, 8,
"translate me", map_,
false,
344 ASSERT_FALSE(map2_.AddRangeWithTranslation(22, 15,
"translate me", map_,
348 ASSERT_FALSE(map2_.AddRangeWithTranslation(20, 1000,
"translate me", map_,
353 map_.AddRange(5, 5,
"foo");
354 map_.AddDualRange(20, 5, 120,
"bar");
355 map_.AddRange(25, 5,
"baz");
356 map_.AddDualRange(30, 5, 130,
"quux");
358 AssertMainMapEquals({
359 {5, 10, kNoTranslation,
"foo"},
360 {20, 25, 120,
"bar"},
361 {25, 30, kNoTranslation,
"baz"},
362 {30, 35, 130,
"quux"}
365 ASSERT_TRUE(map2_.AddRangeWithTranslation(20, 15,
"translate me", map_,
false,
368 AssertMapEquals(map2_, {
369 {20, 25, kNoTranslation,
"translate me"},
370 {25, 30, kNoTranslation,
"translate me"},
371 {30, 35, kNoTranslation,
"translate me"}
373 AssertMapEquals(map3_, {
374 {120, 125, kNoTranslation,
"translate me"},
375 {130, 135, kNoTranslation,
"translate me"}
380 map_.AddDualRange(20, 10, 120,
"foo");
382 AssertMainMapEquals({
386 map2_.AddRangeWithTranslation(25, kUnknownSize,
"translate me", map_,
false,
389 AssertMapEquals(map2_, {
390 {25,
UINT64_MAX, kNoTranslation,
"translate me"}
392 AssertMapEquals(map3_, {
393 {125,
UINT64_MAX, kNoTranslation,
"translate me"}
396 map2_.AddRange(20, 10,
"fallback");
398 AssertRollupEquals({&map_, &map2_}, {
399 {{
"foo",
"fallback"}, 20, 25},
400 {{
"foo",
"translate me"}, 25, 30},