Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Unified Diff: gpu/config/gpu_control_list_entry_unittest.cc

Issue 2756793003: Move GPU blacklist and driver bug workaround list from json to data struct. (Closed)
Patch Set: pure rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/config/gpu_control_list.cc ('k') | gpu/config/gpu_control_list_jsons.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « gpu/config/gpu_control_list.cc ('k') | gpu/config/gpu_control_list_jsons.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698