// Copyright 2018 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/address-region.h" #include "testing/gtest/include/gtest/gtest.h" namespace v8 { namespace base { using Address = AddressRegion::Address; TEST(AddressRegionTest, Contains) { struct { Address start; size_t size; } test_cases[] = {{153, 771}, {0, 227}, {static_cast
(-447), 447}}; for (size_t i = 0; i < arraysize(test_cases); i++) { Address start = test_cases[i].start; size_t size = test_cases[i].size; Address end = start + size; // exclusive AddressRegion region(start, size); // Test single-argument contains(). CHECK(!region.contains(start - 1041)); CHECK(!region.contains(start - 1)); CHECK(!region.contains(end)); CHECK(!region.contains(end + 1)); CHECK(!region.contains(end + 113)); CHECK(region.contains(start)); CHECK(region.contains(start + 1)); CHECK(region.contains(start + size / 2)); CHECK(region.contains(end - 1)); // Test two-arguments contains(). CHECK(!region.contains(start - 1, size)); CHECK(!region.contains(start, size + 1)); CHECK(!region.contains(start - 17, 17)); CHECK(!region.contains(start - 17, size * 2)); CHECK(!region.contains(end, 1)); CHECK(!region.contains(end, static_cast