blob: f3324d22a6523a70b71b0b46dabba500f780c2d7 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "gpu/config/gpu_control_list.h"
6#include "testing/gtest/include/gtest/gtest.h"
7
8namespace gpu {
9
10class NumberInfoTest : public testing::Test {
11 public:
12 NumberInfoTest() { }
James Robinson53b77582014-10-28 17:00:48 -070013 ~NumberInfoTest() override {}
James Robinson646469d2014-10-03 15:33:28 -070014
15 typedef GpuControlList::FloatInfo FloatInfo;
16 typedef GpuControlList::IntInfo IntInfo;
17 typedef GpuControlList::BoolInfo BoolInfo;
18};
19
20TEST_F(NumberInfoTest, ValidFloatInfo) {
21 const std::string op[] = {
22 "=",
23 "<",
24 "<=",
25 ">",
26 ">=",
27 "any",
28 "between"
29 };
30 for (size_t i = 0; i < arraysize(op); ++i) {
31 std::string value1;
32 std::string value2;
33 if (op[i] != "any")
34 value1 = "3.14";
35 if (op[i] == "between")
36 value2 = "4.21";
37 FloatInfo info(op[i], value1, value2);
38 EXPECT_TRUE(info.IsValid());
39 }
40
41 const std::string value[] = {
42 "1.0E12",
43 "1.0e12",
44 "2013",
45 "1.0e-12",
46 "2.1400",
47 "-2.14",
48 };
49 for (size_t i = 0; i < arraysize(value); ++i) {
50 FloatInfo info("=", value[i], std::string());
51 EXPECT_TRUE(info.IsValid());
52 }
53}
54
55TEST_F(NumberInfoTest, InvalidFloatInfo) {
56 const std::string op[] = {
57 "=",
58 "<",
59 "<=",
60 ">",
61 ">=",
62 };
63 for (size_t i = 0; i < arraysize(op); ++i) {
64 FloatInfo info(op[i], std::string(), std::string());
65 EXPECT_FALSE(info.IsValid());
66 }
67 {
68 FloatInfo info("between", "3.14", std::string());
69 EXPECT_FALSE(info.IsValid());
70 }
71 const std::string value[] = {
72 "1.0 E12",
73 "1.0e 12",
74 " 2013",
75 "2013 ",
76 "- 2.14",
77 };
78 for (size_t i = 0; i < arraysize(value); ++i) {
79 FloatInfo info("=", value[i], std::string());
80 EXPECT_FALSE(info.IsValid());
81 }
82}
83
84TEST_F(NumberInfoTest, FloatComparison) {
85 {
86 FloatInfo info("=", "3.14", std::string());
87 EXPECT_TRUE(info.Contains(3.14f));
88 EXPECT_TRUE(info.Contains(3.1400f));
89 EXPECT_FALSE(info.Contains(3.1f));
90 EXPECT_FALSE(info.Contains(3));
91 }
92 {
93 FloatInfo info(">", "3.14", std::string());
94 EXPECT_FALSE(info.Contains(3.14f));
95 EXPECT_TRUE(info.Contains(3.141f));
96 EXPECT_FALSE(info.Contains(3.1f));
97 }
98 {
99 FloatInfo info("<=", "3.14", std::string());
100 EXPECT_TRUE(info.Contains(3.14f));
101 EXPECT_FALSE(info.Contains(3.141f));
102 EXPECT_TRUE(info.Contains(3.1f));
103 }
104 {
105 FloatInfo info("any", std::string(), std::string());
106 EXPECT_TRUE(info.Contains(3.14f));
107 }
108 {
109 FloatInfo info("between", "3.14", "5.4");
110 EXPECT_TRUE(info.Contains(3.14f));
111 EXPECT_TRUE(info.Contains(5.4f));
112 EXPECT_TRUE(info.Contains(4));
113 EXPECT_FALSE(info.Contains(5.6f));
114 EXPECT_FALSE(info.Contains(3.12f));
115 }
116}
117
118TEST_F(NumberInfoTest, ValidIntInfo) {
119 const std::string op[] = {
120 "=",
121 "<",
122 "<=",
123 ">",
124 ">=",
125 "any",
126 "between"
127 };
128 for (size_t i = 0; i < arraysize(op); ++i) {
129 std::string value1;
130 std::string value2;
131 if (op[i] != "any")
132 value1 = "3";
133 if (op[i] == "between")
134 value2 = "9";
135 IntInfo info(op[i], value1, value2);
136 EXPECT_TRUE(info.IsValid());
137 }
138
139 const std::string value[] = {
140 "12",
141 "-12",
142 };
143 for (size_t i = 0; i < arraysize(value); ++i) {
144 IntInfo info("=", value[i], std::string());
145 EXPECT_TRUE(info.IsValid());
146 }
147}
148
149TEST_F(NumberInfoTest, InvalidIntInfo) {
150 const std::string op[] = {
151 "=",
152 "<",
153 "<=",
154 ">",
155 ">=",
156 };
157 for (size_t i = 0; i < arraysize(op); ++i) {
158 IntInfo info(op[i], std::string(), std::string());
159 EXPECT_FALSE(info.IsValid());
160 }
161 {
162 IntInfo info("between", "3", std::string());
163 EXPECT_FALSE(info.IsValid());
164 }
165 const std::string value[] = {
166 " 12",
167 "12 ",
168 "- 12",
169 " -12",
170 "3.14"
171 };
172 for (size_t i = 0; i < arraysize(value); ++i) {
173 IntInfo info("=", value[i], std::string());
174 EXPECT_FALSE(info.IsValid());
175 }
176}
177
178TEST_F(NumberInfoTest, IntComparison) {
179 {
180 IntInfo info("=", "3", std::string());
181 EXPECT_TRUE(info.Contains(3));
182 EXPECT_FALSE(info.Contains(4));
183 }
184 {
185 IntInfo info(">", "3", std::string());
186 EXPECT_FALSE(info.Contains(2));
187 EXPECT_FALSE(info.Contains(3));
188 EXPECT_TRUE(info.Contains(4));
189 }
190 {
191 IntInfo info("<=", "3", std::string());
192 EXPECT_TRUE(info.Contains(2));
193 EXPECT_TRUE(info.Contains(3));
194 EXPECT_FALSE(info.Contains(4));
195 }
196 {
197 IntInfo info("any", std::string(), std::string());
198 EXPECT_TRUE(info.Contains(3));
199 }
200 {
201 IntInfo info("between", "3", "5");
202 EXPECT_TRUE(info.Contains(3));
203 EXPECT_TRUE(info.Contains(5));
204 EXPECT_TRUE(info.Contains(4));
205 EXPECT_FALSE(info.Contains(6));
206 EXPECT_FALSE(info.Contains(2));
207 }
208}
209
210TEST_F(NumberInfoTest, Bool) {
211 {
212 BoolInfo info(true);
213 EXPECT_TRUE(info.Contains(true));
214 EXPECT_FALSE(info.Contains(false));
215 }
216 {
217 BoolInfo info(false);
218 EXPECT_FALSE(info.Contains(true));
219 EXPECT_TRUE(info.Contains(false));
220 }
221}
222
223} // namespace gpu
224