OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include <stddef.h> | |
6 | |
7 #include "gpu/config/gpu_control_list.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace gpu { | |
11 | |
12 class VersionInfoTest : public testing::Test { | |
13 public: | |
14 VersionInfoTest() { } | |
15 ~VersionInfoTest() override {} | |
16 | |
17 typedef GpuControlList::VersionInfo VersionInfo; | |
18 }; | |
19 | |
20 TEST_F(VersionInfoTest, ValidVersionInfo) { | |
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 { | |
118 VersionInfo info("any", std::string(), std::string(), std::string()); | |
119 EXPECT_TRUE(info.Contains("0")); | |
120 EXPECT_TRUE(info.Contains("8.9")); | |
121 EXPECT_TRUE(info.Contains("100")); | |
122 } | |
123 { | |
124 VersionInfo info(">", std::string(), "8.9", std::string()); | |
125 EXPECT_FALSE(info.Contains("7")); | |
126 EXPECT_FALSE(info.Contains("8.9")); | |
127 EXPECT_FALSE(info.Contains("8.9.1")); | |
128 EXPECT_TRUE(info.Contains("9")); | |
129 } | |
130 { | |
131 VersionInfo info(">=", std::string(), "8.9", std::string()); | |
132 EXPECT_FALSE(info.Contains("7")); | |
133 EXPECT_TRUE(info.Contains("8.9")); | |
134 EXPECT_TRUE(info.Contains("8.9.1")); | |
135 EXPECT_TRUE(info.Contains("9")); | |
136 } | |
137 { | |
138 VersionInfo info("=", std::string(), "8.9", std::string()); | |
139 EXPECT_FALSE(info.Contains("7")); | |
140 EXPECT_TRUE(info.Contains("8")); | |
141 EXPECT_TRUE(info.Contains("8.9")); | |
142 EXPECT_TRUE(info.Contains("8.9.1")); | |
143 EXPECT_FALSE(info.Contains("9")); | |
144 } | |
145 { | |
146 VersionInfo info("<", std::string(), "8.9", std::string()); | |
147 EXPECT_TRUE(info.Contains("7")); | |
148 EXPECT_TRUE(info.Contains("8.8")); | |
149 EXPECT_FALSE(info.Contains("8")); | |
150 EXPECT_FALSE(info.Contains("8.9")); | |
151 EXPECT_FALSE(info.Contains("8.9.1")); | |
152 EXPECT_FALSE(info.Contains("9")); | |
153 } | |
154 { | |
155 VersionInfo info("<=", std::string(), "8.9", std::string()); | |
156 EXPECT_TRUE(info.Contains("7")); | |
157 EXPECT_TRUE(info.Contains("8.8")); | |
158 EXPECT_TRUE(info.Contains("8")); | |
159 EXPECT_TRUE(info.Contains("8.9")); | |
160 EXPECT_TRUE(info.Contains("8.9.1")); | |
161 EXPECT_FALSE(info.Contains("9")); | |
162 } | |
163 { | |
164 VersionInfo info("between", std::string(), "8.9", "9.1"); | |
165 EXPECT_FALSE(info.Contains("7")); | |
166 EXPECT_FALSE(info.Contains("8.8")); | |
167 EXPECT_TRUE(info.Contains("8")); | |
168 EXPECT_TRUE(info.Contains("8.9")); | |
169 EXPECT_TRUE(info.Contains("8.9.1")); | |
170 EXPECT_TRUE(info.Contains("9")); | |
171 EXPECT_TRUE(info.Contains("9.1")); | |
172 EXPECT_TRUE(info.Contains("9.1.9")); | |
173 EXPECT_FALSE(info.Contains("9.2")); | |
174 EXPECT_FALSE(info.Contains("10")); | |
175 } | |
176 } | |
177 | |
178 TEST_F(VersionInfoTest, DateComparison) { | |
179 // When we use '-' as splitter, we assume a format of mm-dd-yyyy | |
180 // or mm-yyyy, i.e., a date. | |
181 { | |
182 VersionInfo info("=", std::string(), "1976.3.21", std::string()); | |
183 EXPECT_TRUE(info.Contains("3-21-1976", '-')); | |
184 EXPECT_TRUE(info.Contains("3-1976", '-')); | |
185 EXPECT_TRUE(info.Contains("03-1976", '-')); | |
186 EXPECT_FALSE(info.Contains("21-3-1976", '-')); | |
187 } | |
188 { | |
189 VersionInfo info(">", std::string(), "1976.3.21", std::string()); | |
190 EXPECT_TRUE(info.Contains("3-22-1976", '-')); | |
191 EXPECT_TRUE(info.Contains("4-1976", '-')); | |
192 EXPECT_TRUE(info.Contains("04-1976", '-')); | |
193 EXPECT_FALSE(info.Contains("3-1976", '-')); | |
194 EXPECT_FALSE(info.Contains("2-1976", '-')); | |
195 } | |
196 { | |
197 VersionInfo info("between", std::string(), "1976.3.21", "2012.12.25"); | |
198 EXPECT_FALSE(info.Contains("3-20-1976", '-')); | |
199 EXPECT_TRUE(info.Contains("3-21-1976", '-')); | |
200 EXPECT_TRUE(info.Contains("3-22-1976", '-')); | |
201 EXPECT_TRUE(info.Contains("3-1976", '-')); | |
202 EXPECT_TRUE(info.Contains("4-1976", '-')); | |
203 EXPECT_TRUE(info.Contains("1-1-2000", '-')); | |
204 EXPECT_TRUE(info.Contains("1-2000", '-')); | |
205 EXPECT_TRUE(info.Contains("2000", '-')); | |
206 EXPECT_TRUE(info.Contains("11-2012", '-')); | |
207 EXPECT_TRUE(info.Contains("12-2012", '-')); | |
208 EXPECT_TRUE(info.Contains("12-24-2012", '-')); | |
209 EXPECT_TRUE(info.Contains("12-25-2012", '-')); | |
210 EXPECT_FALSE(info.Contains("12-26-2012", '-')); | |
211 EXPECT_FALSE(info.Contains("1-2013", '-')); | |
212 EXPECT_FALSE(info.Contains("2013", '-')); | |
213 } | |
214 } | |
215 | |
216 TEST_F(VersionInfoTest, LexicalComparison) { | |
217 // When we use lexical style, we assume a format major.minor.*. | |
218 // We apply numerical comparison to major, lexical comparison to others. | |
219 { | |
220 VersionInfo info("<", "lexical", "8.201", std::string()); | |
221 EXPECT_TRUE(info.Contains("8.001.100")); | |
222 EXPECT_TRUE(info.Contains("8.109")); | |
223 EXPECT_TRUE(info.Contains("8.10900")); | |
224 EXPECT_TRUE(info.Contains("8.109.100")); | |
225 EXPECT_TRUE(info.Contains("8.2")); | |
226 EXPECT_TRUE(info.Contains("8.20")); | |
227 EXPECT_TRUE(info.Contains("8.200")); | |
228 EXPECT_TRUE(info.Contains("8.20.100")); | |
229 EXPECT_FALSE(info.Contains("8.201")); | |
230 EXPECT_FALSE(info.Contains("8.2010")); | |
231 EXPECT_FALSE(info.Contains("8.21")); | |
232 EXPECT_FALSE(info.Contains("8.21.100")); | |
233 EXPECT_FALSE(info.Contains("9.002")); | |
234 EXPECT_FALSE(info.Contains("9.201")); | |
235 EXPECT_FALSE(info.Contains("12")); | |
236 EXPECT_FALSE(info.Contains("12.201")); | |
237 } | |
238 { | |
239 VersionInfo info("<", "lexical", "9.002", std::string()); | |
240 EXPECT_TRUE(info.Contains("8.001.100")); | |
241 EXPECT_TRUE(info.Contains("8.109")); | |
242 EXPECT_TRUE(info.Contains("8.10900")); | |
243 EXPECT_TRUE(info.Contains("8.109.100")); | |
244 EXPECT_TRUE(info.Contains("8.2")); | |
245 EXPECT_TRUE(info.Contains("8.20")); | |
246 EXPECT_TRUE(info.Contains("8.200")); | |
247 EXPECT_TRUE(info.Contains("8.20.100")); | |
248 EXPECT_TRUE(info.Contains("8.201")); | |
249 EXPECT_TRUE(info.Contains("8.2010")); | |
250 EXPECT_TRUE(info.Contains("8.21")); | |
251 EXPECT_TRUE(info.Contains("8.21.100")); | |
252 EXPECT_FALSE(info.Contains("9.002")); | |
253 EXPECT_FALSE(info.Contains("9.201")); | |
254 EXPECT_FALSE(info.Contains("12")); | |
255 EXPECT_FALSE(info.Contains("12.201")); | |
256 } | |
257 } | |
258 | |
259 } // namespace gpu | |
260 | |
OLD | NEW |