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