blob: 0b972fc963d2e9d25e7d6feca318c47d2b991e21 [file] [log] [blame]
// 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/zxdb/console/format_handle.h"
#include <gtest/gtest.h>
#include "src/developer/debug/ipc/records.h"
namespace zxdb {
TEST(FormatHandle, Table) {
std::vector<debug_ipc::InfoHandleExtended> handles;
// Empty case.
OutputBuffer out = FormatHandles(handles, false);
EXPECT_EQ("No handles.", out.AsString());
// Give it two objects.
handles.resize(2);
handles[0].type = 2; // Thread.
handles[0].handle_value = 1234;
handles[0].koid = 7890;
handles[1].type = 1; // Process.
handles[1].handle_value = 1123;
handles[1].koid = 7891;
out = FormatHandles(handles, false);
EXPECT_EQ(
" Handle Type Koid\n"
" 1234 ZX_OBJ_TYPE_THREAD 7890\n"
" 1123 ZX_OBJ_TYPE_PROCESS 7891\n",
out.AsString());
// Hex formatting
out = FormatHandles(handles, true);
EXPECT_EQ(
" Handle Type Koid\n"
" 0x4d2 ZX_OBJ_TYPE_THREAD 0x1ed2\n"
" 0x463 ZX_OBJ_TYPE_PROCESS 0x1ed3\n",
out.AsString());
}
TEST(FormatHandle, BasicDetails) {
debug_ipc::InfoHandleExtended handle;
handle.type = 2; // Thread.
handle.handle_value = 1234;
handle.rights = 3;
handle.props = 0;
handle.koid = 7890;
handle.related_koid = 1111;
handle.peer_owner_koid = 2222;
OutputBuffer out = FormatHandle(handle, false);
EXPECT_EQ(
" Type ZX_OBJ_TYPE_THREAD\n"
" Value 1234\n"
" Rights ZX_RIGHT_DUPLICATE\n"
" ZX_RIGHT_TRANSFER\n"
" Properties ZX_OBJ_PROP_NONE\n"
" Koid 7890\n"
" Related koid 1111\n"
" Peer-owner koid 2222\n",
out.AsString());
// Related and peer owner koid should be omitted when 0 (not all handle types have these and
// it looks confusing). This one also tests hex formatting.
handle.props = 1;
handle.related_koid = 0;
handle.peer_owner_koid = 0;
out = FormatHandle(handle, true);
EXPECT_EQ(
" Type ZX_OBJ_TYPE_THREAD\n"
" Value 0x4d2\n"
" Rights ZX_RIGHT_DUPLICATE\n"
" ZX_RIGHT_TRANSFER\n"
" Properties ZX_OBJ_PROP_WAITABLE\n"
" Koid 0x1ed2\n",
out.AsString());
}
} // namespace zxdb