Home | History | Annotate | Download | only in config
      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 OsInfoTest : public testing::Test {
     11  public:
     12   OsInfoTest() { }
     13   virtual ~OsInfoTest() { }
     14 
     15   typedef GpuControlList::OsInfo OsInfo;
     16 };
     17 
     18 TEST_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 
     46 TEST_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 
     82 TEST_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 
    104 TEST_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 
    122 TEST_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