Chromium Code Reviews| 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 |