// Copyright 2017 the V8 project 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/base/macros.h" #include "testing/gtest/include/gtest/gtest.h" namespace v8 { namespace base { TEST(AlignedAddressTest, AlignedAddress) { EXPECT_EQ(reinterpret_cast(0xFFFF0), AlignedAddress(reinterpret_cast(0xFFFF0), 16)); EXPECT_EQ(reinterpret_cast(0xFFFF0), AlignedAddress(reinterpret_cast(0xFFFF2), 16)); EXPECT_EQ(reinterpret_cast(0xFFFF0), AlignedAddress(reinterpret_cast(0xFFFF2), 16)); EXPECT_EQ(reinterpret_cast(0xFFFF0), AlignedAddress(reinterpret_cast(0xFFFFF), 16)); EXPECT_EQ(reinterpret_cast(0x0), AlignedAddress(reinterpret_cast(0xFFFFF), 0x100000)); } struct TriviallyCopyable { const int i; }; ASSERT_TRIVIALLY_COPYABLE(TriviallyCopyable); struct StillTriviallyCopyable { const int i; StillTriviallyCopyable(const StillTriviallyCopyable&) = delete; }; ASSERT_TRIVIALLY_COPYABLE(StillTriviallyCopyable); struct NonTrivialDestructor { ~NonTrivialDestructor() {} }; ASSERT_NOT_TRIVIALLY_COPYABLE(NonTrivialDestructor); struct NonTrivialCopyConstructor { NonTrivialCopyConstructor(const NonTrivialCopyConstructor&) {} }; ASSERT_NOT_TRIVIALLY_COPYABLE(NonTrivialCopyConstructor); struct NonTrivialMoveConstructor { NonTrivialMoveConstructor(const NonTrivialMoveConstructor&) {} }; ASSERT_NOT_TRIVIALLY_COPYABLE(NonTrivialMoveConstructor); struct NonTrivialCopyAssignment { NonTrivialCopyAssignment(const NonTrivialCopyAssignment&) {} }; ASSERT_NOT_TRIVIALLY_COPYABLE(NonTrivialCopyAssignment); struct NonTrivialMoveAssignment { NonTrivialMoveAssignment(const NonTrivialMoveAssignment&) {} }; ASSERT_NOT_TRIVIALLY_COPYABLE(NonTrivialMoveAssignment); } // namespace base } // namespace v8