blob: f3b65ad2f40c2762b9f5860f208dc59a1083e969 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdint.h>
#include <memory>
#include "base/allocator/buildflags.h"
#include "base/allocator/partition_allocator/address_pool_manager_bitmap.h"
#include "base/allocator/partition_allocator/partition_address_space.h"
#include "build/build_config.h"
#include "build/buildflag.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "build/rust/tests/test_rust_static_library/src/lib.rs.h"
TEST(RustTest, CppCallingIntoRust_BasicFFI) {
EXPECT_EQ(7, add_two_ints_via_rust(3, 4));
}
TEST(RustTest, RustComponentUsesPartitionAlloc) {
// Verify that PartitionAlloc is consistently used in C++ and Rust.
auto cpp_allocated_int = std::make_unique<int>();
SomeStruct* rust_allocated_ptr = allocate_via_rust().into_raw();
EXPECT_EQ(partition_alloc::IsManagedByPartitionAlloc(
reinterpret_cast<uintptr_t>(rust_allocated_ptr)),
partition_alloc::IsManagedByPartitionAlloc(
reinterpret_cast<uintptr_t>(cpp_allocated_int.get())));
rust::Box<SomeStruct>::from_raw(rust_allocated_ptr);
}