RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
PointTest.cpp
Go to the documentation of this file.
1/*
2 RawSpeed - RAW file decoder.
3
4 Copyright (C) 2017 Roman Lebedev
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; withexpected even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19*/
20
21#include "adt/Point.h"
22#include <algorithm>
23#include <iterator>
24#include <limits>
25#include <ostream>
26#include <string>
27#include <tuple>
28#include <utility>
29#include <gtest/gtest.h>
30
32using std::make_pair;
33using std::move;
34using std::numeric_limits;
35using std::pair;
36using std::tuple;
37
38namespace rawspeed {
39
40static ::std::ostream& operator<<(::std::ostream& os, const iPoint2D p) {
41 return os << "(" << p.x << ", " << p.y << ")";
42}
43
44} // namespace rawspeed
45
46namespace rawspeed_test {
47
48namespace {
49
51 numeric_limits<iPoint2D::value_type>::max();
53 numeric_limits<iPoint2D::value_type>::min();
58
59TEST(PointTest, Constructor) {
60 int x = -10, y = 15;
61 ASSERT_NO_THROW({
62 iPoint2D a;
63 ASSERT_EQ(a.x, 0);
64 ASSERT_EQ(a.y, 0);
65 });
66 ASSERT_NO_THROW({
67 iPoint2D a(x, y);
68 ASSERT_EQ(a.x, x);
69 ASSERT_EQ(a.y, y);
70 });
71 ASSERT_NO_THROW({
72 const iPoint2D a(x, y);
73 iPoint2D b(a);
74 ASSERT_EQ(b.x, x);
75 ASSERT_EQ(b.y, y);
76 });
77 ASSERT_NO_THROW({
78 iPoint2D a(x, y);
79 iPoint2D b(a);
80 ASSERT_EQ(b.x, x);
81 ASSERT_EQ(b.y, y);
82 });
83 ASSERT_NO_THROW({
84 const iPoint2D a(x, y);
85 iPoint2D b(std::move(a));
86 ASSERT_EQ(b.x, x);
87 ASSERT_EQ(b.y, y);
88 });
89 ASSERT_NO_THROW({
90 iPoint2D a(x, y);
91 iPoint2D b(std::move(a));
92 ASSERT_EQ(b.x, x);
93 ASSERT_EQ(b.y, y);
94 });
95}
96
97TEST(PointTest, AssignmentConstructor) {
98 int x = -10, y = 15;
99 ASSERT_NO_THROW({
100 iPoint2D a(x, y);
101 iPoint2D b(666, 777);
102 b = a;
103 ASSERT_EQ(b.x, x);
104 ASSERT_EQ(b.y, y);
105 });
106 ASSERT_NO_THROW({
107 const iPoint2D a(x, y);
108 iPoint2D b(666, 777);
109 b = a;
110 ASSERT_EQ(b.x, x);
111 ASSERT_EQ(b.y, y);
112 });
113 ASSERT_NO_THROW({
114 iPoint2D a(x, y);
115 iPoint2D b(666, 777);
116 b = std::move(a);
117 ASSERT_EQ(b.x, x);
118 ASSERT_EQ(b.y, y);
119 });
120 ASSERT_NO_THROW({
121 const iPoint2D a(x, y);
122 iPoint2D b(666, 777);
123 b = std::move(a);
124 ASSERT_EQ(b.x, x);
125 ASSERT_EQ(b.y, y);
126 });
127}
128
129TEST(PointTest, EqualityOperator) {
130 ASSERT_NO_THROW({
131 const iPoint2D a(18, -12);
132 const iPoint2D b(18, -12);
133 ASSERT_EQ(a, b);
134 ASSERT_EQ(b, a);
135 });
136}
137
138TEST(PointTest, NonEqualityOperator) {
139 ASSERT_NO_THROW({
140 const iPoint2D a(777, 888);
141 const iPoint2D b(888, 777);
142 const iPoint2D c(128, 256);
143 ASSERT_NE(a, b);
144 ASSERT_NE(b, a);
145 ASSERT_NE(a, c);
146 ASSERT_NE(c, a);
147 ASSERT_NE(b, c);
148 ASSERT_NE(c, b);
149 });
150}
151
152using IntPair = pair<int, int>;
153using Six = std::tuple<IntPair, IntPair, IntPair>;
154class PointTest : public ::testing::TestWithParam<Six> {
155protected:
156 PointTest() = default;
157 virtual void SetUp() {
158 auto p = GetParam();
159
160 auto pair = std::get<0>(p);
161 a = iPoint2D(pair.first, pair.second);
162
163 pair = std::get<1>(p);
164 b = iPoint2D(pair.first, pair.second);
165
166 pair = std::get<2>(p);
167 c = iPoint2D(pair.first, pair.second);
168 }
169
173};
174
175/*
176#!/bin/bash
177for i in -5 0 5;
178do
179 for j in -5 0 5;
180 do
181 for k in -5 0 5;
182 do
183 for q in -5 0 5;
184 do
185 echo "make_tuple(make_pair($i, $j), make_pair($k, $q),
186make_pair($(($i+$k)), $(($j+$q)))),";
187 done;
188 done;
189 done;
190done;
191*/
192const Six valueSum[]{
193 make_tuple(make_pair(-5, -5), make_pair(-5, -5), make_pair(-10, -10)),
194 make_tuple(make_pair(-5, -5), make_pair(-5, 0), make_pair(-10, -5)),
195 make_tuple(make_pair(-5, -5), make_pair(-5, 5), make_pair(-10, 0)),
196 make_tuple(make_pair(-5, -5), make_pair(0, -5), make_pair(-5, -10)),
197 make_tuple(make_pair(-5, -5), make_pair(0, 0), make_pair(-5, -5)),
198 make_tuple(make_pair(-5, -5), make_pair(0, 5), make_pair(-5, 0)),
199 make_tuple(make_pair(-5, -5), make_pair(5, -5), make_pair(0, -10)),
200 make_tuple(make_pair(-5, -5), make_pair(5, 0), make_pair(0, -5)),
201 make_tuple(make_pair(-5, -5), make_pair(5, 5), make_pair(0, 0)),
202 make_tuple(make_pair(-5, 0), make_pair(-5, -5), make_pair(-10, -5)),
203 make_tuple(make_pair(-5, 0), make_pair(-5, 0), make_pair(-10, 0)),
204 make_tuple(make_pair(-5, 0), make_pair(-5, 5), make_pair(-10, 5)),
205 make_tuple(make_pair(-5, 0), make_pair(0, -5), make_pair(-5, -5)),
206 make_tuple(make_pair(-5, 0), make_pair(0, 0), make_pair(-5, 0)),
207 make_tuple(make_pair(-5, 0), make_pair(0, 5), make_pair(-5, 5)),
208 make_tuple(make_pair(-5, 0), make_pair(5, -5), make_pair(0, -5)),
209 make_tuple(make_pair(-5, 0), make_pair(5, 0), make_pair(0, 0)),
210 make_tuple(make_pair(-5, 0), make_pair(5, 5), make_pair(0, 5)),
211 make_tuple(make_pair(-5, 5), make_pair(-5, -5), make_pair(-10, 0)),
212 make_tuple(make_pair(-5, 5), make_pair(-5, 0), make_pair(-10, 5)),
213 make_tuple(make_pair(-5, 5), make_pair(-5, 5), make_pair(-10, 10)),
214 make_tuple(make_pair(-5, 5), make_pair(0, -5), make_pair(-5, 0)),
215 make_tuple(make_pair(-5, 5), make_pair(0, 0), make_pair(-5, 5)),
216 make_tuple(make_pair(-5, 5), make_pair(0, 5), make_pair(-5, 10)),
217 make_tuple(make_pair(-5, 5), make_pair(5, -5), make_pair(0, 0)),
218 make_tuple(make_pair(-5, 5), make_pair(5, 0), make_pair(0, 5)),
219 make_tuple(make_pair(-5, 5), make_pair(5, 5), make_pair(0, 10)),
220 make_tuple(make_pair(0, -5), make_pair(-5, -5), make_pair(-5, -10)),
221 make_tuple(make_pair(0, -5), make_pair(-5, 0), make_pair(-5, -5)),
222 make_tuple(make_pair(0, -5), make_pair(-5, 5), make_pair(-5, 0)),
223 make_tuple(make_pair(0, -5), make_pair(0, -5), make_pair(0, -10)),
224 make_tuple(make_pair(0, -5), make_pair(0, 0), make_pair(0, -5)),
225 make_tuple(make_pair(0, -5), make_pair(0, 5), make_pair(0, 0)),
226 make_tuple(make_pair(0, -5), make_pair(5, -5), make_pair(5, -10)),
227 make_tuple(make_pair(0, -5), make_pair(5, 0), make_pair(5, -5)),
228 make_tuple(make_pair(0, -5), make_pair(5, 5), make_pair(5, 0)),
229 make_tuple(make_pair(0, 0), make_pair(-5, -5), make_pair(-5, -5)),
230 make_tuple(make_pair(0, 0), make_pair(-5, 0), make_pair(-5, 0)),
231 make_tuple(make_pair(0, 0), make_pair(-5, 5), make_pair(-5, 5)),
232 make_tuple(make_pair(0, 0), make_pair(0, -5), make_pair(0, -5)),
233 make_tuple(make_pair(0, 0), make_pair(0, 0), make_pair(0, 0)),
234 make_tuple(make_pair(0, 0), make_pair(0, 5), make_pair(0, 5)),
235 make_tuple(make_pair(0, 0), make_pair(5, -5), make_pair(5, -5)),
236 make_tuple(make_pair(0, 0), make_pair(5, 0), make_pair(5, 0)),
237 make_tuple(make_pair(0, 0), make_pair(5, 5), make_pair(5, 5)),
238 make_tuple(make_pair(0, 5), make_pair(-5, -5), make_pair(-5, 0)),
239 make_tuple(make_pair(0, 5), make_pair(-5, 0), make_pair(-5, 5)),
240 make_tuple(make_pair(0, 5), make_pair(-5, 5), make_pair(-5, 10)),
241 make_tuple(make_pair(0, 5), make_pair(0, -5), make_pair(0, 0)),
242 make_tuple(make_pair(0, 5), make_pair(0, 0), make_pair(0, 5)),
243 make_tuple(make_pair(0, 5), make_pair(0, 5), make_pair(0, 10)),
244 make_tuple(make_pair(0, 5), make_pair(5, -5), make_pair(5, 0)),
245 make_tuple(make_pair(0, 5), make_pair(5, 0), make_pair(5, 5)),
246 make_tuple(make_pair(0, 5), make_pair(5, 5), make_pair(5, 10)),
247 make_tuple(make_pair(5, -5), make_pair(-5, -5), make_pair(0, -10)),
248 make_tuple(make_pair(5, -5), make_pair(-5, 0), make_pair(0, -5)),
249 make_tuple(make_pair(5, -5), make_pair(-5, 5), make_pair(0, 0)),
250 make_tuple(make_pair(5, -5), make_pair(0, -5), make_pair(5, -10)),
251 make_tuple(make_pair(5, -5), make_pair(0, 0), make_pair(5, -5)),
252 make_tuple(make_pair(5, -5), make_pair(0, 5), make_pair(5, 0)),
253 make_tuple(make_pair(5, -5), make_pair(5, -5), make_pair(10, -10)),
254 make_tuple(make_pair(5, -5), make_pair(5, 0), make_pair(10, -5)),
255 make_tuple(make_pair(5, -5), make_pair(5, 5), make_pair(10, 0)),
256 make_tuple(make_pair(5, 0), make_pair(-5, -5), make_pair(0, -5)),
257 make_tuple(make_pair(5, 0), make_pair(-5, 0), make_pair(0, 0)),
258 make_tuple(make_pair(5, 0), make_pair(-5, 5), make_pair(0, 5)),
259 make_tuple(make_pair(5, 0), make_pair(0, -5), make_pair(5, -5)),
260 make_tuple(make_pair(5, 0), make_pair(0, 0), make_pair(5, 0)),
261 make_tuple(make_pair(5, 0), make_pair(0, 5), make_pair(5, 5)),
262 make_tuple(make_pair(5, 0), make_pair(5, -5), make_pair(10, -5)),
263 make_tuple(make_pair(5, 0), make_pair(5, 0), make_pair(10, 0)),
264 make_tuple(make_pair(5, 0), make_pair(5, 5), make_pair(10, 5)),
265 make_tuple(make_pair(5, 5), make_pair(-5, -5), make_pair(0, 0)),
266 make_tuple(make_pair(5, 5), make_pair(-5, 0), make_pair(0, 5)),
267 make_tuple(make_pair(5, 5), make_pair(-5, 5), make_pair(0, 10)),
268 make_tuple(make_pair(5, 5), make_pair(0, -5), make_pair(5, 0)),
269 make_tuple(make_pair(5, 5), make_pair(0, 0), make_pair(5, 5)),
270 make_tuple(make_pair(5, 5), make_pair(0, 5), make_pair(5, 10)),
271 make_tuple(make_pair(5, 5), make_pair(5, -5), make_pair(10, 0)),
272 make_tuple(make_pair(5, 5), make_pair(5, 0), make_pair(10, 5)),
273 make_tuple(make_pair(5, 5), make_pair(5, 5), make_pair(10, 10)),
274};
275
276INSTANTIATE_TEST_SUITE_P(SumTest, PointTest, ::testing::ValuesIn(valueSum));
277TEST_P(PointTest, InPlaceAddTest1) {
278 ASSERT_NO_THROW({
279 a += b;
280 ASSERT_EQ(a, c);
281 });
282}
283TEST_P(PointTest, InPlaceAddTest2) {
284 ASSERT_NO_THROW({
285 b += a;
286 ASSERT_EQ(b, c);
287 });
288}
289TEST_P(PointTest, AddTest1) {
290 ASSERT_NO_THROW({
291 iPoint2D d = a + b;
292 ASSERT_EQ(d, c);
293 });
294}
295TEST_P(PointTest, AddTest2) {
296 ASSERT_NO_THROW({
297 iPoint2D d = b + a;
298 ASSERT_EQ(d, c);
299 });
300}
301
302TEST_P(PointTest, InPlaceSubTest1) {
303 ASSERT_NO_THROW({
304 c -= a;
305 ASSERT_EQ(c, b);
306 });
307}
308TEST_P(PointTest, InPlaceSubTest2) {
309 ASSERT_NO_THROW({
310 c -= b;
311 ASSERT_EQ(c, a);
312 });
313}
314TEST_P(PointTest, SubTest1) {
315 ASSERT_NO_THROW({
316 iPoint2D d = c - a;
317 ASSERT_EQ(d, b);
318 });
319}
320TEST_P(PointTest, SubTest2) {
321 ASSERT_NO_THROW({
322 iPoint2D d = c - b;
323 ASSERT_EQ(d, a);
324 });
325}
326
327using hasPositiveAreaType = std::tuple<int, int>;
329 : public ::testing::TestWithParam<hasPositiveAreaType> {
330protected:
332 virtual void SetUp() {
333 auto param = GetParam();
334 p = {std::get<0>(param), std::get<1>(param)};
335 }
336
338};
340 ::testing::Combine(::testing::Range(-2, 3),
341 ::testing::Range(-2, 3)));
343 {1, 1},
344 {1, 2},
345 {2, 1},
346 {2, 2},
347};
349 // If the function says it has positive area, it should be in the array.
350 // And the other way around.
351 ASSERT_NO_THROW({
352 ASSERT_EQ(p.hasPositiveArea(), std::find(std::cbegin(PositiveAreaData),
353 std::cend(PositiveAreaData),
354 p) != std::cend(PositiveAreaData));
355 });
356}
357
358using areaType = tuple<IntPair, iPoint2D::area_type>;
359class AreaTest : public ::testing::TestWithParam<areaType> {
360protected:
361 AreaTest() = default;
362 virtual void SetUp() {
363 auto param = GetParam();
364
365 auto pair = std::get<0>(param);
366 p = iPoint2D(pair.first, pair.second);
367
368 a = std::get<1>(param);
369 }
370
373};
374
375/*
376#!/bin/bash
377for i in -5 0 5;
378do
379 for j in -5 0 5;
380 do
381 k=$(($i*$j))
382 if [[ $k -lt 0 ]]
383 then
384 k=$((-$k));
385 fi;
386 echo "make_tuple(make_pair($i, $j), $k),";
387 done;
388done;
389*/
391 make_tuple(make_pair(-5, -5), 25),
392 make_tuple(make_pair(-5, 0), 0),
393 make_tuple(make_pair(-5, 5), 25),
394 make_tuple(make_pair(0, -5), 0),
395 make_tuple(make_pair(0, 0), 0),
396 make_tuple(make_pair(0, 5), 0),
397 make_tuple(make_pair(5, -5), 25),
398 make_tuple(make_pair(5, 0), 0),
399 make_tuple(make_pair(5, 5), 25),
400
401 make_tuple(make_pair(minVal, 0), 0),
402 make_tuple(make_pair(maxVal, 0), 0),
403 make_tuple(make_pair(minVal, -1), absMinVal),
404 make_tuple(make_pair(maxVal, -1), maxVal),
405 make_tuple(make_pair(minVal, 1), absMinVal),
406 make_tuple(make_pair(maxVal, 1), maxVal),
407
408 make_tuple(make_pair(0, minVal), 0),
409 make_tuple(make_pair(0, maxVal), 0),
410 make_tuple(make_pair(-1, minVal), absMinVal),
411 make_tuple(make_pair(-1, maxVal), maxVal),
412 make_tuple(make_pair(1, minVal), absMinVal),
413 make_tuple(make_pair(1, maxVal), maxVal),
414
415 make_tuple(make_pair(minVal, minVal), minAreaVal),
416 make_tuple(make_pair(minVal, maxVal), mixAreaVal),
417 make_tuple(make_pair(maxVal, minVal), mixAreaVal),
418 make_tuple(make_pair(maxVal, maxVal), maxAreaVal),
419
420};
423 ASSERT_NO_THROW({ ASSERT_EQ(p.area(), a); });
424}
425
427 std::tuple<IntPair, IntPair, bool, bool, bool, bool, bool>;
428class OperatorsTest : public ::testing::TestWithParam<operatorsType> {
429protected:
430 OperatorsTest() = default;
431 virtual void SetUp() {
432 auto p = GetParam();
433
434 auto pair = std::get<0>(p);
435 a = iPoint2D(pair.first, pair.second);
436
437 pair = std::get<1>(p);
438 b = iPoint2D(pair.first, pair.second);
439
440 eq = std::get<2>(p);
441 lt = std::get<3>(p);
442 gt = std::get<4>(p);
443 le = std::get<5>(p);
444 ge = std::get<6>(p);
445 }
446
449 bool eq;
450 bool lt;
451 bool gt;
452 bool le;
453 bool ge;
454};
455
456/*
457#!/bin/bash
458for i in -1 0 1;
459do
460 for j in -1 0 1;
461 do
462 for k in -1 0 1;
463 do
464 for q in -1 0 1;
465 do
466 echo "make_tuple(make_pair($i, $j), make_pair($k, $q), "
467
468 if [ $i -eq $k ] && [ $j -eq $q ]
469 then
470 echo "true, "
471 else
472 echo "false, "
473 fi;
474
475 if [ $i -lt $k ] && [ $j -lt $q ]
476 then
477 echo "true, "
478 else
479 echo "false, "
480 fi;
481
482 if [ $i -gt $k ] && [ $j -gt $q ]
483 then
484 echo "true, "
485 else
486 echo "false, "
487 fi;
488
489 if [ $i -le $k ] && [ $j -le $q ]
490 then
491 echo "true, "
492 else
493 echo "false, "
494 fi;
495
496 if [ $i -ge $k ] && [ $j -ge $q ]
497 then
498 echo "true"
499 else
500 echo "false"
501 fi;
502
503 echo "),";
504 done;
505 done;
506 done;
507done;
508*/
510 make_tuple(make_pair(-1, -1), make_pair(-1, -1), true, false, false, true,
511 true),
512 make_tuple(make_pair(-1, -1), make_pair(-1, 0), false, false, false, true,
513 false),
514 make_tuple(make_pair(-1, -1), make_pair(-1, 1), false, false, false, true,
515 false),
516 make_tuple(make_pair(-1, -1), make_pair(0, -1), false, false, false, true,
517 false),
518 make_tuple(make_pair(-1, -1), make_pair(0, 0), false, true, false, true,
519 false),
520 make_tuple(make_pair(-1, -1), make_pair(0, 1), false, true, false, true,
521 false),
522 make_tuple(make_pair(-1, -1), make_pair(1, -1), false, false, false, true,
523 false),
524 make_tuple(make_pair(-1, -1), make_pair(1, 0), false, true, false, true,
525 false),
526 make_tuple(make_pair(-1, -1), make_pair(1, 1), false, true, false, true,
527 false),
528 make_tuple(make_pair(-1, 0), make_pair(-1, -1), false, false, false, false,
529 true),
530 make_tuple(make_pair(-1, 0), make_pair(-1, 0), true, false, false, true,
531 true),
532 make_tuple(make_pair(-1, 0), make_pair(-1, 1), false, false, false, true,
533 false),
534 make_tuple(make_pair(-1, 0), make_pair(0, -1), false, false, false, false,
535 false),
536 make_tuple(make_pair(-1, 0), make_pair(0, 0), false, false, false, true,
537 false),
538 make_tuple(make_pair(-1, 0), make_pair(0, 1), false, true, false, true,
539 false),
540 make_tuple(make_pair(-1, 0), make_pair(1, -1), false, false, false, false,
541 false),
542 make_tuple(make_pair(-1, 0), make_pair(1, 0), false, false, false, true,
543 false),
544 make_tuple(make_pair(-1, 0), make_pair(1, 1), false, true, false, true,
545 false),
546 make_tuple(make_pair(-1, 1), make_pair(-1, -1), false, false, false, false,
547 true),
548 make_tuple(make_pair(-1, 1), make_pair(-1, 0), false, false, false, false,
549 true),
550 make_tuple(make_pair(-1, 1), make_pair(-1, 1), true, false, false, true,
551 true),
552 make_tuple(make_pair(-1, 1), make_pair(0, -1), false, false, false, false,
553 false),
554 make_tuple(make_pair(-1, 1), make_pair(0, 0), false, false, false, false,
555 false),
556 make_tuple(make_pair(-1, 1), make_pair(0, 1), false, false, false, true,
557 false),
558 make_tuple(make_pair(-1, 1), make_pair(1, -1), false, false, false, false,
559 false),
560 make_tuple(make_pair(-1, 1), make_pair(1, 0), false, false, false, false,
561 false),
562 make_tuple(make_pair(-1, 1), make_pair(1, 1), false, false, false, true,
563 false),
564 make_tuple(make_pair(0, -1), make_pair(-1, -1), false, false, false, false,
565 true),
566 make_tuple(make_pair(0, -1), make_pair(-1, 0), false, false, false, false,
567 false),
568 make_tuple(make_pair(0, -1), make_pair(-1, 1), false, false, false, false,
569 false),
570 make_tuple(make_pair(0, -1), make_pair(0, -1), true, false, false, true,
571 true),
572 make_tuple(make_pair(0, -1), make_pair(0, 0), false, false, false, true,
573 false),
574 make_tuple(make_pair(0, -1), make_pair(0, 1), false, false, false, true,
575 false),
576 make_tuple(make_pair(0, -1), make_pair(1, -1), false, false, false, true,
577 false),
578 make_tuple(make_pair(0, -1), make_pair(1, 0), false, true, false, true,
579 false),
580 make_tuple(make_pair(0, -1), make_pair(1, 1), false, true, false, true,
581 false),
582 make_tuple(make_pair(0, 0), make_pair(-1, -1), false, false, true, false,
583 true),
584 make_tuple(make_pair(0, 0), make_pair(-1, 0), false, false, false, false,
585 true),
586 make_tuple(make_pair(0, 0), make_pair(-1, 1), false, false, false, false,
587 false),
588 make_tuple(make_pair(0, 0), make_pair(0, -1), false, false, false, false,
589 true),
590 make_tuple(make_pair(0, 0), make_pair(0, 0), true, false, false, true,
591 true),
592 make_tuple(make_pair(0, 0), make_pair(0, 1), false, false, false, true,
593 false),
594 make_tuple(make_pair(0, 0), make_pair(1, -1), false, false, false, false,
595 false),
596 make_tuple(make_pair(0, 0), make_pair(1, 0), false, false, false, true,
597 false),
598 make_tuple(make_pair(0, 0), make_pair(1, 1), false, true, false, true,
599 false),
600 make_tuple(make_pair(0, 1), make_pair(-1, -1), false, false, true, false,
601 true),
602 make_tuple(make_pair(0, 1), make_pair(-1, 0), false, false, true, false,
603 true),
604 make_tuple(make_pair(0, 1), make_pair(-1, 1), false, false, false, false,
605 true),
606 make_tuple(make_pair(0, 1), make_pair(0, -1), false, false, false, false,
607 true),
608 make_tuple(make_pair(0, 1), make_pair(0, 0), false, false, false, false,
609 true),
610 make_tuple(make_pair(0, 1), make_pair(0, 1), true, false, false, true,
611 true),
612 make_tuple(make_pair(0, 1), make_pair(1, -1), false, false, false, false,
613 false),
614 make_tuple(make_pair(0, 1), make_pair(1, 0), false, false, false, false,
615 false),
616 make_tuple(make_pair(0, 1), make_pair(1, 1), false, false, false, true,
617 false),
618 make_tuple(make_pair(1, -1), make_pair(-1, -1), false, false, false, false,
619 true),
620 make_tuple(make_pair(1, -1), make_pair(-1, 0), false, false, false, false,
621 false),
622 make_tuple(make_pair(1, -1), make_pair(-1, 1), false, false, false, false,
623 false),
624 make_tuple(make_pair(1, -1), make_pair(0, -1), false, false, false, false,
625 true),
626 make_tuple(make_pair(1, -1), make_pair(0, 0), false, false, false, false,
627 false),
628 make_tuple(make_pair(1, -1), make_pair(0, 1), false, false, false, false,
629 false),
630 make_tuple(make_pair(1, -1), make_pair(1, -1), true, false, false, true,
631 true),
632 make_tuple(make_pair(1, -1), make_pair(1, 0), false, false, false, true,
633 false),
634 make_tuple(make_pair(1, -1), make_pair(1, 1), false, false, false, true,
635 false),
636 make_tuple(make_pair(1, 0), make_pair(-1, -1), false, false, true, false,
637 true),
638 make_tuple(make_pair(1, 0), make_pair(-1, 0), false, false, false, false,
639 true),
640 make_tuple(make_pair(1, 0), make_pair(-1, 1), false, false, false, false,
641 false),
642 make_tuple(make_pair(1, 0), make_pair(0, -1), false, false, true, false,
643 true),
644 make_tuple(make_pair(1, 0), make_pair(0, 0), false, false, false, false,
645 true),
646 make_tuple(make_pair(1, 0), make_pair(0, 1), false, false, false, false,
647 false),
648 make_tuple(make_pair(1, 0), make_pair(1, -1), false, false, false, false,
649 true),
650 make_tuple(make_pair(1, 0), make_pair(1, 0), true, false, false, true,
651 true),
652 make_tuple(make_pair(1, 0), make_pair(1, 1), false, false, false, true,
653 false),
654 make_tuple(make_pair(1, 1), make_pair(-1, -1), false, false, true, false,
655 true),
656 make_tuple(make_pair(1, 1), make_pair(-1, 0), false, false, true, false,
657 true),
658 make_tuple(make_pair(1, 1), make_pair(-1, 1), false, false, false, false,
659 true),
660 make_tuple(make_pair(1, 1), make_pair(0, -1), false, false, true, false,
661 true),
662 make_tuple(make_pair(1, 1), make_pair(0, 0), false, false, true, false,
663 true),
664 make_tuple(make_pair(1, 1), make_pair(0, 1), false, false, false, false,
665 true),
666 make_tuple(make_pair(1, 1), make_pair(1, -1), false, false, false, false,
667 true),
668 make_tuple(make_pair(1, 1), make_pair(1, 0), false, false, false, false,
669 true),
670 make_tuple(make_pair(1, 1), make_pair(1, 1), true, false, false, true,
671 true)};
672
674 ::testing::ValuesIn(operatorsValues));
675
676TEST_P(OperatorsTest, OperatorEQTest) {
677 ASSERT_NO_THROW({ ASSERT_EQ(a == b, eq); });
678 ASSERT_NO_THROW({ ASSERT_EQ(b == a, eq); });
679}
680TEST_P(OperatorsTest, OperatorNETest) {
681 ASSERT_NO_THROW({ ASSERT_EQ(a != b, !eq); });
682 ASSERT_NO_THROW({ ASSERT_EQ(b != a, !eq); });
683}
684
685TEST_P(OperatorsTest, OperatorLTTest) {
686 ASSERT_NO_THROW({ ASSERT_EQ(a < b, lt); });
687 ASSERT_NO_THROW({ ASSERT_EQ(b > a, lt); });
688}
689TEST_P(OperatorsTest, OperatorGTest) {
690 ASSERT_NO_THROW({ ASSERT_EQ(a > b, gt); });
691 ASSERT_NO_THROW({ ASSERT_EQ(b < a, gt); });
692}
693
694TEST_P(OperatorsTest, OperatorLETest) {
695 ASSERT_NO_THROW({ ASSERT_EQ(a <= b, le); });
696 ASSERT_NO_THROW({ ASSERT_EQ(b >= a, le); });
697}
698TEST_P(OperatorsTest, OperatorGEest) {
699 ASSERT_NO_THROW({ ASSERT_EQ(a >= b, ge); });
700 ASSERT_NO_THROW({ ASSERT_EQ(b <= a, ge); });
701}
702
704 ASSERT_NO_THROW({ ASSERT_EQ(a.isThisInside(b), le); });
705}
706
707/*
708#!/bin/bash
709for i in -5 0 5;
710do
711 for j in -5 0 5;
712 do
713 for k in -5 0 5;
714 do
715 for q in -5 0 5;
716 do
717 echo "make_tuple(make_pair($i, $j), make_pair($k, $q),
718make_pair($(($i<=$k?$i:$k)), $(($j<=$q?$j:$q)))),";
719 done;
720 done;
721 done;
722done;
723*/
725 make_tuple(make_pair(-5, -5), make_pair(-5, -5), make_pair(-5, -5)),
726 make_tuple(make_pair(-5, -5), make_pair(-5, 0), make_pair(-5, -5)),
727 make_tuple(make_pair(-5, -5), make_pair(-5, 5), make_pair(-5, -5)),
728 make_tuple(make_pair(-5, -5), make_pair(0, -5), make_pair(-5, -5)),
729 make_tuple(make_pair(-5, -5), make_pair(0, 0), make_pair(-5, -5)),
730 make_tuple(make_pair(-5, -5), make_pair(0, 5), make_pair(-5, -5)),
731 make_tuple(make_pair(-5, -5), make_pair(5, -5), make_pair(-5, -5)),
732 make_tuple(make_pair(-5, -5), make_pair(5, 0), make_pair(-5, -5)),
733 make_tuple(make_pair(-5, -5), make_pair(5, 5), make_pair(-5, -5)),
734 make_tuple(make_pair(-5, 0), make_pair(-5, -5), make_pair(-5, -5)),
735 make_tuple(make_pair(-5, 0), make_pair(-5, 0), make_pair(-5, 0)),
736 make_tuple(make_pair(-5, 0), make_pair(-5, 5), make_pair(-5, 0)),
737 make_tuple(make_pair(-5, 0), make_pair(0, -5), make_pair(-5, -5)),
738 make_tuple(make_pair(-5, 0), make_pair(0, 0), make_pair(-5, 0)),
739 make_tuple(make_pair(-5, 0), make_pair(0, 5), make_pair(-5, 0)),
740 make_tuple(make_pair(-5, 0), make_pair(5, -5), make_pair(-5, -5)),
741 make_tuple(make_pair(-5, 0), make_pair(5, 0), make_pair(-5, 0)),
742 make_tuple(make_pair(-5, 0), make_pair(5, 5), make_pair(-5, 0)),
743 make_tuple(make_pair(-5, 5), make_pair(-5, -5), make_pair(-5, -5)),
744 make_tuple(make_pair(-5, 5), make_pair(-5, 0), make_pair(-5, 0)),
745 make_tuple(make_pair(-5, 5), make_pair(-5, 5), make_pair(-5, 5)),
746 make_tuple(make_pair(-5, 5), make_pair(0, -5), make_pair(-5, -5)),
747 make_tuple(make_pair(-5, 5), make_pair(0, 0), make_pair(-5, 0)),
748 make_tuple(make_pair(-5, 5), make_pair(0, 5), make_pair(-5, 5)),
749 make_tuple(make_pair(-5, 5), make_pair(5, -5), make_pair(-5, -5)),
750 make_tuple(make_pair(-5, 5), make_pair(5, 0), make_pair(-5, 0)),
751 make_tuple(make_pair(-5, 5), make_pair(5, 5), make_pair(-5, 5)),
752 make_tuple(make_pair(0, -5), make_pair(-5, -5), make_pair(-5, -5)),
753 make_tuple(make_pair(0, -5), make_pair(-5, 0), make_pair(-5, -5)),
754 make_tuple(make_pair(0, -5), make_pair(-5, 5), make_pair(-5, -5)),
755 make_tuple(make_pair(0, -5), make_pair(0, -5), make_pair(0, -5)),
756 make_tuple(make_pair(0, -5), make_pair(0, 0), make_pair(0, -5)),
757 make_tuple(make_pair(0, -5), make_pair(0, 5), make_pair(0, -5)),
758 make_tuple(make_pair(0, -5), make_pair(5, -5), make_pair(0, -5)),
759 make_tuple(make_pair(0, -5), make_pair(5, 0), make_pair(0, -5)),
760 make_tuple(make_pair(0, -5), make_pair(5, 5), make_pair(0, -5)),
761 make_tuple(make_pair(0, 0), make_pair(-5, -5), make_pair(-5, -5)),
762 make_tuple(make_pair(0, 0), make_pair(-5, 0), make_pair(-5, 0)),
763 make_tuple(make_pair(0, 0), make_pair(-5, 5), make_pair(-5, 0)),
764 make_tuple(make_pair(0, 0), make_pair(0, -5), make_pair(0, -5)),
765 make_tuple(make_pair(0, 0), make_pair(0, 0), make_pair(0, 0)),
766 make_tuple(make_pair(0, 0), make_pair(0, 5), make_pair(0, 0)),
767 make_tuple(make_pair(0, 0), make_pair(5, -5), make_pair(0, -5)),
768 make_tuple(make_pair(0, 0), make_pair(5, 0), make_pair(0, 0)),
769 make_tuple(make_pair(0, 0), make_pair(5, 5), make_pair(0, 0)),
770 make_tuple(make_pair(0, 5), make_pair(-5, -5), make_pair(-5, -5)),
771 make_tuple(make_pair(0, 5), make_pair(-5, 0), make_pair(-5, 0)),
772 make_tuple(make_pair(0, 5), make_pair(-5, 5), make_pair(-5, 5)),
773 make_tuple(make_pair(0, 5), make_pair(0, -5), make_pair(0, -5)),
774 make_tuple(make_pair(0, 5), make_pair(0, 0), make_pair(0, 0)),
775 make_tuple(make_pair(0, 5), make_pair(0, 5), make_pair(0, 5)),
776 make_tuple(make_pair(0, 5), make_pair(5, -5), make_pair(0, -5)),
777 make_tuple(make_pair(0, 5), make_pair(5, 0), make_pair(0, 0)),
778 make_tuple(make_pair(0, 5), make_pair(5, 5), make_pair(0, 5)),
779 make_tuple(make_pair(5, -5), make_pair(-5, -5), make_pair(-5, -5)),
780 make_tuple(make_pair(5, -5), make_pair(-5, 0), make_pair(-5, -5)),
781 make_tuple(make_pair(5, -5), make_pair(-5, 5), make_pair(-5, -5)),
782 make_tuple(make_pair(5, -5), make_pair(0, -5), make_pair(0, -5)),
783 make_tuple(make_pair(5, -5), make_pair(0, 0), make_pair(0, -5)),
784 make_tuple(make_pair(5, -5), make_pair(0, 5), make_pair(0, -5)),
785 make_tuple(make_pair(5, -5), make_pair(5, -5), make_pair(5, -5)),
786 make_tuple(make_pair(5, -5), make_pair(5, 0), make_pair(5, -5)),
787 make_tuple(make_pair(5, -5), make_pair(5, 5), make_pair(5, -5)),
788 make_tuple(make_pair(5, 0), make_pair(-5, -5), make_pair(-5, -5)),
789 make_tuple(make_pair(5, 0), make_pair(-5, 0), make_pair(-5, 0)),
790 make_tuple(make_pair(5, 0), make_pair(-5, 5), make_pair(-5, 0)),
791 make_tuple(make_pair(5, 0), make_pair(0, -5), make_pair(0, -5)),
792 make_tuple(make_pair(5, 0), make_pair(0, 0), make_pair(0, 0)),
793 make_tuple(make_pair(5, 0), make_pair(0, 5), make_pair(0, 0)),
794 make_tuple(make_pair(5, 0), make_pair(5, -5), make_pair(5, -5)),
795 make_tuple(make_pair(5, 0), make_pair(5, 0), make_pair(5, 0)),
796 make_tuple(make_pair(5, 0), make_pair(5, 5), make_pair(5, 0)),
797 make_tuple(make_pair(5, 5), make_pair(-5, -5), make_pair(-5, -5)),
798 make_tuple(make_pair(5, 5), make_pair(-5, 0), make_pair(-5, 0)),
799 make_tuple(make_pair(5, 5), make_pair(-5, 5), make_pair(-5, 5)),
800 make_tuple(make_pair(5, 5), make_pair(0, -5), make_pair(0, -5)),
801 make_tuple(make_pair(5, 5), make_pair(0, 0), make_pair(0, 0)),
802 make_tuple(make_pair(5, 5), make_pair(0, 5), make_pair(0, 5)),
803 make_tuple(make_pair(5, 5), make_pair(5, -5), make_pair(5, -5)),
804 make_tuple(make_pair(5, 5), make_pair(5, 0), make_pair(5, 0)),
805 make_tuple(make_pair(5, 5), make_pair(5, 5), make_pair(5, 5)),
806};
807
808class SmallestTest : public PointTest {};
809
811 ::testing::ValuesIn(smallestValues));
812TEST_P(SmallestTest, GetSmallestTest) {
813 ASSERT_NO_THROW({
814 ASSERT_EQ(a.getSmallest(b), c);
815 ASSERT_EQ(a.getSmallest(c), c);
816 ASSERT_EQ(b.getSmallest(a), c);
817 ASSERT_EQ(b.getSmallest(c), c);
818 ASSERT_EQ(c.getSmallest(a), c);
819 ASSERT_EQ(c.getSmallest(b), c);
820 ASSERT_EQ(c.getSmallest(c), c);
821 });
822}
823
824} // namespace
825
826} // namespace rawspeed_test
INSTANTIATE_TEST_SUITE_P(MD5Test, MD5Test, ::testing::ValuesIn(testCases))
TEST_P(MD5Test, CheckTestCaseSet)
Definition MD5Test.cpp:388
dim y
Definition Common.cpp:51
dim x
Definition Common.cpp:50
value_type x
Definition Point.h:102
value_type y
Definition Point.h:103
uint64_t area_type
Definition Point.h:38
std::tuple< IntPair, IntPair, IntPair > Six
tuple< IntPair, iPoint2D::area_type > areaType
std::tuple< IntPair, IntPair, bool, bool, bool, bool, bool > operatorsType
static inline ::std::ostream & operator<<(::std::ostream &os, const T &b)