1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/json/json_reader.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/config/gpu_control_list.h" 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/config/gpu_info.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define LONG_STRING_CONST(...) #__VA_ARGS__ 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace gpu { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)enum TestFeatureType { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TEST_FEATURE_0 = 0, 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TEST_FEATURE_1, 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TEST_FEATURE_2 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class GpuControlListEntryTest : public testing::Test { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlListEntryTest() { } 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~GpuControlListEntryTest() { } 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GPUInfo& gpu_info() const { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return gpu_info_; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) typedef GpuControlList::ScopedGpuControlListEntry ScopedEntry; 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static ScopedEntry GetEntryFromString( 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& json, bool supports_feature_type_all) { 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<base::Value> root; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) root.reset(base::JSONReader::Read(json)); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* value = NULL; 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (root.get() == NULL || !root->GetAsDictionary(&value)) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return NULL; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::FeatureMap feature_map; 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) feature_map["test_feature_0"] = TEST_FEATURE_0; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) feature_map["test_feature_1"] = TEST_FEATURE_1; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) feature_map["test_feature_2"] = TEST_FEATURE_2; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GpuControlList::GpuControlListEntry::GetEntryFromValue( 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) value, true, feature_map, supports_feature_type_all); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static ScopedEntry GetEntryFromString(const std::string& json) { 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetEntryFromString(json, false); 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.gpu.vendor_id = 0x10de; 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.gpu.device_id = 0x0640; 55e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.gpu.active = true; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.driver_vendor = "NVIDIA"; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.driver_version = "1.6.18"; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.driver_date = "7-14-2009"; 59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info_.gl_version = "2.1 NVIDIA-8.24.11 310.90.9b01"; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.gl_vendor = "NVIDIA Corporation"; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine"; 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.performance_stats.graphics = 5.0; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.performance_stats.gaming = 5.0; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info_.performance_stats.overall = 5.0; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 67e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch protected: 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info_; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, DetailedEntry) { 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 5, 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "description": "test entry", 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "cr_bugs": [1024, 678], 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "webkit_bugs": [1950], 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "macosx", 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "version": { 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "=", 82d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) "value": "10.6.4" 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x10de", 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "device_id": ["0x0640"], 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "driver_version": { 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "=", 89d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) "value": "1.6.18" 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->disabled()); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(5u, entry->id()); 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_STREQ("test entry", entry->description().c_str()); 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(2u, entry->cr_bugs().size()); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1024, entry->cr_bugs()[0]); 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(678, entry->cr_bugs()[1]); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->webkit_bugs().size()); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1950, entry->webkit_bugs()[0]); 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->features().size()); 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_0)); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info())); 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, "10.6.4", gpu_info())); 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, VendorOnAllOsEntry) { 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x10de", 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 126868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType()); 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info())); 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, VendorOnLinuxEntry) { 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "linux" 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x10de", 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 154868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType()); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info())); 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info())); 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, AllExceptNVidiaOnLinuxEntry) { 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "linux" 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "exceptions": [ 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x10de" 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ], 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType()); 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info())); 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, AllExceptIntelOnLinuxEntry) { 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "linux" 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "exceptions": [ 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x8086" 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ], 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 219868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType()); 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info())); 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info())); 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, DateOnWindowsEntry) { 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "win" 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "driver_date": { 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "<", 243d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) "value": "2010.5.8" 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 251868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsWin, entry->GetOsType()); 253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_date = "4-12-2010"; 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, "10.6", gpu_info)); 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_date = "5-8-2010"; 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains( 260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, "10.6", gpu_info)); 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_date = "5-9-2010"; 262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains( 263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, "10.6", gpu_info)); 264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, MultipleDevicesEntry) { 267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x10de", 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "device_id": ["0x1023", "0x0640"], 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 278868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 279c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType()); 280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, 285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, 286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains(os_type[i], "10.6", gpu_info())); 290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, ChromeOSEntry) { 293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "chromeos" 298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 305868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsChromeOS, entry->GetOsType()); 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GpuControlList::OsType os_type[] = { 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsWin, 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsAndroid 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < arraysize(os_type); ++i) 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->Contains(os_type[i], "10.6", gpu_info())); 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsChromeOS, "10.6", gpu_info())); 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, MalformedVendor) { 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "[0x10de]", 325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 331868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() == NULL); 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, UnknownFieldEntry) { 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "unknown_field": 0, 339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 342c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 345d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(entry.get() == NULL); 346c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, UnknownExceptionFieldEntry) { 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 2, 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "exceptions": [ 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "unknown_field": 0 355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ], 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 360c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 363d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(entry.get() == NULL); 364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, UnknownFeatureEntry) { 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 371c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "some_unknown_feature", 372c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 376c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 377d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(entry.get() == NULL); 378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 380010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(GpuControlListEntryTest, GlVersionGLESEntry) { 381010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 382010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) { 383010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "id": 1, 384010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_type": "gles", 385010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_version": { 386010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "op": "=", 387010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "value": "3.0" 388010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) }, 389010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "features": [ 390010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "test_feature_0" 391010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ] 392010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 393010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ); 394010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 395010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 396010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 397010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GPUInfo gpu_info; 398010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)"; 399010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info)); 400010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 401010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.1 V@66.0 AU@ (CL@)"; 402010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info)); 403010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 404010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01"; 405010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); 406010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 407010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)"; 408010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); 409010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 410010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 411010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(GpuControlListEntryTest, GlVersionANGLEEntry) { 412010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 413010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) { 414010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "id": 1, 415010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_type": "angle", 416010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_version": { 417010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "op": ">", 418010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "value": "2.0" 419010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) }, 420010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "features": [ 421010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "test_feature_0" 422010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ] 423010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 424010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ); 425010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 426010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 427010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 428010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GPUInfo gpu_info; 429010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)"; 430010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info)); 431010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 432010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01"; 433010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); 434010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 435010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)"; 436010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); 437010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 438010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 2.0 (ANGLE 1.2.0.2450)"; 439010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); 440010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 441010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 442010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(GpuControlListEntryTest, GlVersionGLEntry) { 443010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 444010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) { 445010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "id": 1, 446010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_type": "gl", 447010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "gl_version": { 448010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "op": "<", 449010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "value": "4.0" 450010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) }, 451010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "features": [ 452010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "test_feature_0" 453010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ] 454010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 455010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ); 456010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 457010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 458010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 459010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GPUInfo gpu_info; 460010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 V@66.0 AU@ (CL@)"; 461010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsAndroid, "4.4.2", gpu_info)); 462010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 463010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "3.0 NVIDIA-8.24.11 310.90.9b01"; 464010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); 465010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 466010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "4.0 NVIDIA-8.24.11 310.90.9b01"; 467010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsMacosx, "10.9", gpu_info)); 468010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 469010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gpu_info.gl_version = "OpenGL ES 3.0 (ANGLE 1.2.0.2450)"; 470010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "6.1", gpu_info)); 471010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 472010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, GlVendorEqual) { 474c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 475c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 476c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_vendor": "NVIDIA", 478c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 479c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 480c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 481c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 483c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 484868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 485c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 4876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_vendor = "NVIDIA"; 4886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 4896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 4906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Case sensitive. 4926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_vendor = "NVidia"; 4936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 4946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 4956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_vendor = "NVIDIA-x"; 4976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 4986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 499c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 500c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, GlVendorWithDot) { 502c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 503c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 504c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 5056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_vendor": "X\\.Org.*", 506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 507c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 510c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 512868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 513c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 5156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_vendor = "X.Org R300 Project"; 5166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsLinux, "", gpu_info)); 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_vendor = "X.Org"; 5206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsLinux, "", gpu_info)); 5226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, GlRendererContains) { 5256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string json = LONG_STRING_CONST( 5266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { 5276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "id": 1, 5286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_renderer": ".*GeForce.*", 5296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "features": [ 5306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "test_feature_0" 5316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ] 5326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ); 5346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 5356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 5366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 5386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine"; 5396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Case sensitive. 5436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "NVIDIA GEFORCE GT 120 OpenGL Engine"; 5446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 5456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "GeForce GT 120 OpenGL Engine"; 5486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "NVIDIA GeForce"; 5526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "NVIDIA Ge Force"; 5566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 5576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, GlRendererCaseInsensitive) { 5616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string json = LONG_STRING_CONST( 5626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { 5636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "id": 1, 5646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_renderer": "(?i).*software.*", 5656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "features": [ 5666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "test_feature_0" 5676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ] 5686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ); 5706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 5716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 5726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 5746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "software rasterizer"; 5756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_renderer = "Software Rasterizer"; 5796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 5806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 5816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, GlExtensionsEndWith) { 5846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string json = LONG_STRING_CONST( 5856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { 5866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "id": 1, 5876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_extensions": ".*GL_SUN_slice_accum", 5886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "features": [ 5896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "test_feature_0" 5906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ] 5916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ); 5936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 5946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 5956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 5976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_extensions = "GL_SGIS_generate_mipmap " 5986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "GL_SGIX_shadow " 5996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "GL_SUN_slice_accum"; 6006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 6016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 6026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 6036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.gl_extensions = "GL_SGIS_generate_mipmap " 6046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "GL_SUN_slice_accum " 6056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "GL_SGIX_shadow"; 6066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 6076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 608c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 609c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 610c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, PerfGraphicsEntry) { 611c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 612c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 613c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 614c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "perf_graphics": { 615c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "<", 616c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "value": "6.0" 617c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 618c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 619c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 620c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 621c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 622c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 623c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 624868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 625868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry->Contains(GpuControlList::kOsWin, "10.6", gpu_info())); 626c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 627c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 628c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, PerfGamingEntry) { 629c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 630c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 631c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 632c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "perf_graphics": { 633c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "<=", 634c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "value": "4.0" 635c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 636c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 637c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 638c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 639c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 640c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 641c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 642868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 643868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(entry->Contains(GpuControlList::kOsWin, "10.6", gpu_info())); 644c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 645c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 646c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, PerfOverallEntry) { 647c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 648c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 649c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "perf_overall": { 651c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "between", 652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "value": "1.0", 653c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "value2": "9.0" 654c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 655c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 656c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 657c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 658c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 659c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 660c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 661868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 662868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry->Contains(GpuControlList::kOsWin, "10.6", gpu_info())); 663c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 664c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 665c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, DisabledEntry) { 666c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 667c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 668c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 669c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "disabled": true, 670c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 671c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 672c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 673c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 674c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 675c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 676868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 677c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->disabled()); 678c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 679c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 680c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, OptimusEntry) { 681c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 682c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 683c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 684c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 685c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "linux" 686c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 687c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "multi_gpu_style": "optimus", 688c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 689c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 690c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 691c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 692c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 693c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 694c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.optimus = true; 695c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 696c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 697868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 698c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType()); 699c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 700c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info)); 701c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 702c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 703c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, AMDSwitchableEntry) { 704c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 705c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 706c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 707c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 708c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "macosx" 709c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 710c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "multi_gpu_style": "amd_switchable", 711c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 712c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 713c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 714c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 715c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 716c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 717c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.amd_switchable = true; 718c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 719c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 720868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 721c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 722c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 723c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsMacosx, "10.6", gpu_info)); 724c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 725c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST_F(GpuControlListEntryTest, DriverVendorBeginWith) { 7276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string json = LONG_STRING_CONST( 7286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { 7296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "id": 1, 7306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "driver_vendor": "NVIDIA.*", 7316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "features": [ 7326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "test_feature_0" 7336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ] 7346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 7356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ); 7366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 7376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 7386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GPUInfo gpu_info; 7406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.driver_vendor = "NVIDIA Corporation"; 7416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 7426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 7436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Case sensitive. 7456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.driver_vendor = "NVidia Corporation"; 7466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 7476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 7486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.driver_vendor = "NVIDIA"; 7506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 7516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 7526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 7536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.driver_vendor = "USA NVIDIA"; 7546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 7556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsMacosx, "10.9", gpu_info)); 7566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 7576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 758c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, LexicalDriverVersionEntry) { 759c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 760c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 761c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 762c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "os": { 763c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "type": "linux" 764c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 765c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x1002", 766c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "driver_version": { 767c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "=", 768c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "style": "lexical", 769d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) "value": "8.76" 770c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 771c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 772c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_0" 773c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 774c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 775c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 776c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 777c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.gpu.vendor_id = 0x1002; 778c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 779c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 780868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 781c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GpuControlList::kOsLinux, entry->GetOsType()); 782c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 783c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_version = "8.76"; 784c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 785c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info)); 786c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 787c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_version = "8.768"; 788c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 789c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info)); 790c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 791c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_version = "8.76.8"; 792c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->Contains( 793c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GpuControlList::kOsLinux, "10.6", gpu_info)); 794c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 795c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 796c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, NeedsMoreInfoEntry) { 797c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 798c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 799c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 800c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x8086", 801c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "driver_version": { 802c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "op": "<", 803d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) "value": "10.7" 804c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 805c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 806c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_1" 807c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 808c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 809c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 810c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 811868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 812c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 813c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 814c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.gpu.vendor_id = 0x8086; 815c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->NeedsMoreInfo(gpu_info)); 816c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 817c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.driver_version = "10.6"; 818c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info)); 819c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 820c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 821c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, NeedsMoreInfoForExceptionsEntry) { 822c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 823c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 824c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 825c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "vendor_id": "0x8086", 826c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "exceptions": [ 827c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 8286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "gl_renderer": ".*mesa.*" 829c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 830c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ], 831c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 832c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "test_feature_1" 833c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 834c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 835c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 836c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json)); 837868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 838c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 839c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPUInfo gpu_info; 840c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.gpu.vendor_id = 0x8086; 841c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(entry->NeedsMoreInfo(gpu_info)); 842c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 843c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gpu_info.gl_renderer = "mesa"; 844c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(entry->NeedsMoreInfo(gpu_info)); 845c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 846c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 847c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(GpuControlListEntryTest, FeatureTypeAllEntry) { 848c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string json = LONG_STRING_CONST( 849c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 850c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "id": 1, 851c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "features": [ 852c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "all" 853c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ] 854c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 855c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ); 856c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedEntry entry(GetEntryFromString(json, true)); 857868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(entry.get() != NULL); 858c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(3u, entry->features().size()); 859c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_0)); 860c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_1)); 861c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1u, entry->features().count(TEST_FEATURE_2)); 862c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 863c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 864e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryTest, InvalidVendorIdEntry) { 865e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 866e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 867e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 868e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x0000", 869e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 870e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_1" 871e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 872e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 873e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 874e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ScopedEntry entry(GetEntryFromString(json)); 875e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(entry.get() == NULL); 876e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 877e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 878e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryTest, InvalidDeviceIdEntry) { 879e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 880e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 881e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 882e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x10de", 883e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x1023", "0x0000"], 884e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 885e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_1" 886e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 887e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 888e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 889e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ScopedEntry entry(GetEntryFromString(json)); 890e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(entry.get() == NULL); 891e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 892e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 893e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryTest, SingleActiveGPU) { 894e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 895e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 896e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 897e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 898e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 899e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 900e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x10de", 901e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0640"], 902e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "active", 903e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 904e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 905e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 906e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 907e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 908e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ScopedEntry entry(GetEntryFromString(json)); 909e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(entry.get() != NULL); 910e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 911e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(entry->Contains( 912e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GpuControlList::kOsMacosx, "10.6", gpu_info())); 913e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 914e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 9150529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(GpuControlListEntryTest, MachineModelName) { 9160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const std::string json = LONG_STRING_CONST( 9170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { 9180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "id": 1, 9190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "os": { 9200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "type": "android" 9210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch }, 9226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "machine_model_name": [ 9236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "Nexus 4", "XT1032", "GT-.*", "SCH-.*" 9246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ], 9250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "features": [ 9260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "test_feature_0" 9270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ] 9280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 9290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ); 9300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ScopedEntry entry(GetEntryFromString(json)); 9310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(entry.get() != NULL); 9320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(GpuControlList::kOsAndroid, entry->GetOsType()); 9330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GPUInfo gpu_info; 9340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "Nexus 4"; 9360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(entry->Contains( 9370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsAndroid, "4.1", gpu_info)); 9380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "XT1032"; 9400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(entry->Contains( 9410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsAndroid, "4.1", gpu_info)); 9420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "XT1032i"; 9440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(entry->Contains( 9450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsAndroid, "4.1", gpu_info)); 9460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "Nexus 5"; 9480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(entry->Contains( 9490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsAndroid, "4.1", gpu_info)); 9500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "Nexus"; 9520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(entry->Contains( 9530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsAndroid, "4.1", gpu_info)); 9545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 9555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_name = ""; 9565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(entry->Contains( 9575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsAndroid, "4.1", gpu_info)); 9586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 9596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.machine_model_name = "GT-N7100"; 9606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 9616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsAndroid, "4.1", gpu_info)); 9626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 9636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.machine_model_name = "GT-I9300"; 9646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 9656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsAndroid, "4.1", gpu_info)); 9666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 9676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.machine_model_name = "SCH-I545"; 9686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 9696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsAndroid, "4.1", gpu_info)); 9705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 9715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 9725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(GpuControlListEntryTest, MachineModelNameException) { 9735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string json = LONG_STRING_CONST( 9745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu { 9755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "id": 1, 9765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "exceptions": [ 9775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu { 9785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "os": { 9795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "type": "android" 9805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }, 9816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "machine_model_name": ["Nexus.*"] 9825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 9835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ], 9845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "features": [ 9855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "test_feature_0" 9865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ] 9875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 9885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ); 9895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ScopedEntry entry(GetEntryFromString(json)); 9905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry.get() != NULL); 9915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(GpuControlList::kOsAny, entry->GetOsType()); 9925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GPUInfo gpu_info; 9935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 9945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_name = "Nexus 4"; 9955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(entry->Contains( 9966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsAndroid, "4.1", gpu_info)); 9976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(entry->Contains( 9986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GpuControlList::kOsLinux, "4.1", gpu_info)); 9996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 10006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) gpu_info.machine_model_name = "Nexus 7"; 10016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(entry->Contains( 10025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsAndroid, "4.1", gpu_info)); 10035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry->Contains( 10045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsLinux, "4.1", gpu_info)); 10055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_name = ""; 10075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry->Contains( 10085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsAndroid, "4.1", gpu_info)); 10095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry->Contains( 10105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsLinux, "4.1", gpu_info)); 10110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 10120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 10130529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(GpuControlListEntryTest, MachineModelVersion) { 10140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const std::string json = LONG_STRING_CONST( 10150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { 10160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "id": 1, 10170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "os": { 10180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "type": "macosx" 10190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch }, 10200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "machine_model_name": ["MacBookPro"], 10210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "machine_model_version": { 10220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "op": "=", 10230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "value": "7.1" 10240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch }, 10250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "features": [ 10260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "test_feature_0" 10270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ] 10280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 10290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ); 10300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ScopedEntry entry(GetEntryFromString(json)); 10310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(entry.get() != NULL); 10320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GPUInfo gpu_info; 10330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_name = "MacBookPro"; 10340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gpu_info.machine_model_version = "7.1"; 10350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 10360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(entry->Contains( 10370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch GpuControlList::kOsMacosx, "10.6", gpu_info)); 10380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 10390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 10405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(GpuControlListEntryTest, MachineModelVersionException) { 10415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string json = LONG_STRING_CONST( 10425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu { 10435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "id": 1, 10445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "os": { 10455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "type": "macosx" 10465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }, 10475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "machine_model_name": ["MacBookPro"], 10485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "exceptions": [ 10495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu { 10505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "machine_model_version": { 10515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "op": ">", 10525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "value": "7.1" 10535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 10545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 10555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ], 10565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "features": [ 10575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "test_feature_0" 10585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ] 10595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 10605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ); 10615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ScopedEntry entry(GetEntryFromString(json)); 10625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry.get() != NULL); 10635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 10645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GPUInfo gpu_info; 10665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_name = "MacBookPro"; 10675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_version = "7.0"; 10685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry->Contains( 10695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsMacosx, "10.6", gpu_info)); 10705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_version = "7.2"; 10725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(entry->Contains( 10735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsMacosx, "10.6", gpu_info)); 10745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gpu_info.machine_model_version = ""; 10765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(entry->Contains( 10775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GpuControlList::kOsMacosx, "10.6", gpu_info)); 10785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 10795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1080e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochclass GpuControlListEntryDualGPUTest : public GpuControlListEntryTest { 1081e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch public: 1082e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GpuControlListEntryDualGPUTest() { } 1083e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual ~GpuControlListEntryDualGPUTest() { } 1084e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1085e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual void SetUp() OVERRIDE { 1086e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Set up a NVIDIA/Intel dual, with NVIDIA as primary and Intel as 1087e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // secondary, and initially Intel is active. 1088e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.gpu.vendor_id = 0x10de; 1089e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.gpu.device_id = 0x0640; 1090e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.gpu.active = false; 1091e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GPUInfo::GPUDevice second_gpu; 1092e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch second_gpu.vendor_id = 0x8086; 1093e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch second_gpu.device_id = 0x0166; 1094e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch second_gpu.active = true; 1095e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.secondary_gpus.push_back(second_gpu); 1096e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1097e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1098e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch void ActivatePrimaryGPU() { 1099e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.gpu.active = true; 1100e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch gpu_info_.secondary_gpus[0].active = false; 1101e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1102e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1103e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch void EntryShouldApply(const std::string& entry_json) const { 1104e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(EntryApplies(entry_json)); 1105e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1106e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1107e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch void EntryShouldNotApply(const std::string& entry_json) const { 1108e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(EntryApplies(entry_json)); 1109e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1110e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1111e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch private: 1112e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch bool EntryApplies(const std::string& entry_json) const { 1113e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ScopedEntry entry(GetEntryFromString(entry_json)); 1114e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(entry.get()); 1115e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_EQ(GpuControlList::kOsMacosx, entry->GetOsType()); 1116e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return entry->Contains(GpuControlList::kOsMacosx, "10.6", gpu_info()); 1117e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1118e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch}; 1119e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1120e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, CategoryAny) { 1121e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json_intel = LONG_STRING_CONST( 1122e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1123e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1124e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1125e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1126e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1127e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1128e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0166"], 1129e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "any", 1130e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1131e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1132e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1133e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1134e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1135e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json_intel); 1136e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1137e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json_nvidia = LONG_STRING_CONST( 1138e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1139e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1140e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1141e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1142e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1143e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x10de", 1144e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0640"], 1145e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "any", 1146e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1147e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1148e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1149e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1150e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1151e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json_nvidia); 1152e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1153e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1154e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, CategoryPrimarySecondary) { 1155e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json_secondary = LONG_STRING_CONST( 1156e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1157e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1158e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1159e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1160e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1161e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1162e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0166"], 1163e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "secondary", 1164e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1165e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1166e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1167e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1168e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1169e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json_secondary); 1170e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1171e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json_primary = LONG_STRING_CONST( 1172e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1173e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1174e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1175e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1176e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1177e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1178e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0166"], 1179e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "primary", 1180e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1181e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1182e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1183e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1184e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1185e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json_primary); 1186e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1187e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json_default = LONG_STRING_CONST( 1188e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1189e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1190e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1191e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1192e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1193e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1194e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0166"], 1195e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1196e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1197e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1198e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1199e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1200e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Default is primary. 1201e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json_default); 1202e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1203e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1204e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, ActiveSecondaryGPU) { 1205e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 1206e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1207e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1208e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1209e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1210e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1211e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1212e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0166", "0x0168"], 1213e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "active", 1214e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1215e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1216e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1217e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1218e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1219e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // By default, secondary GPU is active. 1220e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json); 1221e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1222e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ActivatePrimaryGPU(); 1223e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json); 1224e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1225e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1226e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, VendorOnlyActiveSecondaryGPU) { 1227e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 1228e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1229e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1230e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1231e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1232e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1233e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x8086", 1234e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "active", 1235e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1236e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1237e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1238e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1239e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1240e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // By default, secondary GPU is active. 1241e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json); 1242e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1243e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ActivatePrimaryGPU(); 1244e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json); 1245e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1246e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1247e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, ActivePrimaryGPU) { 1248e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 1249e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1250e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1251e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1252e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1253e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1254e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x10de", 1255e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "device_id": ["0x0640"], 1256e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "active", 1257e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1258e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1259e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1260e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1261e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1262e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // By default, secondary GPU is active. 1263e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json); 1264e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1265e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ActivatePrimaryGPU(); 1266e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json); 1267e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1268e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1269e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(GpuControlListEntryDualGPUTest, VendorOnlyActivePrimaryGPU) { 1270e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string json = LONG_STRING_CONST( 1271e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch { 1272e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "id": 1, 1273e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "os": { 1274e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "type": "macosx" 1275e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch }, 1276e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "vendor_id": "0x10de", 1277e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "multi_gpu_category": "active", 1278e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "features": [ 1279e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "test_feature_0" 1280e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ] 1281e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 1282e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ); 1283e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // By default, secondary GPU is active. 1284e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldNotApply(json); 1285e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1286e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ActivatePrimaryGPU(); 1287e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EntryShouldApply(json); 1288e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1289e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 129090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace gpu 1291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1292