RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
CameraTest.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; without 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 "metadata/Camera.h"
22#include <string>
23#include <tuple>
24#include <gtest/gtest.h>
25
26using rawspeed::Hints;
27using std::string;
28using std::to_string;
29
30namespace rawspeed_test {
31
32namespace {
33
34TEST(CameraTest, HintsEmpty) {
35 Hints hints;
36 ASSERT_FALSE(hints.contains("something"));
37}
38
39TEST(CameraTest, HintsGetDefault) {
40 Hints hints;
41 ASSERT_FALSE(hints.get("something", false));
42 ASSERT_TRUE(hints.get("something", true));
43 ASSERT_EQ(hints.get("something", string("the default value")),
44 "the default value");
45 ASSERT_EQ(hints.get("something", 42), 42);
46 ASSERT_EQ(hints.get("something", -84), -84);
47 ASSERT_EQ(hints.get("something", 3.14f), 3.14f);
48 ASSERT_EQ(hints.get("something", 2.71), 2.71);
49}
50
51TEST(CameraTest, HintsAssignmentConstructor) {
52 const string key("something");
53
54 Hints hints;
55 ASSERT_FALSE(hints.contains(key));
56
57 hints.add(key, "indeed");
58 ASSERT_TRUE(hints.contains(key));
59
60 const Hints hints2(hints);
61 ASSERT_TRUE(hints2.contains(key));
62
63 const Hints hints3(hints2);
64 ASSERT_TRUE(hints3.contains(key));
65}
66
67TEST(CameraTest, HintsAssignment) {
68 const string key("something");
69
70 Hints hints;
71
72 ASSERT_FALSE(hints.contains(key));
73 hints.add(key, "indeed");
74 ASSERT_TRUE(hints.contains(key));
75
76 const Hints hints2 = hints;
77 ASSERT_TRUE(hints2.contains(key));
78
79 const Hints hints3 = hints2;
80 ASSERT_TRUE(hints3.contains(key));
81}
82
83TEST(CameraTest, HintsAdd) {
84 Hints hints;
85 const string key("something"), value("whocares");
86 ASSERT_FALSE(hints.contains(key));
87 hints.add(key, value);
88 ASSERT_TRUE(hints.contains(key));
89 ASSERT_EQ(hints.get(key, string()), value);
90}
91
92TEST(CameraTest, HintsInt) {
93 Hints hints;
94 const int val = -42;
95 const string key("thenum"), value(to_string(val));
96 ASSERT_FALSE(hints.contains(key));
97 hints.add(key, value);
98 ASSERT_TRUE(hints.contains(key));
99 ASSERT_EQ(hints.get(key, 0), val);
100}
101
102TEST(CameraTest, HintsUInt) {
103 Hints hints;
104 const unsigned int val = 84;
105 const string key("thenum"), value(to_string(val));
106 ASSERT_FALSE(hints.contains(key));
107 hints.add(key, value);
108 ASSERT_TRUE(hints.contains(key));
109 ASSERT_EQ(hints.get(key, 0U), val);
110}
111
112TEST(CameraTest, HintsFloat) {
113 Hints hints;
114 const float val = 3.14f;
115 const string key("theflt"), value(to_string(val));
116 ASSERT_FALSE(hints.contains(key));
117 hints.add(key, value);
118 ASSERT_TRUE(hints.contains(key));
119 ASSERT_EQ(hints.get(key, 0.0F), val);
120}
121
122TEST(CameraTest, HintsDouble) {
123 Hints hints;
124 const double val = 2.71;
125 const string key("thedbl"), value(to_string(val));
126 ASSERT_FALSE(hints.contains(key));
127 hints.add(key, value);
128 ASSERT_TRUE(hints.contains(key));
129 ASSERT_EQ(hints.get(key, 0.0), val);
130}
131
132TEST(BoolHintTest, HintsBoolTrue) {
133 Hints hints;
134
135 const string key("key1");
136 ASSERT_FALSE(hints.contains(key));
137 hints.add(key, "true");
138 ASSERT_TRUE(hints.contains(key));
139 ASSERT_TRUE(hints.get(key, false));
140}
141
142class BoolHintTest : public ::testing::TestWithParam<std::tuple<string>> {
143protected:
144 virtual void SetUp() final { notTrue = std::get<0>(GetParam()); }
145 string notTrue;
146};
148 ::testing::Values("True", "false", "False", "", "_"));
149
150TEST_P(BoolHintTest, HintsBool) {
151 Hints hints;
152
153 const string key("key");
154 ASSERT_FALSE(hints.contains(key));
155 hints.add(key, notTrue);
156 ASSERT_TRUE(hints.contains(key));
157 ASSERT_FALSE(hints.get(key, true));
158}
159
160} // namespace
161
162} // namespace rawspeed_test
INSTANTIATE_TEST_SUITE_P(MD5Test, MD5Test, ::testing::ValuesIn(testCases))
TEST_P(MD5Test, CheckTestCaseSet)
Definition MD5Test.cpp:388
void add(const std::string &key, const std::string &value)
Definition Camera.h:51
bool contains(const std::string &key) const
Definition Camera.h:55
T get(const std::string &key, T defaultValue) const
Definition Camera.h:60