blob: 9e8ad5527dc0c6e63621898d3d236b8e623119c3 [file] [log] [blame] [edit]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#include "support/status_bridge.h"
#include "crubit/support/bridge.h"
#include "gtest/gtest.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
namespace crubit::bridge {
namespace {
TEST(BridgeTest, RoundtripOkStatus) {
using Abi = StatusAbi;
absl::Status original = absl::OkStatus();
unsigned char buf[Abi::kSize];
internal::Encode<Abi>(buf, original);
absl::Status value = internal::Decode<Abi>(buf);
EXPECT_EQ(value, original);
}
TEST(BridgeTest, RoundtripErrStatus) {
using Abi = StatusAbi;
absl::Status original = absl::InternalError("test");
unsigned char buf[Abi::kSize];
internal::Encode<Abi>(buf, original);
absl::Status value = internal::Decode<Abi>(buf);
EXPECT_EQ(value, original);
}
TEST(BridgeTest, RoundtripOkStatusOr) {
using Abi = StatusOrAbi<TransmuteAbi<int>>;
absl::StatusOr<int> original = 123;
unsigned char buf[Abi::kSize];
internal::Encode<Abi>(buf, original);
absl::StatusOr<int> value = internal::Decode<Abi>(buf);
EXPECT_EQ(value, original);
}
TEST(BridgeTest, RoundtripErrStatusOr) {
using Abi = StatusOrAbi<TransmuteAbi<int>>;
absl::StatusOr<int> original = absl::InternalError("test");
unsigned char buf[Abi::kSize];
internal::Encode<Abi>(buf, original);
absl::StatusOr<int> value = internal::Decode<Abi>(buf);
EXPECT_EQ(value, original);
}
} // namespace
} // namespace crubit::bridge