blob: 1da6f99dc1d6804d73d01b15cb13333bb7bf6eb2 [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/config/gpu_control_list.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace gpu {
class OsInfoTest : public testing::Test {
public:
OsInfoTest() { }
virtual ~OsInfoTest() { }
typedef GpuControlList::OsInfo OsInfo;
};
TEST_F(OsInfoTest, ValidOsInfo) {
const std::string os[] = {
"win",
"linux",
"macosx",
"chromeos",
"android",
"any"
};
const GpuControlList::OsType os_type[] = {
GpuControlList::kOsWin,
GpuControlList::kOsLinux,
GpuControlList::kOsMacosx,
GpuControlList::kOsChromeOS,
GpuControlList::kOsAndroid,
GpuControlList::kOsAny
};
for (size_t i = 0; i < arraysize(os); ++i) {
OsInfo info(os[i], "=", "10.6", std::string());
EXPECT_TRUE(info.IsValid());
EXPECT_EQ(os_type[i], info.type());
}
{
OsInfo info("any", "any", std::string(), std::string());
EXPECT_TRUE(info.IsValid());
}
}
TEST_F(OsInfoTest, InvalidOsInfo) {
const std::string os[] = {
"win",
"linux",
"macosx",
"chromeos",
"android",
"any"
};
for (size_t i = 0; i < arraysize(os); ++i) {
{
OsInfo info(os[i], std::string(), std::string(), std::string());
EXPECT_FALSE(info.IsValid());
}
{
OsInfo info(os[i], "=", std::string(), std::string());
EXPECT_FALSE(info.IsValid());
}
{
OsInfo info(os[i], std::string(), "10.6", std::string());
EXPECT_FALSE(info.IsValid());
}
}
const std::string os_cap[] = {
"Win",
"Linux",
"MacOSX",
"ChromeOS",
"Android",
};
for (size_t i = 0; i < arraysize(os_cap); ++i) {
OsInfo info(os_cap[i], "=", "10.6", std::string());
EXPECT_FALSE(info.IsValid());
}
}
TEST_F(OsInfoTest, NonNumericOsVersion) {
{
OsInfo info("android", "<", "4.2", std::string());
EXPECT_TRUE(info.IsValid());
// The expectation is the version number first, then extra info.
EXPECT_TRUE(info.Contains(
GpuControlList::kOsAndroid, "4.0 bug fix version 5.2"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "F"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "F 4.0"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, std::string()));
}
{
OsInfo info("android", "any", std::string(), std::string());
EXPECT_TRUE(info.IsValid());
EXPECT_TRUE(info.Contains(
GpuControlList::kOsAndroid, "4.0 bug fix version 5.2"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "F"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "F 4.0"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, std::string()));
}
}
TEST_F(OsInfoTest, OsVersionZero) {
{
OsInfo info("android", "<", "4.2", std::string());
EXPECT_TRUE(info.IsValid());
// All forms of version 0 is considered invalid.
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0.0"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "0.00.0"));
}
{
OsInfo info("android", "any", std::string(), std::string());
EXPECT_TRUE(info.IsValid());
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0.0"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsAndroid, "0.00.0"));
}
}
TEST_F(OsInfoTest, OsComparison) {
{
OsInfo info("any", "any", std::string(), std::string());
const GpuControlList::OsType os_type[] = {
GpuControlList::kOsWin, GpuControlList::kOsLinux,
GpuControlList::kOsMacosx, GpuControlList::kOsChromeOS,
GpuControlList::kOsAndroid,
};
for (size_t i = 0; i < arraysize(os_type); ++i) {
EXPECT_TRUE(info.Contains(os_type[i], std::string()));
EXPECT_TRUE(info.Contains(os_type[i], "7.8"));
}
}
{
OsInfo info("win", ">=", "6", std::string());
EXPECT_FALSE(info.Contains(GpuControlList::kOsMacosx, "10.8.3"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsLinux, "10"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsChromeOS, "13"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAndroid, "7"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsAny, "7"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsWin, std::string()));
EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "6"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "6.1"));
EXPECT_TRUE(info.Contains(GpuControlList::kOsWin, "7"));
EXPECT_FALSE(info.Contains(GpuControlList::kOsWin, "5"));
}
}
} // namespace gpu