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 8namespace gpu { 9 10class OsInfoTest : public testing::Test { 11 public: 12 OsInfoTest() { } 13 virtual ~OsInfoTest() { } 14 15 typedef GpuControlList::OsInfo OsInfo; 16}; 17 18TEST_F(OsInfoTest, ValidOsInfo) { 19 const std::string os[] = { 20 "win", 21 "linux", 22 "macosx", 23 "chromeos", 24 "android", 25 "any" 26 }; 27 const GpuControlList::OsType os_type[] = { 28 GpuControlList::kOsWin, 29 GpuControlList::kOsLinux, 30 GpuControlList::kOsMacosx, 31 GpuControlList::kOsChromeOS, 32 GpuControlList::kOsAndroid, 33 GpuControlList::kOsAny 34 }; 35 for (size_t i = 0; i < arraysize(os); ++i) { 36 OsInfo info(os[i], "=", "10.6", std::string()); 37 EXPECT_TRUE(info.IsValid()); 38 EXPECT_EQ(os_type[i], info.type()); 39 } 40 { 41 OsInfo info("any", "any", std::string(), std::string()); 42 EXPECT_TRUE(info.IsValid()); 43 } 44} 45 46TEST_F(OsInfoTest, InvalidOsInfo) { 47 const std::string os[] = { 48 "win", 49 "linux", 50 "macosx", 51 "chromeos", 52 "android", 53 "any" 54 }; 55 for (size_t i = 0; i < arraysize(os); ++i) { 56 { 57 OsInfo info(os[i], std::string(), std::string(), std::string()); 58 EXPECT_FALSE(info.IsValid()); 59 } 60 { 61 OsInfo info(os[i], "=", std::string(), std::string()); 62 EXPECT_FALSE(info.IsValid()); 63 } 64 { 65 OsInfo info(os[i], std::string(), "10.6", std::string()); 66 EXPECT_FALSE(info.IsValid()); 67 } 68 } 69 const std::string os_cap[] = { 70 "Win", 71 "Linux", 72 "MacOSX", 73 "ChromeOS", 74 "Android", 75 }; 76 for (size_t i = 0; i < arraysize(os_cap); ++i) { 77 OsInfo info(os_cap[i], "=", "10.6", std::string()); 78 EXPECT_FALSE(info.IsValid()); 79 } 80} 81 82TEST_F(OsInfoTest, NonNumericOsVersion) { 83 { 84 OsInfo info("android", "<", "4.2", std::string()); 85 EXPECT_TRUE(info.IsValid()); 86 // The expectation is the version number first, then extra info. 87 EXPECT_TRUE(info.Contains( 88 GpuControlList::kOsAndroid, "4.0 bug fix version 5.2")); 89 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "F")); 90 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "F 4.0")); 91 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, std::string())); 92 } 93 { 94 OsInfo info("android", "any", std::string(), std::string()); 95 EXPECT_TRUE(info.IsValid()); 96 EXPECT_TRUE(info.Contains( 97 GpuControlList::kOsAndroid, "4.0 bug fix version 5.2")); 98 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "F")); 99 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "F 4.0")); 100 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, std::string())); 101 } 102} 103 104TEST_F(OsInfoTest, OsVersionZero) { 105 { 106 OsInfo info("android", "<", "4.2", std::string()); 107 EXPECT_TRUE(info.IsValid()); 108 // All forms of version 0 is considered invalid. 109 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0")); 110 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0.0")); 111 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0.00.0")); 112 } 113 { 114 OsInfo info("android", "any", std::string(), std::string()); 115 EXPECT_TRUE(info.IsValid()); 116 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0")); 117 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0.0")); 118 EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0.00.0")); 119 } 120} 121 122TEST_F(OsInfoTest, OsComparison) { 123 { 124 OsInfo info("any", "any", std::string(), std::string()); 125 const GpuControlList::OsType os_type[] = { 126 GpuControlList::kOsWin, GpuControlList::kOsLinux, 127 GpuControlList::kOsMacosx, GpuControlList::kOsChromeOS, 128 GpuControlList::kOsAndroid, 129 }; 130 for (size_t i = 0; i < arraysize(os_type); ++i) { 131 EXPECT_TRUE(info.Contains(os_type[i], std::string())); 132 EXPECT_TRUE(info.Contains(os_type[i], "7.8")); 133 } 134 } 135 { 136 OsInfo info("win", ">=", "6", std::string()); 137 EXPECT_FALSE(info.Contains(GpuControlList::kOsMacosx, "10.8.3")); 138 EXPECT_FALSE(info.Contains(GpuControlList::kOsLinux, "10")); 139 EXPECT_FALSE(info.Contains(GpuControlList::kOsChromeOS, "13")); 140 EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "7")); 141 EXPECT_FALSE(info.Contains(GpuControlList::kOsAny, "7")); 142 EXPECT_FALSE(info.Contains(GpuControlList::kOsWin, std::string())); 143 EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "6")); 144 EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "6.1")); 145 EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "7")); 146 EXPECT_FALSE(info.Contains(GpuControlList::kOsWin, "5")); 147 } 148} 149 150} // namespace gpu 151 152