RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
BlackAreaTest.cpp
Go to the documentation of this file.
1/*
2 RawSpeed - RAW file decoder.
3
4 Copyright (C) 2009-2014 Klaus Post
5 Copyright (C) 2016 Roman Lebedev
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/
21
22#include "metadata/BlackArea.h"
23#include <memory>
24#include <tuple>
25#include <gtest/gtest.h>
26
28using std::unique_ptr;
29
30namespace rawspeed_test {
31
32namespace {
33
35 : public ::testing::TestWithParam<std::tuple<int, int, bool>> {
36protected:
37 BlackAreaTest() = default;
38 virtual void SetUp() final {
39 offset = std::get<0>(GetParam());
40 size = std::get<1>(GetParam());
41 isVertical = std::get<2>(GetParam());
42 }
43
44 void checkHelper(const BlackArea& a) {
45 ASSERT_EQ(a.offset, offset);
46 ASSERT_EQ(a.size, size);
47 ASSERT_EQ(a.isVertical, isVertical);
48 }
49
50 void checkHelper(const BlackArea& a, const BlackArea& b) {
51 ASSERT_EQ(a.offset, b.offset);
52 ASSERT_EQ(a.size, b.size);
53 ASSERT_EQ(a.isVertical, b.isVertical);
54 }
55
56 int offset{0}; // Offset in bayer pixels.
57 int size{0}; // Size in bayer pixels.
58 bool isVertical{false}; // Otherwise horizontal
59};
60
62 testing::Combine(testing::Range(0, 1000,
63 250), // offset
64 testing::Range(0, 1000, 250), // size
65 testing::Bool() // isVertical
66 ));
67
68TEST_P(BlackAreaTest, Constructor) {
69 ASSERT_NO_THROW({ BlackArea Area(offset, size, isVertical); });
70
71 ASSERT_NO_THROW(
72 { unique_ptr<BlackArea> Area(new BlackArea(offset, size, isVertical)); });
73}
74
76 {
77 const BlackArea Area(offset, size, isVertical);
78
79 checkHelper(Area);
80 }
81
82 {
83 const unique_ptr<const BlackArea> Area(
84 new BlackArea(offset, size, isVertical));
85
86 checkHelper(*Area);
87 }
88}
89
90TEST_P(BlackAreaTest, AssignmentConstructor) {
91 ASSERT_NO_THROW({
92 const BlackArea AreaOrig(offset, size, isVertical);
93 BlackArea Area(AreaOrig);
94 checkHelper(AreaOrig);
95 checkHelper(Area);
96 });
97
98 ASSERT_NO_THROW({
99 const unique_ptr<const BlackArea> AreaOrig(
100 new BlackArea(offset, size, isVertical));
101 unique_ptr<BlackArea> Area(new BlackArea(*AreaOrig));
102 checkHelper(*AreaOrig);
103 checkHelper(*Area);
104 });
105
106 ASSERT_NO_THROW({
107 const BlackArea AreaOrig(offset, size, isVertical);
108 unique_ptr<BlackArea> Area(new BlackArea(AreaOrig));
109 checkHelper(AreaOrig);
110 checkHelper(*Area);
111 });
112
113 ASSERT_NO_THROW({
114 const unique_ptr<const BlackArea> AreaOrig(
115 new BlackArea(offset, size, isVertical));
116 BlackArea Area(*AreaOrig);
117 checkHelper(*AreaOrig);
118 checkHelper(Area);
119 });
120}
121
122TEST_P(BlackAreaTest, AssignmentConstructorGetters) {
123 {
124 const BlackArea AreaOrig(offset, size, isVertical);
125 BlackArea Area(AreaOrig);
126
127 checkHelper(Area);
128 checkHelper(Area, AreaOrig);
129 }
130}
131
132TEST_P(BlackAreaTest, Assignment) {
133 ASSERT_NO_THROW({
134 const BlackArea AreaOrig(offset, size, isVertical);
135 BlackArea Area(0, 0, false);
136
137 Area = AreaOrig;
138 });
139
140 ASSERT_NO_THROW({
141 const unique_ptr<const BlackArea> AreaOrig(
142 new BlackArea(offset, size, isVertical));
143 unique_ptr<BlackArea> Area(new BlackArea(0, 0, false));
144
145 *Area = *AreaOrig;
146 });
147
148 ASSERT_NO_THROW({
149 const BlackArea AreaOrig(offset, size, isVertical);
150 unique_ptr<BlackArea> Area(new BlackArea(0, 0, false));
151
152 *Area = AreaOrig;
153 });
154
155 ASSERT_NO_THROW({
156 const unique_ptr<const BlackArea> AreaOrig(
157 new BlackArea(offset, size, isVertical));
158 BlackArea Area(0, 0, false);
159
160 Area = *AreaOrig;
161 });
162}
163
164TEST_P(BlackAreaTest, AssignmentGetters) {
165 ASSERT_NO_THROW({
166 const BlackArea AreaOrig(offset, size, isVertical);
167 BlackArea Area(0, 0, false);
168
169 Area = AreaOrig;
170
171 checkHelper(Area);
172 checkHelper(Area, AreaOrig);
173 });
174
175 ASSERT_NO_THROW({
176 const unique_ptr<const BlackArea> AreaOrig(
177 new BlackArea(offset, size, isVertical));
178 unique_ptr<BlackArea> Area(new BlackArea(0, 0, false));
179
180 *Area = *AreaOrig;
181
182 checkHelper(*Area);
183 checkHelper(*Area, *AreaOrig);
184 });
185
186 ASSERT_NO_THROW({
187 const BlackArea AreaOrig(offset, size, isVertical);
188 unique_ptr<BlackArea> Area(new BlackArea(0, 0, false));
189
190 *Area = AreaOrig;
191
192 checkHelper(*Area);
193 checkHelper(*Area, AreaOrig);
194 });
195
196 ASSERT_NO_THROW({
197 const unique_ptr<const BlackArea> AreaOrig(
198 new BlackArea(offset, size, isVertical));
199 BlackArea Area(0, 0, false);
200
201 Area = *AreaOrig;
202
203 checkHelper(Area);
204 checkHelper(Area, *AreaOrig);
205 });
206}
207
208} // namespace
209
210} // namespace rawspeed_test
INSTANTIATE_TEST_SUITE_P(MD5Test, MD5Test, ::testing::ValuesIn(testCases))
TEST_P(MD5Test, CheckTestCaseSet)
Definition MD5Test.cpp:388