blob: 7b8b300316629318f1514899e2de3a0e5d659e5f [file] [log] [blame]
// Copyright 2023 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/graphics/display/lib/api-types-cpp/display-id.h"
#include <fidl/fuchsia.hardware.display/cpp/wire.h>
#include <fuchsia/hardware/display/controller/c/banjo.h>
#include <cstdint>
#include <gtest/gtest.h>
namespace display {
namespace {
constexpr DisplayId kOne(1);
constexpr DisplayId kAnotherOne(1);
constexpr DisplayId kTwo(2);
constexpr uint64_t kLargeIdValue = uint64_t{1} << 63;
constexpr DisplayId kLargeId(kLargeIdValue);
TEST(DisplayIdTest, EqualityIsReflexive) {
EXPECT_EQ(kOne, kOne);
EXPECT_EQ(kAnotherOne, kAnotherOne);
EXPECT_EQ(kTwo, kTwo);
EXPECT_EQ(kInvalidDisplayId, kInvalidDisplayId);
}
TEST(DisplayIdTest, EqualityIsSymmetric) {
EXPECT_EQ(kOne, kAnotherOne);
EXPECT_EQ(kAnotherOne, kOne);
}
TEST(DisplayIdTest, EqualityForDifferentValues) {
EXPECT_NE(kOne, kTwo);
EXPECT_NE(kAnotherOne, kTwo);
EXPECT_NE(kTwo, kOne);
EXPECT_NE(kTwo, kAnotherOne);
EXPECT_NE(kOne, kInvalidDisplayId);
EXPECT_NE(kTwo, kInvalidDisplayId);
EXPECT_NE(kInvalidDisplayId, kOne);
EXPECT_NE(kInvalidDisplayId, kTwo);
}
TEST(DisplayIdTest, ToFidlDisplayId) {
EXPECT_EQ(1u, ToFidlDisplayId(kOne).value);
EXPECT_EQ(2u, ToFidlDisplayId(kTwo).value);
EXPECT_EQ(kLargeIdValue, ToFidlDisplayId(kLargeId).value);
EXPECT_EQ(fuchsia_hardware_display_types::wire::kInvalidDispId,
ToFidlDisplayId(kInvalidDisplayId).value);
}
TEST(DisplayIdTest, ToBanjoDisplayId) {
EXPECT_EQ(1u, ToBanjoDisplayId(kOne));
EXPECT_EQ(2u, ToBanjoDisplayId(kTwo));
EXPECT_EQ(kLargeIdValue, ToBanjoDisplayId(kLargeId));
EXPECT_EQ(INVALID_DISPLAY_ID, ToBanjoDisplayId(kInvalidDisplayId));
}
TEST(DisplayIdTest, ToDisplayIdWithFidlValue) {
EXPECT_EQ(kOne, ToDisplayId(fuchsia_hardware_display_types::wire::DisplayId{.value = 1}));
EXPECT_EQ(kTwo, ToDisplayId(fuchsia_hardware_display_types::wire::DisplayId{.value = 2}));
EXPECT_EQ(kLargeId,
ToDisplayId(fuchsia_hardware_display_types::wire::DisplayId{.value = kLargeIdValue}));
EXPECT_EQ(kInvalidDisplayId, ToDisplayId(fuchsia_hardware_display_types::wire::DisplayId{
.value = fuchsia_hardware_display_types::wire::kInvalidDispId}));
}
TEST(DisplayIdTest, ToDisplayIdWithBanjoValue) {
EXPECT_EQ(kOne, ToDisplayId(1));
EXPECT_EQ(kTwo, ToDisplayId(2));
EXPECT_EQ(kLargeId, ToDisplayId(kLargeIdValue));
EXPECT_EQ(kInvalidDisplayId, ToDisplayId(INVALID_DISPLAY_ID));
}
TEST(DisplayIdTest, FidlDisplayIdConversionRoundtrip) {
EXPECT_EQ(kOne, ToDisplayId(ToFidlDisplayId(kOne)));
EXPECT_EQ(kTwo, ToDisplayId(ToFidlDisplayId(kTwo)));
EXPECT_EQ(kLargeId, ToDisplayId(ToFidlDisplayId(kLargeId)));
EXPECT_EQ(kInvalidDisplayId, ToDisplayId(ToFidlDisplayId(kInvalidDisplayId)));
}
TEST(DisplayIdTest, BanjoConversionRoundtrip) {
EXPECT_EQ(kOne, ToDisplayId(ToBanjoDisplayId(kOne)));
EXPECT_EQ(kTwo, ToDisplayId(ToBanjoDisplayId(kTwo)));
EXPECT_EQ(kLargeId, ToDisplayId(ToBanjoDisplayId(kLargeId)));
EXPECT_EQ(kInvalidDisplayId, ToDisplayId(ToBanjoDisplayId(kInvalidDisplayId)));
}
} // namespace
} // namespace display