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 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 {
28 public:
29 VersionTest() = default;
30 ~VersionTest() override = default;
31
32 typedef GpuControlList::Version Version;
33 };
34
TEST_F(VersionTest,VersionComparison)35 TEST_F(VersionTest, VersionComparison) {
36 {
37 Version info = {kAny, kNumerical, nullptr, nullptr};
38 EXPECT_TRUE(info.Contains("0"));
39 EXPECT_TRUE(info.Contains("8.9"));
40 EXPECT_TRUE(info.Contains("100"));
41 EXPECT_TRUE(info.Contains("1.9.alpha"));
42 }
43 {
44 Version info = {kGT, kNumerical, "8.9", nullptr};
45 EXPECT_FALSE(info.Contains("7"));
46 EXPECT_FALSE(info.Contains("8.9"));
47 EXPECT_FALSE(info.Contains("8.9.hs762"));
48 EXPECT_FALSE(info.Contains("8.9.1"));
49 EXPECT_TRUE(info.Contains("9"));
50 EXPECT_TRUE(info.Contains("9.hs762"));
51 }
52 {
53 Version info = {kGE, kNumerical, "8.9", nullptr};
54 EXPECT_FALSE(info.Contains("7"));
55 EXPECT_FALSE(info.Contains("7.07hdy"));
56 EXPECT_TRUE(info.Contains("8.9"));
57 EXPECT_TRUE(info.Contains("8.9.1"));
58 EXPECT_TRUE(info.Contains("8.9.1beta0"));
59 EXPECT_TRUE(info.Contains("9"));
60 EXPECT_TRUE(info.Contains("9.0rel"));
61 }
62 {
63 Version info = {kEQ, kNumerical, "8.9", nullptr};
64 EXPECT_FALSE(info.Contains("7"));
65 EXPECT_TRUE(info.Contains("8"));
66 EXPECT_TRUE(info.Contains("8.1uhdy"));
67 EXPECT_TRUE(info.Contains("8.9"));
68 EXPECT_TRUE(info.Contains("8.9.8alp9"));
69 EXPECT_TRUE(info.Contains("8.9.1"));
70 EXPECT_FALSE(info.Contains("9"));
71 }
72 {
73 Version info = {kLT, kNumerical, "8.9", nullptr};
74 EXPECT_TRUE(info.Contains("7"));
75 EXPECT_TRUE(info.Contains("7.txt"));
76 EXPECT_TRUE(info.Contains("8.8"));
77 EXPECT_TRUE(info.Contains("8.8.test"));
78 EXPECT_FALSE(info.Contains("8"));
79 EXPECT_FALSE(info.Contains("8.9"));
80 EXPECT_FALSE(info.Contains("8.9.1"));
81 EXPECT_FALSE(info.Contains("8.9.duck"));
82 EXPECT_FALSE(info.Contains("9"));
83 }
84 {
85 Version info = {kLE, kNumerical, "8.9", nullptr};
86 EXPECT_TRUE(info.Contains("7"));
87 EXPECT_TRUE(info.Contains("8.8"));
88 EXPECT_TRUE(info.Contains("8"));
89 EXPECT_TRUE(info.Contains("8.9"));
90 EXPECT_TRUE(info.Contains("8.9.chicken"));
91 EXPECT_TRUE(info.Contains("8.9.1"));
92 EXPECT_FALSE(info.Contains("9"));
93 EXPECT_FALSE(info.Contains("9.pork"));
94 }
95 {
96 Version info = {kBetween, kNumerical, "8.9", "9.1"};
97 EXPECT_FALSE(info.Contains("7"));
98 EXPECT_FALSE(info.Contains("8.8"));
99 EXPECT_TRUE(info.Contains("8"));
100 EXPECT_TRUE(info.Contains("8.9"));
101 EXPECT_TRUE(info.Contains("8.9.1"));
102 EXPECT_TRUE(info.Contains("9"));
103 EXPECT_TRUE(info.Contains("9.1"));
104 EXPECT_TRUE(info.Contains("9.1.9"));
105 EXPECT_FALSE(info.Contains("9.2"));
106 EXPECT_FALSE(info.Contains("10"));
107 }
108 }
109
TEST_F(VersionTest,DateComparison)110 TEST_F(VersionTest, DateComparison) {
111 // When we use '-' as splitter, we assume a format of mm-dd-yyyy
112 // or mm-yyyy, i.e., a date.
113 {
114 Version info = {kEQ, kNumerical, "1976.3.21", nullptr};
115 EXPECT_TRUE(info.Contains("3-21-1976", '-'));
116 EXPECT_TRUE(info.Contains("3-1976", '-'));
117 EXPECT_TRUE(info.Contains("03-1976", '-'));
118 EXPECT_FALSE(info.Contains("21-3-1976", '-'));
119 }
120 {
121 Version info = {kGT, kNumerical, "1976.3.21", nullptr};
122 EXPECT_TRUE(info.Contains("3-22-1976", '-'));
123 EXPECT_TRUE(info.Contains("4-1976", '-'));
124 EXPECT_TRUE(info.Contains("04-1976", '-'));
125 EXPECT_FALSE(info.Contains("3-1976", '-'));
126 EXPECT_FALSE(info.Contains("2-1976", '-'));
127 }
128 {
129 Version info = {kBetween, kNumerical, "1976.3.21", "2012.12.25"};
130 EXPECT_FALSE(info.Contains("3-20-1976", '-'));
131 EXPECT_TRUE(info.Contains("3-21-1976", '-'));
132 EXPECT_TRUE(info.Contains("3-22-1976", '-'));
133 EXPECT_TRUE(info.Contains("3-1976", '-'));
134 EXPECT_TRUE(info.Contains("4-1976", '-'));
135 EXPECT_TRUE(info.Contains("1-1-2000", '-'));
136 EXPECT_TRUE(info.Contains("1-2000", '-'));
137 EXPECT_TRUE(info.Contains("2000", '-'));
138 EXPECT_TRUE(info.Contains("11-2012", '-'));
139 EXPECT_TRUE(info.Contains("12-2012", '-'));
140 EXPECT_TRUE(info.Contains("12-24-2012", '-'));
141 EXPECT_TRUE(info.Contains("12-25-2012", '-'));
142 EXPECT_FALSE(info.Contains("12-26-2012", '-'));
143 EXPECT_FALSE(info.Contains("1-2013", '-'));
144 EXPECT_FALSE(info.Contains("2013", '-'));
145 }
146 }
147
TEST_F(VersionTest,LexicalComparison)148 TEST_F(VersionTest, LexicalComparison) {
149 // When we use lexical style, we assume a format major.minor.*.
150 // We apply numerical comparison to major, lexical comparison to others.
151 {
152 Version info = {kLT, kLexical, "8.201", nullptr};
153 EXPECT_TRUE(info.Contains("8.001.100"));
154 EXPECT_TRUE(info.Contains("8.109"));
155 EXPECT_TRUE(info.Contains("8.10900"));
156 EXPECT_TRUE(info.Contains("8.109.100"));
157 EXPECT_TRUE(info.Contains("8.2"));
158 EXPECT_TRUE(info.Contains("8.20"));
159 EXPECT_TRUE(info.Contains("8.200"));
160 EXPECT_TRUE(info.Contains("8.20.100"));
161 EXPECT_FALSE(info.Contains("8.201"));
162 EXPECT_FALSE(info.Contains("8.2010"));
163 EXPECT_FALSE(info.Contains("8.21"));
164 EXPECT_FALSE(info.Contains("8.21.100"));
165 EXPECT_FALSE(info.Contains("9.002"));
166 EXPECT_FALSE(info.Contains("9.201"));
167 EXPECT_FALSE(info.Contains("12"));
168 EXPECT_FALSE(info.Contains("12.201"));
169 }
170 {
171 Version info = {kLT, kLexical, "9.002", nullptr};
172 EXPECT_TRUE(info.Contains("8.001.100"));
173 EXPECT_TRUE(info.Contains("8.109"));
174 EXPECT_TRUE(info.Contains("8.10900"));
175 EXPECT_TRUE(info.Contains("8.109.100"));
176 EXPECT_TRUE(info.Contains("8.2"));
177 EXPECT_TRUE(info.Contains("8.20"));
178 EXPECT_TRUE(info.Contains("8.200"));
179 EXPECT_TRUE(info.Contains("8.20.100"));
180 EXPECT_TRUE(info.Contains("8.201"));
181 EXPECT_TRUE(info.Contains("8.2010"));
182 EXPECT_TRUE(info.Contains("8.21"));
183 EXPECT_TRUE(info.Contains("8.21.100"));
184 EXPECT_FALSE(info.Contains("9.002"));
185 EXPECT_FALSE(info.Contains("9.201"));
186 EXPECT_FALSE(info.Contains("12"));
187 EXPECT_FALSE(info.Contains("12.201"));
188 }
189 }
190
191 } // namespace gpu
192