1 /* 2 * Copyright 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <ui/DisplayId.h> 18 19 #include <gtest/gtest.h> 20 21 namespace android::ui { 22 TEST(DisplayIdTest,createPhysicalIdFromEdid)23 TEST(DisplayIdTest, createPhysicalIdFromEdid) { 24 constexpr uint8_t port = 1; 25 constexpr uint16_t manufacturerId = 13; 26 constexpr uint32_t modelHash = 42; 27 const PhysicalDisplayId id = PhysicalDisplayId::fromEdid(port, manufacturerId, modelHash); 28 EXPECT_EQ(port, id.getPort()); 29 EXPECT_EQ(manufacturerId, id.getManufacturerId()); 30 EXPECT_FALSE(VirtualDisplayId::tryCast(id)); 31 EXPECT_FALSE(HalVirtualDisplayId::tryCast(id)); 32 EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id)); 33 EXPECT_TRUE(PhysicalDisplayId::tryCast(id)); 34 EXPECT_TRUE(HalDisplayId::tryCast(id)); 35 36 EXPECT_EQ(id, DisplayId::fromValue(id.value)); 37 EXPECT_EQ(id, DisplayId::fromValue<PhysicalDisplayId>(id.value)); 38 } 39 TEST(DisplayIdTest,createPhysicalIdFromPort)40 TEST(DisplayIdTest, createPhysicalIdFromPort) { 41 constexpr uint8_t port = 3; 42 const PhysicalDisplayId id = PhysicalDisplayId::fromPort(port); 43 EXPECT_EQ(port, id.getPort()); 44 EXPECT_FALSE(VirtualDisplayId::tryCast(id)); 45 EXPECT_FALSE(HalVirtualDisplayId::tryCast(id)); 46 EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id)); 47 EXPECT_TRUE(PhysicalDisplayId::tryCast(id)); 48 EXPECT_TRUE(HalDisplayId::tryCast(id)); 49 50 EXPECT_EQ(id, DisplayId::fromValue(id.value)); 51 EXPECT_EQ(id, DisplayId::fromValue<PhysicalDisplayId>(id.value)); 52 } 53 TEST(DisplayIdTest,createGpuVirtualId)54 TEST(DisplayIdTest, createGpuVirtualId) { 55 const GpuVirtualDisplayId id(42); 56 EXPECT_TRUE(VirtualDisplayId::tryCast(id)); 57 EXPECT_TRUE(GpuVirtualDisplayId::tryCast(id)); 58 EXPECT_FALSE(HalVirtualDisplayId::tryCast(id)); 59 EXPECT_FALSE(PhysicalDisplayId::tryCast(id)); 60 EXPECT_FALSE(HalDisplayId::tryCast(id)); 61 62 EXPECT_EQ(id, DisplayId::fromValue(id.value)); 63 EXPECT_EQ(id, DisplayId::fromValue<GpuVirtualDisplayId>(id.value)); 64 } 65 TEST(DisplayIdTest,createVirtualIdFromGpuVirtualId)66 TEST(DisplayIdTest, createVirtualIdFromGpuVirtualId) { 67 const VirtualDisplayId id(GpuVirtualDisplayId(42)); 68 EXPECT_TRUE(VirtualDisplayId::tryCast(id)); 69 EXPECT_TRUE(GpuVirtualDisplayId::tryCast(id)); 70 EXPECT_FALSE(HalVirtualDisplayId::tryCast(id)); 71 EXPECT_FALSE(PhysicalDisplayId::tryCast(id)); 72 EXPECT_FALSE(HalDisplayId::tryCast(id)); 73 74 const bool isGpuVirtualId = (id.value & VirtualDisplayId::FLAG_GPU); 75 EXPECT_EQ((id.isVirtual() && isGpuVirtualId), GpuVirtualDisplayId::tryCast(id).has_value()); 76 } 77 TEST(DisplayIdTest,createGpuVirtualIdFromUniqueId)78 TEST(DisplayIdTest, createGpuVirtualIdFromUniqueId) { 79 static const std::string kUniqueId("virtual:ui:DisplayId_test"); 80 const auto idOpt = GpuVirtualDisplayId::fromUniqueId(kUniqueId); 81 ASSERT_TRUE(idOpt.has_value()); 82 const GpuVirtualDisplayId id = idOpt.value(); 83 EXPECT_TRUE(VirtualDisplayId::tryCast(id)); 84 EXPECT_TRUE(GpuVirtualDisplayId::tryCast(id)); 85 EXPECT_FALSE(HalVirtualDisplayId::tryCast(id)); 86 EXPECT_FALSE(PhysicalDisplayId::tryCast(id)); 87 EXPECT_FALSE(HalDisplayId::tryCast(id)); 88 89 EXPECT_EQ(id, DisplayId::fromValue(id.value)); 90 EXPECT_EQ(id, DisplayId::fromValue<GpuVirtualDisplayId>(id.value)); 91 } 92 TEST(DisplayIdTest,createHalVirtualId)93 TEST(DisplayIdTest, createHalVirtualId) { 94 const HalVirtualDisplayId id(42); 95 EXPECT_TRUE(VirtualDisplayId::tryCast(id)); 96 EXPECT_TRUE(HalVirtualDisplayId::tryCast(id)); 97 EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id)); 98 EXPECT_FALSE(PhysicalDisplayId::tryCast(id)); 99 EXPECT_TRUE(HalDisplayId::tryCast(id)); 100 101 EXPECT_EQ(id, DisplayId::fromValue(id.value)); 102 EXPECT_EQ(id, DisplayId::fromValue<HalVirtualDisplayId>(id.value)); 103 } 104 TEST(DisplayIdTest,createVirtualIdFromHalVirtualId)105 TEST(DisplayIdTest, createVirtualIdFromHalVirtualId) { 106 const VirtualDisplayId id(HalVirtualDisplayId(42)); 107 EXPECT_TRUE(VirtualDisplayId::tryCast(id)); 108 EXPECT_TRUE(HalVirtualDisplayId::tryCast(id)); 109 EXPECT_FALSE(GpuVirtualDisplayId::tryCast(id)); 110 EXPECT_FALSE(PhysicalDisplayId::tryCast(id)); 111 EXPECT_TRUE(HalDisplayId::tryCast(id)); 112 113 const bool isGpuVirtualId = (id.value & VirtualDisplayId::FLAG_GPU); 114 EXPECT_EQ((id.isVirtual() && !isGpuVirtualId), HalVirtualDisplayId::tryCast(id).has_value()); 115 } 116 117 } // namespace android::ui 118