| // 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 "cc_bindings_from_rs/test/uses/uses.h" |
| |
| #include <cstdint> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "gtest/gtest.h" |
| |
| namespace crubit { |
| namespace { |
| |
| TEST(UsesTest, UsesExportsAsUsing) { EXPECT_EQ(uses::f(), 42); } |
| |
| TEST(UsesTest, ReexportPrivateStruct) { |
| constexpr int kField = 42; |
| uses::ExportedStruct x = uses::ExportedStruct::create(kField); |
| EXPECT_EQ(x.field, kField); |
| |
| EXPECT_TRUE( |
| (std::is_same_v<uses::ExportedStruct, uses::AliasOfExportedStruct>)); |
| } |
| |
| TEST(UsesTest, ReexportPrivateFunction) { EXPECT_EQ(uses::private_fn(), 42); } |
| |
| TEST(UsesTest, RexportExternCrateStruct) { |
| uses::X x = uses::return_x(); |
| EXPECT_EQ(x.field, 42); |
| |
| extern_crate::Y y = uses::return_y(); |
| EXPECT_EQ(y.field, 42); |
| |
| EXPECT_TRUE((std::is_same_v<uses::Alias, uses::Original>)); |
| } |
| } // namespace |
| } // namespace crubit |