OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "gpu/config/gpu_control_list.h" | 7 #include "gpu/config/gpu_control_list.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace gpu { | 10 namespace gpu { |
11 | 11 |
12 class VersionInfoTest : public testing::Test { | 12 namespace { |
13 | |
14 constexpr auto kNumerical = GpuControlList::kVersionStyleNumerical; | |
Ken Russell (switch to Gerrit)
2017/03/31 02:37:06
Same thing about trying the "using" directive.
Zhenyao Mo
2017/03/31 19:14:13
No that doesn't compile.
| |
15 constexpr auto kLexical = GpuControlList::kVersionStyleLexical; | |
16 | |
17 constexpr auto kBetween = GpuControlList::kBetween; | |
18 constexpr auto kEQ = GpuControlList::kEQ; | |
19 constexpr auto kLT = GpuControlList::kLT; | |
20 constexpr auto kLE = GpuControlList::kLE; | |
21 constexpr auto kGT = GpuControlList::kGT; | |
22 constexpr auto kGE = GpuControlList::kGE; | |
23 constexpr auto kAny = GpuControlList::kAny; | |
24 | |
25 } // namespace anonymous | |
26 | |
27 class VersionTest : public testing::Test { | |
13 public: | 28 public: |
14 VersionInfoTest() { } | 29 VersionTest() {} |
15 ~VersionInfoTest() override {} | 30 ~VersionTest() override {} |
16 | 31 |
17 typedef GpuControlList::VersionInfo VersionInfo; | 32 typedef GpuControlList::Version Version; |
18 }; | 33 }; |
19 | 34 |
20 TEST_F(VersionInfoTest, ValidVersionInfo) { | 35 TEST_F(VersionTest, VersionComparison) { |
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 string1; | |
32 std::string string2; | |
33 if (op[i] != "any") | |
34 string1 = "8.9"; | |
35 if (op[i] == "between") | |
36 string2 = "9.0"; | |
37 VersionInfo info(op[i], std::string(), string1, string2); | |
38 EXPECT_TRUE(info.IsValid()); | |
39 } | |
40 | |
41 const std::string style[] = { | |
42 "lexical", | |
43 "numerical", | |
44 "" // Default, same as "numerical" | |
45 }; | |
46 for (size_t i =0; i < arraysize(style); ++i) { | |
47 VersionInfo info("=", style[i], "8.9", std::string()); | |
48 EXPECT_TRUE(info.IsValid()); | |
49 if (style[i] == "lexical") | |
50 EXPECT_TRUE(info.IsLexical()); | |
51 else | |
52 EXPECT_FALSE(info.IsLexical()); | |
53 } | |
54 | |
55 const std::string number[] = { | |
56 "10", | |
57 "10.9", | |
58 "10.0", | |
59 "10.0.9", | |
60 "0.8", | |
61 // Leading 0s are valid. | |
62 "10.09", | |
63 // Whitespaces are ignored. | |
64 " 10.9", | |
65 "10.9 ", | |
66 "10 .9", | |
67 "10. 9", | |
68 }; | |
69 for (size_t i =0; i < arraysize(number); ++i) { | |
70 VersionInfo info("=", std::string(), number[i], std::string()); | |
71 EXPECT_TRUE(info.IsValid()); | |
72 } | |
73 } | |
74 | |
75 TEST_F(VersionInfoTest, InvalidVersionInfo) { | |
76 const std::string op[] = { | |
77 "=", | |
78 "<", | |
79 "<=", | |
80 ">", | |
81 ">=", | |
82 "any", | |
83 "between" | |
84 }; | |
85 for (size_t i = 0; i < arraysize(op); ++i) { | |
86 { | |
87 VersionInfo info(op[i], std::string(), "8.9", std::string()); | |
88 if (op[i] == "between") | |
89 EXPECT_FALSE(info.IsValid()); | |
90 else | |
91 EXPECT_TRUE(info.IsValid()); | |
92 } | |
93 { | |
94 VersionInfo info(op[i], std::string(), std::string(), std::string()); | |
95 if (op[i] == "any") | |
96 EXPECT_TRUE(info.IsValid()); | |
97 else | |
98 EXPECT_FALSE(info.IsValid()); | |
99 } | |
100 { | |
101 VersionInfo info(op[i], std::string(), "8.9", "9.0"); | |
102 EXPECT_TRUE(info.IsValid()); | |
103 } | |
104 } | |
105 | |
106 const std::string number[] = { | |
107 "8.E", | |
108 "8-9", | |
109 }; | |
110 for (size_t i = 0; i < arraysize(number); ++i) { | |
111 VersionInfo info("=", std::string(), number[i], std::string()); | |
112 EXPECT_FALSE(info.IsValid()); | |
113 } | |
114 } | |
115 | |
116 TEST_F(VersionInfoTest, VersionComparison) { | |
117 { | 36 { |
118 VersionInfo info("any", std::string(), std::string(), std::string()); | 37 Version info = {kAny, kNumerical, nullptr, nullptr}; |
119 EXPECT_TRUE(info.Contains("0")); | 38 EXPECT_TRUE(info.Contains("0")); |
120 EXPECT_TRUE(info.Contains("8.9")); | 39 EXPECT_TRUE(info.Contains("8.9")); |
121 EXPECT_TRUE(info.Contains("100")); | 40 EXPECT_TRUE(info.Contains("100")); |
122 } | 41 } |
123 { | 42 { |
124 VersionInfo info(">", std::string(), "8.9", std::string()); | 43 Version info = {kGT, kNumerical, "8.9", nullptr}; |
125 EXPECT_FALSE(info.Contains("7")); | 44 EXPECT_FALSE(info.Contains("7")); |
126 EXPECT_FALSE(info.Contains("8.9")); | 45 EXPECT_FALSE(info.Contains("8.9")); |
127 EXPECT_FALSE(info.Contains("8.9.1")); | 46 EXPECT_FALSE(info.Contains("8.9.1")); |
128 EXPECT_TRUE(info.Contains("9")); | 47 EXPECT_TRUE(info.Contains("9")); |
129 } | 48 } |
130 { | 49 { |
131 VersionInfo info(">=", std::string(), "8.9", std::string()); | 50 Version info = {kGE, kNumerical, "8.9", nullptr}; |
132 EXPECT_FALSE(info.Contains("7")); | 51 EXPECT_FALSE(info.Contains("7")); |
133 EXPECT_TRUE(info.Contains("8.9")); | 52 EXPECT_TRUE(info.Contains("8.9")); |
134 EXPECT_TRUE(info.Contains("8.9.1")); | 53 EXPECT_TRUE(info.Contains("8.9.1")); |
135 EXPECT_TRUE(info.Contains("9")); | 54 EXPECT_TRUE(info.Contains("9")); |
136 } | 55 } |
137 { | 56 { |
138 VersionInfo info("=", std::string(), "8.9", std::string()); | 57 Version info = {kEQ, kNumerical, "8.9", nullptr}; |
139 EXPECT_FALSE(info.Contains("7")); | 58 EXPECT_FALSE(info.Contains("7")); |
140 EXPECT_TRUE(info.Contains("8")); | 59 EXPECT_TRUE(info.Contains("8")); |
141 EXPECT_TRUE(info.Contains("8.9")); | 60 EXPECT_TRUE(info.Contains("8.9")); |
142 EXPECT_TRUE(info.Contains("8.9.1")); | 61 EXPECT_TRUE(info.Contains("8.9.1")); |
143 EXPECT_FALSE(info.Contains("9")); | 62 EXPECT_FALSE(info.Contains("9")); |
144 } | 63 } |
145 { | 64 { |
146 VersionInfo info("<", std::string(), "8.9", std::string()); | 65 Version info = {kLT, kNumerical, "8.9", nullptr}; |
147 EXPECT_TRUE(info.Contains("7")); | 66 EXPECT_TRUE(info.Contains("7")); |
148 EXPECT_TRUE(info.Contains("8.8")); | 67 EXPECT_TRUE(info.Contains("8.8")); |
149 EXPECT_FALSE(info.Contains("8")); | 68 EXPECT_FALSE(info.Contains("8")); |
150 EXPECT_FALSE(info.Contains("8.9")); | 69 EXPECT_FALSE(info.Contains("8.9")); |
151 EXPECT_FALSE(info.Contains("8.9.1")); | 70 EXPECT_FALSE(info.Contains("8.9.1")); |
152 EXPECT_FALSE(info.Contains("9")); | 71 EXPECT_FALSE(info.Contains("9")); |
153 } | 72 } |
154 { | 73 { |
155 VersionInfo info("<=", std::string(), "8.9", std::string()); | 74 Version info = {kLE, kNumerical, "8.9", nullptr}; |
156 EXPECT_TRUE(info.Contains("7")); | 75 EXPECT_TRUE(info.Contains("7")); |
157 EXPECT_TRUE(info.Contains("8.8")); | 76 EXPECT_TRUE(info.Contains("8.8")); |
158 EXPECT_TRUE(info.Contains("8")); | 77 EXPECT_TRUE(info.Contains("8")); |
159 EXPECT_TRUE(info.Contains("8.9")); | 78 EXPECT_TRUE(info.Contains("8.9")); |
160 EXPECT_TRUE(info.Contains("8.9.1")); | 79 EXPECT_TRUE(info.Contains("8.9.1")); |
161 EXPECT_FALSE(info.Contains("9")); | 80 EXPECT_FALSE(info.Contains("9")); |
162 } | 81 } |
163 { | 82 { |
164 VersionInfo info("between", std::string(), "8.9", "9.1"); | 83 Version info = {kBetween, kNumerical, "8.9", "9.1"}; |
165 EXPECT_FALSE(info.Contains("7")); | 84 EXPECT_FALSE(info.Contains("7")); |
166 EXPECT_FALSE(info.Contains("8.8")); | 85 EXPECT_FALSE(info.Contains("8.8")); |
167 EXPECT_TRUE(info.Contains("8")); | 86 EXPECT_TRUE(info.Contains("8")); |
168 EXPECT_TRUE(info.Contains("8.9")); | 87 EXPECT_TRUE(info.Contains("8.9")); |
169 EXPECT_TRUE(info.Contains("8.9.1")); | 88 EXPECT_TRUE(info.Contains("8.9.1")); |
170 EXPECT_TRUE(info.Contains("9")); | 89 EXPECT_TRUE(info.Contains("9")); |
171 EXPECT_TRUE(info.Contains("9.1")); | 90 EXPECT_TRUE(info.Contains("9.1")); |
172 EXPECT_TRUE(info.Contains("9.1.9")); | 91 EXPECT_TRUE(info.Contains("9.1.9")); |
173 EXPECT_FALSE(info.Contains("9.2")); | 92 EXPECT_FALSE(info.Contains("9.2")); |
174 EXPECT_FALSE(info.Contains("10")); | 93 EXPECT_FALSE(info.Contains("10")); |
175 } | 94 } |
176 } | 95 } |
177 | 96 |
178 TEST_F(VersionInfoTest, DateComparison) { | 97 TEST_F(VersionTest, DateComparison) { |
179 // When we use '-' as splitter, we assume a format of mm-dd-yyyy | 98 // When we use '-' as splitter, we assume a format of mm-dd-yyyy |
180 // or mm-yyyy, i.e., a date. | 99 // or mm-yyyy, i.e., a date. |
181 { | 100 { |
182 VersionInfo info("=", std::string(), "1976.3.21", std::string()); | 101 Version info = {kEQ, kNumerical, "1976.3.21", nullptr}; |
183 EXPECT_TRUE(info.Contains("3-21-1976", '-')); | 102 EXPECT_TRUE(info.Contains("3-21-1976", '-')); |
184 EXPECT_TRUE(info.Contains("3-1976", '-')); | 103 EXPECT_TRUE(info.Contains("3-1976", '-')); |
185 EXPECT_TRUE(info.Contains("03-1976", '-')); | 104 EXPECT_TRUE(info.Contains("03-1976", '-')); |
186 EXPECT_FALSE(info.Contains("21-3-1976", '-')); | 105 EXPECT_FALSE(info.Contains("21-3-1976", '-')); |
187 } | 106 } |
188 { | 107 { |
189 VersionInfo info(">", std::string(), "1976.3.21", std::string()); | 108 Version info = {kGT, kNumerical, "1976.3.21", nullptr}; |
190 EXPECT_TRUE(info.Contains("3-22-1976", '-')); | 109 EXPECT_TRUE(info.Contains("3-22-1976", '-')); |
191 EXPECT_TRUE(info.Contains("4-1976", '-')); | 110 EXPECT_TRUE(info.Contains("4-1976", '-')); |
192 EXPECT_TRUE(info.Contains("04-1976", '-')); | 111 EXPECT_TRUE(info.Contains("04-1976", '-')); |
193 EXPECT_FALSE(info.Contains("3-1976", '-')); | 112 EXPECT_FALSE(info.Contains("3-1976", '-')); |
194 EXPECT_FALSE(info.Contains("2-1976", '-')); | 113 EXPECT_FALSE(info.Contains("2-1976", '-')); |
195 } | 114 } |
196 { | 115 { |
197 VersionInfo info("between", std::string(), "1976.3.21", "2012.12.25"); | 116 Version info = {kBetween, kNumerical, "1976.3.21", "2012.12.25"}; |
198 EXPECT_FALSE(info.Contains("3-20-1976", '-')); | 117 EXPECT_FALSE(info.Contains("3-20-1976", '-')); |
199 EXPECT_TRUE(info.Contains("3-21-1976", '-')); | 118 EXPECT_TRUE(info.Contains("3-21-1976", '-')); |
200 EXPECT_TRUE(info.Contains("3-22-1976", '-')); | 119 EXPECT_TRUE(info.Contains("3-22-1976", '-')); |
201 EXPECT_TRUE(info.Contains("3-1976", '-')); | 120 EXPECT_TRUE(info.Contains("3-1976", '-')); |
202 EXPECT_TRUE(info.Contains("4-1976", '-')); | 121 EXPECT_TRUE(info.Contains("4-1976", '-')); |
203 EXPECT_TRUE(info.Contains("1-1-2000", '-')); | 122 EXPECT_TRUE(info.Contains("1-1-2000", '-')); |
204 EXPECT_TRUE(info.Contains("1-2000", '-')); | 123 EXPECT_TRUE(info.Contains("1-2000", '-')); |
205 EXPECT_TRUE(info.Contains("2000", '-')); | 124 EXPECT_TRUE(info.Contains("2000", '-')); |
206 EXPECT_TRUE(info.Contains("11-2012", '-')); | 125 EXPECT_TRUE(info.Contains("11-2012", '-')); |
207 EXPECT_TRUE(info.Contains("12-2012", '-')); | 126 EXPECT_TRUE(info.Contains("12-2012", '-')); |
208 EXPECT_TRUE(info.Contains("12-24-2012", '-')); | 127 EXPECT_TRUE(info.Contains("12-24-2012", '-')); |
209 EXPECT_TRUE(info.Contains("12-25-2012", '-')); | 128 EXPECT_TRUE(info.Contains("12-25-2012", '-')); |
210 EXPECT_FALSE(info.Contains("12-26-2012", '-')); | 129 EXPECT_FALSE(info.Contains("12-26-2012", '-')); |
211 EXPECT_FALSE(info.Contains("1-2013", '-')); | 130 EXPECT_FALSE(info.Contains("1-2013", '-')); |
212 EXPECT_FALSE(info.Contains("2013", '-')); | 131 EXPECT_FALSE(info.Contains("2013", '-')); |
213 } | 132 } |
214 } | 133 } |
215 | 134 |
216 TEST_F(VersionInfoTest, LexicalComparison) { | 135 TEST_F(VersionTest, LexicalComparison) { |
217 // When we use lexical style, we assume a format major.minor.*. | 136 // When we use lexical style, we assume a format major.minor.*. |
218 // We apply numerical comparison to major, lexical comparison to others. | 137 // We apply numerical comparison to major, lexical comparison to others. |
219 { | 138 { |
220 VersionInfo info("<", "lexical", "8.201", std::string()); | 139 Version info = {kLT, kLexical, "8.201", nullptr}; |
221 EXPECT_TRUE(info.Contains("8.001.100")); | 140 EXPECT_TRUE(info.Contains("8.001.100")); |
222 EXPECT_TRUE(info.Contains("8.109")); | 141 EXPECT_TRUE(info.Contains("8.109")); |
223 EXPECT_TRUE(info.Contains("8.10900")); | 142 EXPECT_TRUE(info.Contains("8.10900")); |
224 EXPECT_TRUE(info.Contains("8.109.100")); | 143 EXPECT_TRUE(info.Contains("8.109.100")); |
225 EXPECT_TRUE(info.Contains("8.2")); | 144 EXPECT_TRUE(info.Contains("8.2")); |
226 EXPECT_TRUE(info.Contains("8.20")); | 145 EXPECT_TRUE(info.Contains("8.20")); |
227 EXPECT_TRUE(info.Contains("8.200")); | 146 EXPECT_TRUE(info.Contains("8.200")); |
228 EXPECT_TRUE(info.Contains("8.20.100")); | 147 EXPECT_TRUE(info.Contains("8.20.100")); |
229 EXPECT_FALSE(info.Contains("8.201")); | 148 EXPECT_FALSE(info.Contains("8.201")); |
230 EXPECT_FALSE(info.Contains("8.2010")); | 149 EXPECT_FALSE(info.Contains("8.2010")); |
231 EXPECT_FALSE(info.Contains("8.21")); | 150 EXPECT_FALSE(info.Contains("8.21")); |
232 EXPECT_FALSE(info.Contains("8.21.100")); | 151 EXPECT_FALSE(info.Contains("8.21.100")); |
233 EXPECT_FALSE(info.Contains("9.002")); | 152 EXPECT_FALSE(info.Contains("9.002")); |
234 EXPECT_FALSE(info.Contains("9.201")); | 153 EXPECT_FALSE(info.Contains("9.201")); |
235 EXPECT_FALSE(info.Contains("12")); | 154 EXPECT_FALSE(info.Contains("12")); |
236 EXPECT_FALSE(info.Contains("12.201")); | 155 EXPECT_FALSE(info.Contains("12.201")); |
237 } | 156 } |
238 { | 157 { |
239 VersionInfo info("<", "lexical", "9.002", std::string()); | 158 Version info = {kLT, kLexical, "9.002", nullptr}; |
240 EXPECT_TRUE(info.Contains("8.001.100")); | 159 EXPECT_TRUE(info.Contains("8.001.100")); |
241 EXPECT_TRUE(info.Contains("8.109")); | 160 EXPECT_TRUE(info.Contains("8.109")); |
242 EXPECT_TRUE(info.Contains("8.10900")); | 161 EXPECT_TRUE(info.Contains("8.10900")); |
243 EXPECT_TRUE(info.Contains("8.109.100")); | 162 EXPECT_TRUE(info.Contains("8.109.100")); |
244 EXPECT_TRUE(info.Contains("8.2")); | 163 EXPECT_TRUE(info.Contains("8.2")); |
245 EXPECT_TRUE(info.Contains("8.20")); | 164 EXPECT_TRUE(info.Contains("8.20")); |
246 EXPECT_TRUE(info.Contains("8.200")); | 165 EXPECT_TRUE(info.Contains("8.200")); |
247 EXPECT_TRUE(info.Contains("8.20.100")); | 166 EXPECT_TRUE(info.Contains("8.20.100")); |
248 EXPECT_TRUE(info.Contains("8.201")); | 167 EXPECT_TRUE(info.Contains("8.201")); |
249 EXPECT_TRUE(info.Contains("8.2010")); | 168 EXPECT_TRUE(info.Contains("8.2010")); |
250 EXPECT_TRUE(info.Contains("8.21")); | 169 EXPECT_TRUE(info.Contains("8.21")); |
251 EXPECT_TRUE(info.Contains("8.21.100")); | 170 EXPECT_TRUE(info.Contains("8.21.100")); |
252 EXPECT_FALSE(info.Contains("9.002")); | 171 EXPECT_FALSE(info.Contains("9.002")); |
253 EXPECT_FALSE(info.Contains("9.201")); | 172 EXPECT_FALSE(info.Contains("9.201")); |
254 EXPECT_FALSE(info.Contains("12")); | 173 EXPECT_FALSE(info.Contains("12")); |
255 EXPECT_FALSE(info.Contains("12.201")); | 174 EXPECT_FALSE(info.Contains("12.201")); |
256 } | 175 } |
257 } | 176 } |
258 | 177 |
259 } // namespace gpu | 178 } // namespace gpu |
260 | |
OLD | NEW |