Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: gpu/config/gpu_control_list_version_unittest.cc

Issue 2756793003: Move GPU blacklist and driver bug workaround list from json to data struct. (Closed)
Patch Set: pure rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/config/gpu_control_list_version_info_unittest.cc ('k') | gpu/config/gpu_driver_bug_list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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;
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
OLDNEW
« no previous file with comments | « gpu/config/gpu_control_list_version_info_unittest.cc ('k') | gpu/config/gpu_driver_bug_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698