RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
RangeTest.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/Range.h"
22#include "adt/RangeTest.h"
23#include <set>
24#include <gtest/gtest.h>
25
26using rawspeed::Range;
27
28namespace rawspeed_test {
29
30namespace {
31
32// check the basic - begin/end works
33
34TEST(RangeTest, BasicSignedRangeForTest) {
35 const Range<int> r0(0, 3U);
36 ASSERT_EQ(r0.begin(), 0);
37 ASSERT_EQ(r0.end(), 3);
38
39 const Range<int> r1(-1, 3U);
40 ASSERT_EQ(r1.begin(), -1);
41 ASSERT_EQ(r1.end(), 2);
42}
43
44// check that RangeContains() works properly
45
46TEST(RangeTest, BasicSignedContainsTest) {
47 const Range<int> r0(0, 3U);
48 ASSERT_PRED_FORMAT2(RangeContains, r0, r0.begin());
49
50 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -4);
51 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -3);
52 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -2);
53 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -1);
54 ASSERT_PRED_FORMAT2(RangeContains, r0, 0);
55 ASSERT_PRED_FORMAT2(RangeContains, r0, 1);
56 ASSERT_PRED_FORMAT2(RangeContains, r0, 2);
57 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 3);
58 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 4);
59 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 5);
60 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 6);
61}
62
63TEST(RangeTest, BasicSignedCrossoverContainsTest) {
64 const Range<int> r0(-1, 3U);
65 ASSERT_PRED_FORMAT2(RangeContains, r0, r0.begin());
66
67 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -5);
68 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -4);
69 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -3);
70 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -2);
71 ASSERT_PRED_FORMAT2(RangeContains, r0, -1);
72 ASSERT_PRED_FORMAT2(RangeContains, r0, 0);
73 ASSERT_PRED_FORMAT2(RangeContains, r0, 1);
74 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 2);
75 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 3);
76 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 4);
77 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 5);
78}
79
80TEST(RangeTest, BasicUnsignedContainsTest) {
81 const Range<unsigned> r0(4, 3U);
82 ASSERT_PRED_FORMAT2(RangeContains, r0, r0.begin());
83
84 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 0U);
85 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 1U);
86 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 2U);
87 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 3U);
88 ASSERT_PRED_FORMAT2(RangeContains, r0, 4U);
89 ASSERT_PRED_FORMAT2(RangeContains, r0, 5U);
90 ASSERT_PRED_FORMAT2(RangeContains, r0, 6U);
91 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 7U);
92 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 8U);
93 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 9U);
94 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 10U);
95}
96
97TEST(RangeTest, SignedZeroSizeContainsTest) {
98 const Range<int> r0(0, 0U);
99 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, r0.begin());
100
101 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -2);
102 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, -1);
103 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 0);
104 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 1);
105 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 2);
106}
107
108TEST(RangeTest, UnsignedZeroSizeContainsTest) {
109 const Range<unsigned> r0(1, 0U);
110 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, r0.begin());
111
112 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 0U);
113 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 1U);
114 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 2U);
115 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 3U);
116 ASSERT_PRED_FORMAT2(RangeDoesntContain, r0, 4U);
117}
118
119// now let's test overlap. the test is symmetrical.
120
121TEST_P(TwoRangesTest, OverlapDataTest) {
122 if (AllOverlapped.find(GetParam()) != AllOverlapped.end()) {
123 ASSERT_PRED_FORMAT2(RangesOverlap, r0, r1);
124 } else {
125 ASSERT_PRED_FORMAT2(RangesDontOverlap, r0, r1);
126 }
127}
128
129} // namespace
130
131} // namespace rawspeed_test
TEST_P(MD5Test, CheckTestCaseSet)
Definition MD5Test.cpp:388
constexpr T RAWSPEED_READNONE end() const
Definition Range.h:45
constexpr T RAWSPEED_READNONE begin() const
Definition Range.h:43
TEST(RangeTest, BasicSignedRangeForTest)
Definition RangeTest.cpp:34