| 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 |