| // Copyright 2020 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "src/developer/debug/shared/handle_info.h" | |
| #include <gtest/gtest.h> | |
| namespace debug { | |
| namespace { | |
| // Returns the vector of strings separated by "|" characters. | |
| std::string ArrayToOr(const std::vector<std::string>& values) { | |
| std::string result; | |
| for (size_t i = 0; i < values.size(); i++) { | |
| if (i > 0) | |
| result += " | "; | |
| result += values[i]; | |
| } | |
| return result; | |
| } | |
| std::string HandleRightsToString(uint32_t handle_rights) { | |
| return ArrayToOr(HandleRightsToStrings(handle_rights)); | |
| } | |
| std::string VmoFlagsToString(uint32_t vmo_flags) { return ArrayToOr(VmoFlagsToStrings(vmo_flags)); } | |
| } // namespace | |
| TEST(HandleInfo, HandleTypeToString) { | |
| EXPECT_EQ("ZX_OBJ_TYPE_NONE", HandleTypeToString(0u)); | |
| EXPECT_EQ("ZX_OBJ_TYPE_SOCKET", HandleTypeToString(14u)); | |
| std::string a = HandleTypeToString(9999); | |
| EXPECT_EQ("<unknown (9999)>", a); | |
| } | |
| TEST(HandleInfo, CachePolicyToString) { | |
| EXPECT_EQ("ZX_CACHE_POLICY_CACHED", CachePolicyToString(0)); | |
| EXPECT_EQ("ZX_CACHE_POLICY_WRITE_COMBINING", CachePolicyToString(3)); | |
| EXPECT_EQ("<unknown (789)>", CachePolicyToString(789)); | |
| } | |
| TEST(HandleInfo, HandleRightsToStrings) { | |
| EXPECT_EQ("ZX_RIGHT_NONE", HandleRightsToString(0)); | |
| EXPECT_EQ("ZX_RIGHT_DUPLICATE", HandleRightsToString(1)); | |
| EXPECT_EQ("ZX_RIGHT_TRANSFER", HandleRightsToString(2)); | |
| EXPECT_EQ("ZX_RIGHT_DUPLICATE | ZX_RIGHT_TRANSFER", HandleRightsToString(3)); | |
| EXPECT_EQ("ZX_RIGHT_DUPLICATE | <unknown (1 << 29)> | ZX_RIGHT_SAME_RIGHTS", | |
| HandleRightsToString(0b10100000'00000000'00000000'00000001)); | |
| } | |
| TEST(HandleInfo, VmoFlagsToStrings) { | |
| EXPECT_EQ("ZX_INFO_VMO_TYPE_PHYSICAL", VmoFlagsToString(0)); | |
| EXPECT_EQ("ZX_INFO_VMO_TYPE_PAGED", VmoFlagsToString(1)); | |
| EXPECT_EQ( | |
| "ZX_INFO_VMO_TYPE_PAGED | ZX_INFO_VMO_RESIZABLE | ZX_INFO_VMO_IS_COW_CLONE | " | |
| "ZX_INFO_VMO_VIA_HANDLE | ZX_INFO_VMO_VIA_MAPPING | ZX_INFO_VMO_PAGER_BACKED | " | |
| "ZX_INFO_VMO_CONTIGUOUS", | |
| VmoFlagsToString(0b1111111)); | |
| } | |
| } // namespace debug |