| Index: gpu/config/gpu_control_list_entry_unittest.cc
|
| diff --git a/gpu/config/gpu_control_list_entry_unittest.cc b/gpu/config/gpu_control_list_entry_unittest.cc
|
| index 7c63438e291197e4404745159f2d931d646f9ed6..2ea1feca67ffebcc37db99369b43b04f0d04439d 100644
|
| --- a/gpu/config/gpu_control_list_entry_unittest.cc
|
| +++ b/gpu/config/gpu_control_list_entry_unittest.cc
|
| @@ -4,54 +4,52 @@
|
|
|
| #include <stddef.h>
|
|
|
| -#include <memory>
|
| -
|
| -#include "base/json/json_reader.h"
|
| #include "gpu/config/gpu_control_list.h"
|
| +#include "gpu/config/gpu_control_list_testing_data.h"
|
| #include "gpu/config/gpu_info.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -#define LONG_STRING_CONST(...) #__VA_ARGS__
|
| -
|
| namespace gpu {
|
|
|
| -enum TestFeatureType {
|
| - TEST_FEATURE_0 = 0,
|
| - TEST_FEATURE_1,
|
| - TEST_FEATURE_2
|
| -};
|
| +namespace {
|
| +
|
| +constexpr auto kOsLinux = GpuControlList::kOsLinux;
|
| +constexpr auto kOsMacosx = GpuControlList::kOsMacosx;
|
| +constexpr auto kOsWin = GpuControlList::kOsWin;
|
| +constexpr auto kOsChromeOS = GpuControlList::kOsChromeOS;
|
| +constexpr auto kOsAndroid = GpuControlList::kOsAndroid;
|
| +constexpr auto kOsAny = GpuControlList::kOsAny;
|
| +
|
| +} // namespace anonymous
|
|
|
| class GpuControlListEntryTest : public testing::Test {
|
| public:
|
| - GpuControlListEntryTest() { }
|
| + typedef GpuControlList::Entry Entry;
|
| +
|
| + GpuControlListEntryTest() {}
|
| ~GpuControlListEntryTest() override {}
|
|
|
| const GPUInfo& gpu_info() const {
|
| return gpu_info_;
|
| }
|
|
|
| - typedef GpuControlList::ScopedGpuControlListEntry ScopedEntry;
|
| -
|
| - static ScopedEntry GetEntryFromString(
|
| - const std::string& json, bool supports_feature_type_all) {
|
| - std::unique_ptr<base::Value> root = base::JSONReader::Read(json);
|
| - base::DictionaryValue* value = NULL;
|
| - if (!root || !root->GetAsDictionary(&value))
|
| - return NULL;
|
| -
|
| - GpuControlList::FeatureMap feature_map;
|
| - feature_map["test_feature_0"] = TEST_FEATURE_0;
|
| - feature_map["test_feature_1"] = TEST_FEATURE_1;
|
| - feature_map["test_feature_2"] = TEST_FEATURE_2;
|
| -
|
| - return GpuControlList::GpuControlListEntry::GetEntryFromValue(
|
| - value, true, feature_map, supports_feature_type_all);
|
| + const Entry& GetEntry(size_t index) {
|
| + EXPECT_LT(index, kGpuControlListTestingEntryCount);
|
| + EXPECT_EQ(index + 1, kGpuControlListTestingEntries[index].id);
|
| + return kGpuControlListTestingEntries[index];
|
| }
|
|
|
| - static ScopedEntry GetEntryFromString(const std::string& json) {
|
| - return GetEntryFromString(json, false);
|
| + size_t CountFeature(const Entry& entry, int feature) {
|
| + size_t count = 0;
|
| + for (size_t ii = 0; ii < entry.feature_size; ++ii) {
|
| + if (entry.features[ii] == feature) {
|
| + ++count;
|
| + }
|
| + }
|
| + return count;
|
| }
|
|
|
| + protected:
|
| void SetUp() override {
|
| gpu_info_.gpu.vendor_id = 0x10de;
|
| gpu_info_.gpu.device_id = 0x0640;
|
| @@ -64,1057 +62,362 @@ class GpuControlListEntryTest : public testing::Test {
|
| gpu_info_.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine";
|
| }
|
|
|
| - protected:
|
| GPUInfo gpu_info_;
|
| };
|
|
|
| TEST_F(GpuControlListEntryTest, DetailedEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 5,
|
| - "description": "test entry",
|
| - "cr_bugs": [1024, 678],
|
| - "webkit_bugs": [1950],
|
| - "os": {
|
| - "type": "macosx",
|
| - "version": {
|
| - "op": "=",
|
| - "value": "10.6.4"
|
| - }
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x0640"],
|
| - "driver_version": {
|
| - "op": "=",
|
| - "value": "1.6.18"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ],
|
| - "disabled_extensions": [
|
| - "test_extension1",
|
| - "test_extension2"
|
| - ]
|
| - }
|
| - );
|
| -
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| - EXPECT_FALSE(entry->disabled());
|
| - EXPECT_EQ(5u, entry->id());
|
| - EXPECT_STREQ("test entry", entry->description().c_str());
|
| - EXPECT_EQ(2u, entry->cr_bugs().size());
|
| - EXPECT_EQ(1024, entry->cr_bugs()[0]);
|
| - EXPECT_EQ(678, entry->cr_bugs()[1]);
|
| - EXPECT_EQ(1u, entry->webkit_bugs().size());
|
| - EXPECT_EQ(1950, entry->webkit_bugs()[0]);
|
| - EXPECT_EQ(1u, entry->features().size());
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_0));
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info(), true));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6.4", gpu_info()));
|
| - EXPECT_STREQ("test_extension1", entry->disabled_extensions()[0].c_str());
|
| - EXPECT_STREQ("test_extension2", entry->disabled_extensions()[1].c_str());
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_DetailedEntry);
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| + EXPECT_STREQ("GpuControlListEntryTest.DetailedEntry", entry.description);
|
| + EXPECT_EQ(2u, entry.cr_bug_size);
|
| + EXPECT_EQ(1024u, entry.cr_bugs[0]);
|
| + EXPECT_EQ(678u, entry.cr_bugs[1]);
|
| + EXPECT_EQ(1u, entry.feature_size);
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_0));
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info(), true));
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6.4", gpu_info()));
|
| + EXPECT_EQ(2u, entry.disabled_extension_size);
|
| + EXPECT_STREQ("test_extension1", entry.disabled_extensions[0]);
|
| + EXPECT_STREQ("test_extension2", entry.disabled_extensions[1]);
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, VendorOnAllOsEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x10de",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsLinux,
|
| - GpuControlList::kOsChromeOS,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_VendorOnAllOsEntry);
|
| + EXPECT_EQ(kOsAny, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsLinux,
|
| + kOsChromeOS, kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, VendorOnLinuxEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux"
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsChromeOS,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_VendorOnLinuxEntry);
|
| + EXPECT_EQ(kOsLinux, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsChromeOS,
|
| + kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, AllExceptNVidiaOnLinuxEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux"
|
| - },
|
| - "exceptions": [
|
| - {
|
| - "vendor_id": "0x10de"
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsLinux,
|
| - GpuControlList::kOsChromeOS,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_AllExceptNVidiaOnLinuxEntry);
|
| + EXPECT_EQ(kOsLinux, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsLinux,
|
| + kOsChromeOS, kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, AllExceptIntelOnLinuxEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux"
|
| - },
|
| - "exceptions": [
|
| - {
|
| - "vendor_id": "0x8086"
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsChromeOS,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_AllExceptIntelOnLinuxEntry);
|
| + EXPECT_EQ(kOsLinux, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsChromeOS,
|
| + kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, DateOnWindowsEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "win"
|
| - },
|
| - "driver_date": {
|
| - "op": "<",
|
| - "value": "2010.5.8"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsWin, entry->GetOsType());
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_DateOnWindowsEntry);
|
| + EXPECT_EQ(kOsWin, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| gpu_info.driver_date = "4-12-2010";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsWin, "10.6", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "10.6", gpu_info));
|
| gpu_info.driver_date = "5-8-2010";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsWin, "10.6", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "10.6", gpu_info));
|
| gpu_info.driver_date = "5-9-2010";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsWin, "10.6", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "10.6", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, MultipleDevicesEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x1023", "0x0640"],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsLinux,
|
| - GpuControlList::kOsChromeOS,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_MultipleDevicesEntry);
|
| + EXPECT_EQ(kOsAny, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsLinux,
|
| + kOsChromeOS, kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, ChromeOSEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "chromeos"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsChromeOS, entry->GetOsType());
|
| -
|
| - const GpuControlList::OsType os_type[] = {
|
| - GpuControlList::kOsMacosx,
|
| - GpuControlList::kOsWin,
|
| - GpuControlList::kOsLinux,
|
| - GpuControlList::kOsAndroid
|
| - };
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_ChromeOSEntry);
|
| + EXPECT_EQ(kOsChromeOS, entry.conditions.os_type);
|
| + const GpuControlList::OsType os_type[] = {kOsMacosx, kOsWin, kOsLinux,
|
| + kOsAndroid};
|
| for (size_t i = 0; i < arraysize(os_type); ++i)
|
| - EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info()));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsChromeOS, "10.6", gpu_info()));
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, MalformedVendor) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "[0x10de]",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, UnknownFieldEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "unknown_field": 0,
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, UnknownExceptionFieldEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 2,
|
| - "exceptions": [
|
| - {
|
| - "unknown_field": 0
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, UnknownFeatureEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "features": [
|
| - "some_unknown_feature",
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| + EXPECT_FALSE(entry.Contains(os_type[i], "10.6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsChromeOS, "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlVersionGLESEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_type": "gles",
|
| - "gl_version": {
|
| - "op": "=",
|
| - "value": "3.0"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlVersionGLESEntry);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)";
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.4.2", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 3.0V@66.0 AU@ (CL@)";
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.4.2", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 3.1 V@66.0 AU@ (CL@)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.4.2", gpu_info));
|
| gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlVersionANGLEEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_type": "angle",
|
| - "gl_version": {
|
| - "op": ">",
|
| - "value": "2.0"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlVersionANGLEEntry);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.4.2", gpu_info));
|
| gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)";
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 2.0 (ANGLE 1.2.0.2450)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlVersionGLEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_type": "gl",
|
| - "gl_version": {
|
| - "op": "<",
|
| - "value": "4.0"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlVersionGLEntry);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.4.2", gpu_info));
|
| gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01";
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_version = "4.0 NVIDIA-8.24.11 310.90.9b01";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlVendorEqual) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_vendor": "NVIDIA",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlVendorEqual);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_vendor = "NVIDIA";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| // Case sensitive.
|
| gpu_info.gl_vendor = "NVidia";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_vendor = "NVIDIA-x";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlVendorWithDot) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_vendor": "X\\.Org.*",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlVendorWithDot);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_vendor = "X.Org R300 Project";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "", gpu_info));
|
| gpu_info.gl_vendor = "X.Org";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlRendererContains) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_renderer": ".*GeForce.*",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlRendererContains);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| // Case sensitive.
|
| gpu_info.gl_renderer = "NVIDIA GEFORCE GT 120 OpenGL Engine";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_renderer = "GeForce GT 120 OpenGL Engine";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_renderer = "NVIDIA GeForce";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_renderer = "NVIDIA Ge Force";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlRendererCaseInsensitive) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_renderer": "(?i).*software.*",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_GlRendererCaseInsensitive);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_renderer = "software rasterizer";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_renderer = "Software Rasterizer";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, GlExtensionsEndWith) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "gl_extensions": ".*GL_SUN_slice_accum",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_GlExtensionsEndWith);
|
| GPUInfo gpu_info;
|
| gpu_info.gl_extensions = "GL_SGIS_generate_mipmap "
|
| "GL_SGIX_shadow "
|
| "GL_SUN_slice_accum";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.gl_extensions = "GL_SGIS_generate_mipmap "
|
| "GL_SUN_slice_accum "
|
| "GL_SGIX_shadow";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, DisabledEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "disabled": true,
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_TRUE(entry->disabled());
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, OptimusEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux"
|
| - },
|
| - "multi_gpu_style": "optimus",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_OptimusEntry);
|
| + EXPECT_EQ(kOsLinux, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| gpu_info.optimus = true;
|
| -
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, AMDSwitchableEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "multi_gpu_style": "amd_switchable",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_AMDSwitchableEntry);
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| gpu_info.amd_switchable = true;
|
| -
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, DriverVendorBeginWith) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "driver_vendor": "NVIDIA.*",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_DriverVendorBeginWith);
|
| GPUInfo gpu_info;
|
| gpu_info.driver_vendor = "NVIDIA Corporation";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| // Case sensitive.
|
| gpu_info.driver_vendor = "NVidia Corporation";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.driver_vendor = "NVIDIA";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| gpu_info.driver_vendor = "USA NVIDIA";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, LexicalDriverVersionEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux"
|
| - },
|
| - "vendor_id": "0x1002",
|
| - "driver_version": {
|
| - "op": "=",
|
| - "style": "lexical",
|
| - "value": "8.76"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_LexicalDriverVersionEntry);
|
| + EXPECT_EQ(kOsLinux, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| gpu_info.gpu.vendor_id = 0x1002;
|
| -
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| -
|
| gpu_info.driver_version = "8.76";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info));
|
| gpu_info.driver_version = "8.768";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info));
|
| gpu_info.driver_version = "8.76.8";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "10.6", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "10.6", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, NeedsMoreInfoEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x8086",
|
| - "driver_version": {
|
| - "op": "<",
|
| - "value": "10.7"
|
| - },
|
| - "features": [
|
| - "test_feature_1"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_NeedsMoreInfoEntry);
|
| GPUInfo gpu_info;
|
| gpu_info.gpu.vendor_id = 0x8086;
|
| - EXPECT_TRUE(entry->NeedsMoreInfo(gpu_info, true));
|
| -
|
| + EXPECT_TRUE(entry.NeedsMoreInfo(gpu_info, true));
|
| gpu_info.driver_version = "10.6";
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, true));
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, true));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, NeedsMoreInfoForExceptionsEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x8086",
|
| - "exceptions": [
|
| - {
|
| - "gl_renderer": ".*mesa.*"
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_1"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_NeedsMoreInfoForExceptionsEntry);
|
| GPUInfo gpu_info;
|
| gpu_info.gpu.vendor_id = 0x8086;
|
| - EXPECT_TRUE(entry->NeedsMoreInfo(gpu_info, true));
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, false));
|
| -
|
| + EXPECT_TRUE(entry.NeedsMoreInfo(gpu_info, true));
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, false));
|
| gpu_info.gl_renderer = "mesa";
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, true));
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, true));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, NeedsMoreInfoForGlVersionEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id" : 1,
|
| - "gl_type": "gl",
|
| - "gl_version": {
|
| - "op": "<",
|
| - "value" : "3.5"
|
| - },
|
| - "features" : [
|
| - "test_feature_1"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| -
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_NeedsMoreInfoForGlVersionEntry);
|
| GPUInfo gpu_info;
|
| - EXPECT_TRUE(entry->NeedsMoreInfo(gpu_info, true));
|
| - EXPECT_TRUE(
|
| - entry->Contains(GpuControlList::kOsUnknown, std::string(), gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.NeedsMoreInfo(gpu_info, true));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, std::string(), gpu_info));
|
| gpu_info.gl_version = "3.1 Mesa 11.1.0";
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, false));
|
| - EXPECT_TRUE(
|
| - entry->Contains(GpuControlList::kOsUnknown, std::string(), gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, false));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, std::string(), gpu_info));
|
| gpu_info.gl_version = "4.1 Mesa 12.1.0";
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, false));
|
| - EXPECT_FALSE(
|
| - entry->Contains(GpuControlList::kOsUnknown, std::string(), gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, false));
|
| + EXPECT_FALSE(entry.Contains(kOsLinux, std::string(), gpu_info));
|
| gpu_info.gl_version = "OpenGL ES 2.0 Mesa 12.1.0";
|
| - EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info, false));
|
| - EXPECT_FALSE(
|
| - entry->Contains(GpuControlList::kOsUnknown, std::string(), gpu_info));
|
| + EXPECT_FALSE(entry.NeedsMoreInfo(gpu_info, false));
|
| + EXPECT_FALSE(entry.Contains(kOsLinux, std::string(), gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, FeatureTypeAllEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "features": [
|
| - "all"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json, true));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(3u, entry->features().size());
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_0));
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_1));
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_2));
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, FeatureTypeAllEntryWithExceptions) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "features": [
|
| - "all",
|
| - {"exceptions" : [
|
| - "test_feature_0"
|
| - ]}
|
| - ]
|
| - }
|
| - );
|
| - bool supports_feature_type_all = true;
|
| - ScopedEntry entry(GetEntryFromString(json, supports_feature_type_all));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_1));
|
| - EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_2));
|
| - EXPECT_EQ(2u, entry->features().size());
|
| -
|
| - supports_feature_type_all = false;
|
| - entry = ScopedEntry(GetEntryFromString(json, supports_feature_type_all));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -}
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_FeatureTypeAllEntry);
|
|
|
| -TEST_F(GpuControlListEntryTest, FeatureTypeAllEntryWithUnknownField) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "features": [
|
| - "all", {
|
| - "exceptions" : [
|
| - "test_feature_0"
|
| - ],
|
| - "unknown_field" : 0
|
| - }
|
| - ]
|
| - }
|
| - );
|
| - bool supports_feature_type_all = true;
|
| - ScopedEntry entry(GetEntryFromString(json, supports_feature_type_all));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -
|
| - supports_feature_type_all = false;
|
| - entry = ScopedEntry(GetEntryFromString(json, supports_feature_type_all));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| + EXPECT_EQ(3u, entry.feature_size);
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_0));
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_1));
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_2));
|
| }
|
|
|
| -TEST_F(GpuControlListEntryTest, InvalidVendorIdEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x0000",
|
| - "features": [
|
| - "test_feature_1"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| -}
|
| -
|
| -TEST_F(GpuControlListEntryTest, InvalidDeviceIdEntry) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x1023", "0x0000"],
|
| - "features": [
|
| - "test_feature_1"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() == NULL);
|
| +TEST_F(GpuControlListEntryTest, FeatureTypeAllEntryWithExceptions) {
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_FeatureTypeAllEntryWithExceptions);
|
| + EXPECT_EQ(2u, entry.feature_size);
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_1));
|
| + EXPECT_EQ(1u, CountFeature(entry, TEST_FEATURE_2));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, SingleActiveGPU) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x0640"],
|
| - "multi_gpu_category": "active",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info()));
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_SingleActiveGPU);
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6", gpu_info()));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, MachineModelName) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "android"
|
| - },
|
| - "machine_model_name": [
|
| - "Nexus 4", "XT1032", "GT-.*", "SCH-.*"
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsAndroid, entry->GetOsType());
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_MachineModelName);
|
| + EXPECT_EQ(kOsAndroid, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| -
|
| gpu_info.machine_model_name = "Nexus 4";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "XT1032";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "XT1032i";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "Nexus 5";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "Nexus";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "GT-N7100";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "GT-I9300";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "SCH-I545";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, MachineModelNameException) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "exceptions": [
|
| - {
|
| - "os": {
|
| - "type": "android"
|
| - },
|
| - "machine_model_name": ["Nexus.*"]
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType());
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_MachineModelNameException);
|
| + EXPECT_EQ(kOsAny, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| -
|
| gpu_info.machine_model_name = "Nexus 4";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "Nexus 7";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "4.1", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "4.1", gpu_info));
|
| gpu_info.machine_model_name = "";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsAndroid, "4.1", gpu_info));
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsLinux, "4.1", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "4.1", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "4.1", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, MachineModelVersion) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "machine_model_name": ["MacBookPro"],
|
| - "machine_model_version": {
|
| - "op": "=",
|
| - "value": "7.1"
|
| - },
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_MachineModelVersion);
|
| GPUInfo gpu_info;
|
| gpu_info.machine_model_name = "MacBookPro";
|
| gpu_info.machine_model_version = "7.1";
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info));
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6", gpu_info));
|
| }
|
|
|
| TEST_F(GpuControlListEntryTest, MachineModelVersionException) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "machine_model_name": ["MacBookPro"],
|
| - "exceptions": [
|
| - {
|
| - "machine_model_version": {
|
| - "op": ">",
|
| - "value": "7.1"
|
| - }
|
| - }
|
| - ],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| -
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_MachineModelVersionException);
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| GPUInfo gpu_info;
|
| gpu_info.machine_model_name = "MacBookPro";
|
| gpu_info.machine_model_version = "7.0";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info));
|
| -
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6", gpu_info));
|
| gpu_info.machine_model_version = "7.2";
|
| - EXPECT_FALSE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info));
|
| -
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.6", gpu_info));
|
| gpu_info.machine_model_version = "";
|
| - EXPECT_TRUE(entry->Contains(
|
| - GpuControlList::kOsMacosx, "10.6", gpu_info));
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.6", gpu_info));
|
| }
|
|
|
| class GpuControlListEntryDualGPUTest : public GpuControlListEntryTest {
|
| @@ -1140,238 +443,226 @@ class GpuControlListEntryDualGPUTest : public GpuControlListEntryTest {
|
| gpu_info_.secondary_gpus[0].active = false;
|
| }
|
|
|
| - void EntryShouldApply(const std::string& entry_json) const {
|
| - EXPECT_TRUE(EntryApplies(entry_json));
|
| + void EntryShouldApply(const Entry& entry) const {
|
| + EXPECT_TRUE(EntryApplies(entry));
|
| }
|
|
|
| - void EntryShouldNotApply(const std::string& entry_json) const {
|
| - EXPECT_FALSE(EntryApplies(entry_json));
|
| + void EntryShouldNotApply(const Entry& entry) const {
|
| + EXPECT_FALSE(EntryApplies(entry));
|
| }
|
|
|
| private:
|
| - bool EntryApplies(const std::string& entry_json) const {
|
| - ScopedEntry entry(GetEntryFromString(entry_json));
|
| - EXPECT_TRUE(entry.get());
|
| - EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType());
|
| - return entry->Contains(GpuControlList::kOsMacosx, "10.6", gpu_info());
|
| + bool EntryApplies(const Entry& entry) const {
|
| + EXPECT_EQ(kOsMacosx, entry.conditions.os_type);
|
| + return entry.Contains(kOsMacosx, "10.6", gpu_info());
|
| }
|
| };
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, CategoryAny) {
|
| - const std::string json_intel = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "device_id": ["0x0166"],
|
| - "multi_gpu_category": "any",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - EntryShouldApply(json_intel);
|
| -
|
| - const std::string json_nvidia = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x0640"],
|
| - "multi_gpu_category": "any",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - EntryShouldApply(json_nvidia);
|
| + const Entry& entry_intel =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_CategoryAny_Intel);
|
| + EntryShouldApply(entry_intel);
|
| + const Entry& entry_nvidia =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_CategoryAny_NVidia);
|
| + EntryShouldApply(entry_nvidia);
|
| }
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, CategoryPrimarySecondary) {
|
| - const std::string json_secondary = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "device_id": ["0x0166"],
|
| - "multi_gpu_category": "secondary",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - EntryShouldApply(json_secondary);
|
| -
|
| - const std::string json_primary = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "device_id": ["0x0166"],
|
| - "multi_gpu_category": "primary",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - EntryShouldNotApply(json_primary);
|
| -
|
| - const std::string json_default = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "device_id": ["0x0166"],
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry_secondary =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_CategorySecondary);
|
| + EntryShouldApply(entry_secondary);
|
| + const Entry& entry_primary =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_CategoryPrimary);
|
| + EntryShouldNotApply(entry_primary);
|
| + const Entry& entry_default =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_CategoryDefault);
|
| // Default is active, and the secondary Intel GPU is active.
|
| - EntryShouldApply(json_default);
|
| + EntryShouldApply(entry_default);
|
| }
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, ActiveSecondaryGPU) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "device_id": ["0x0166", "0x0168"],
|
| - "multi_gpu_category": "active",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_ActiveSecondaryGPU);
|
| // By default, secondary GPU is active.
|
| - EntryShouldApply(json);
|
| -
|
| + EntryShouldApply(entry);
|
| ActivatePrimaryGPU();
|
| - EntryShouldNotApply(json);
|
| + EntryShouldNotApply(entry);
|
| }
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, VendorOnlyActiveSecondaryGPU) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "multi_gpu_category": "active",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_VendorOnlyActiveSecondaryGPU);
|
| // By default, secondary GPU is active.
|
| - EntryShouldApply(json);
|
| -
|
| + EntryShouldApply(entry);
|
| ActivatePrimaryGPU();
|
| - EntryShouldNotApply(json);
|
| + EntryShouldNotApply(entry);
|
| }
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, ActivePrimaryGPU) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "device_id": ["0x0640"],
|
| - "multi_gpu_category": "active",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_ActivePrimaryGPU);
|
| // By default, secondary GPU is active.
|
| - EntryShouldNotApply(json);
|
| -
|
| + EntryShouldNotApply(entry);
|
| ActivatePrimaryGPU();
|
| - EntryShouldApply(json);
|
| + EntryShouldApply(entry);
|
| }
|
|
|
| TEST_F(GpuControlListEntryDualGPUTest, VendorOnlyActivePrimaryGPU) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "macosx"
|
| - },
|
| - "vendor_id": "0x10de",
|
| - "multi_gpu_category": "active",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryDualGPUTest_VendorOnlyActivePrimaryGPU);
|
| // By default, secondary GPU is active.
|
| - EntryShouldNotApply(json);
|
| -
|
| + EntryShouldNotApply(entry);
|
| ActivatePrimaryGPU();
|
| - EntryShouldApply(json);
|
| + EntryShouldApply(entry);
|
| }
|
|
|
| -TEST_F(GpuControlListEntryTest, LinuxKernelVersion) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {
|
| - "id": 1,
|
| - "os": {
|
| - "type": "linux",
|
| - "version": {
|
| - "op": "<",
|
| - "value": "3.19.1"
|
| - }
|
| - },
|
| - "vendor_id": "0x8086",
|
| - "features": [
|
| - "test_feature_0"
|
| - ]
|
| - }
|
| - );
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType());
|
| +TEST_F(GpuControlListEntryTest, PixelShaderVersion) {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_PixelShaderVersion);
|
| + EXPECT_EQ(kOsAny, entry.conditions.os_type);
|
| + GPUInfo gpu_info;
|
| + gpu_info.pixel_shader_version = "3.2";
|
| + EXPECT_TRUE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| + gpu_info.pixel_shader_version = "4.9";
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.9", gpu_info));
|
| +}
|
|
|
| +TEST_F(GpuControlListEntryTest, OsVersionZero) {
|
| + {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_OsVersionZeroLT);
|
| + // All forms of version 0 is considered invalid.
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "0", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "0.0", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "0.00.0", gpu_info()));
|
| + }
|
| + {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_OsVersionZeroAny);
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "0", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "0.0", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsAndroid, "0.00.0", gpu_info()));
|
| + }
|
| +}
|
| +
|
| +TEST_F(GpuControlListEntryTest, OsComparison) {
|
| + {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_OsComparisonAny);
|
| + const GpuControlList::OsType os_type[] = {kOsWin, kOsLinux, kOsMacosx,
|
| + kOsChromeOS, kOsAndroid};
|
| + for (size_t i = 0; i < arraysize(os_type); ++i) {
|
| + EXPECT_TRUE(entry.Contains(os_type[i], std::string(), gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(os_type[i], "7.8", gpu_info()));
|
| + }
|
| + }
|
| + {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_OsComparisonGE);
|
| + EXPECT_FALSE(entry.Contains(kOsMacosx, "10.8.3", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsLinux, "10", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsChromeOS, "13", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsAndroid, "7", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, std::string(), gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.1", gpu_info()));
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "7", gpu_info()));
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "5", gpu_info()));
|
| + }
|
| +}
|
| +
|
| +TEST_F(GpuControlListEntryTest, ExceptionWithoutVendorId) {
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_ExceptionWithoutVendorId);
|
| + EXPECT_EQ(0x8086u, entry.exceptions[0].vendor_id);
|
| + EXPECT_EQ(0x8086u, entry.exceptions[1].vendor_id);
|
| GPUInfo gpu_info;
|
| gpu_info.gpu.vendor_id = 0x8086;
|
| + gpu_info.gpu.device_id = 0x2a02;
|
| + gpu_info.driver_version = "9.1";
|
| + EXPECT_FALSE(entry.Contains(kOsLinux, "2.1", gpu_info));
|
| + gpu_info.driver_version = "9.0";
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "2.1", gpu_info));
|
| +}
|
|
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsLinux,
|
| - "3.13.0-63-generic",
|
| - gpu_info));
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsLinux,
|
| - "3.19.2-1-generic",
|
| - gpu_info));
|
| +TEST_F(GpuControlListEntryTest, MultiGpuStyleAMDSwitchable) {
|
| + GPUInfo gpu_info;
|
| + gpu_info.amd_switchable = true;
|
| + gpu_info.gpu.vendor_id = 0x1002;
|
| + gpu_info.gpu.device_id = 0x6760;
|
| + GPUInfo::GPUDevice integrated_gpu;
|
| + integrated_gpu.vendor_id = 0x8086;
|
| + integrated_gpu.device_id = 0x0116;
|
| + gpu_info.secondary_gpus.push_back(integrated_gpu);
|
| +
|
| + { // amd_switchable_discrete entry
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_MultiGpuStyleAMDSwitchableDiscrete);
|
| + // Integrated GPU is active
|
| + gpu_info.gpu.active = false;
|
| + gpu_info.secondary_gpus[0].active = true;
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.0", gpu_info));
|
| + // Discrete GPU is active
|
| + gpu_info.gpu.active = true;
|
| + gpu_info.secondary_gpus[0].active = false;
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.0", gpu_info));
|
| + }
|
| +
|
| + { // amd_switchable_integrated entry
|
| + const Entry& entry =
|
| + GetEntry(kGpuControlListEntryTest_MultiGpuStyleAMDSwitchableIntegrated);
|
| + // Discrete GPU is active
|
| + gpu_info.gpu.active = true;
|
| + gpu_info.secondary_gpus[0].active = false;
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.0", gpu_info));
|
| + // Integrated GPU is active
|
| + gpu_info.gpu.active = false;
|
| + gpu_info.secondary_gpus[0].active = true;
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.0", gpu_info));
|
| + // For non AMD switchable
|
| + gpu_info.amd_switchable = false;
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.0", gpu_info));
|
| + }
|
| }
|
|
|
| -TEST_F(GpuControlListEntryTest, PixelShaderVersion) {
|
| - const std::string json = LONG_STRING_CONST(
|
| - {"id" : 1, "pixel_shader_version" : {"op" : "<", "value" : "4.1"}});
|
| - ScopedEntry entry(GetEntryFromString(json));
|
| - EXPECT_TRUE(entry.get() != NULL);
|
| - EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType());
|
| +TEST_F(GpuControlListEntryTest, InProcessGPU) {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_InProcessGPU);
|
| + GPUInfo gpu_info;
|
| + gpu_info.in_process_gpu = true;
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| + gpu_info.in_process_gpu = false;
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| +}
|
|
|
| +TEST_F(GpuControlListEntryTest, SameGPUTwiceTest) {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_SameGPUTwiceTest);
|
| GPUInfo gpu_info;
|
| - gpu_info.pixel_shader_version = "3.2";
|
| - EXPECT_TRUE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| - gpu_info.pixel_shader_version = "4.9";
|
| - EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info));
|
| + gpu_info.gpu.vendor_id = 0x8086;
|
| + // Real case on Intel GMA* on Windows
|
| + gpu_info.secondary_gpus.push_back(gpu_info.gpu);
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "6.1", gpu_info));
|
| }
|
|
|
| -} // namespace gpu
|
| +TEST_F(GpuControlListEntryTest, NVidiaNumberingScheme) {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_NVidiaNumberingScheme);
|
| + GPUInfo gpu_info;
|
| + gpu_info.gl_vendor = "NVIDIA";
|
| + gpu_info.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine";
|
| + gpu_info.gpu.vendor_id = 0x10de;
|
| + gpu_info.gpu.device_id = 0x0640;
|
| + // test the same driver version number
|
| + gpu_info.driver_version = "8.17.12.6973";
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "7.0", gpu_info));
|
| + // test a lower driver version number
|
| + gpu_info.driver_version = "8.15.11.8647";
|
| + EXPECT_TRUE(entry.Contains(kOsWin, "7.0", gpu_info));
|
| + // test a higher driver version number
|
| + gpu_info.driver_version = "9.18.13.2723";
|
| + EXPECT_FALSE(entry.Contains(kOsWin, "7.0", gpu_info));
|
| +}
|
| +
|
| +TEST_F(GpuControlListEntryTest, DirectRendering) {
|
| + const Entry& entry = GetEntry(kGpuControlListEntryTest_DirectRendering);
|
| + GPUInfo gpu_info;
|
| + gpu_info.direct_rendering = true;
|
| + EXPECT_FALSE(entry.Contains(kOsLinux, "7.0", gpu_info));
|
| + gpu_info.direct_rendering = false;
|
| + EXPECT_TRUE(entry.Contains(kOsLinux, "7.0", gpu_info));
|
| +}
|
|
|
| +} // namespace gpu
|
|
|