LCOV - code coverage report
Current view: top level - test/unittests/base - address-region-unittest.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 35 35 100.0 %
Date: 2019-02-19 Functions: 4 5 80.0 %

          Line data    Source code
       1             : // Copyright 2018 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/base/address-region.h"
       6             : 
       7             : #include "testing/gtest/include/gtest/gtest.h"
       8             : 
       9             : namespace v8 {
      10             : namespace base {
      11             : 
      12             : using Address = AddressRegion::Address;
      13             : 
      14       15188 : TEST(AddressRegionTest, Contains) {
      15             :   struct {
      16             :     Address start;
      17             :     size_t size;
      18           1 :   } test_cases[] = {{153, 771}, {0, 227}, {-447, 447}};
      19             : 
      20           4 :   for (size_t i = 0; i < arraysize(test_cases); i++) {
      21           3 :     Address start = test_cases[i].start;
      22           3 :     size_t size = test_cases[i].size;
      23           3 :     Address end = start + size;  // exclusive
      24             : 
      25             :     AddressRegion region(start, size);
      26             : 
      27             :     // Test single-argument contains().
      28           3 :     CHECK(!region.contains(start - 1041));
      29           3 :     CHECK(!region.contains(start - 1));
      30           3 :     CHECK(!region.contains(end));
      31           6 :     CHECK(!region.contains(end + 1));
      32           6 :     CHECK(!region.contains(end + 113));
      33             : 
      34           3 :     CHECK(region.contains(start));
      35           3 :     CHECK(region.contains(start + 1));
      36           6 :     CHECK(region.contains(start + size / 2));
      37           6 :     CHECK(region.contains(end - 1));
      38             : 
      39             :     // Test two-arguments contains().
      40           3 :     CHECK(!region.contains(start - 1, size));
      41           6 :     CHECK(!region.contains(start, size + 1));
      42           3 :     CHECK(!region.contains(start - 17, 17));
      43           6 :     CHECK(!region.contains(start - 17, size * 2));
      44           3 :     CHECK(!region.contains(end, 1));
      45           3 :     CHECK(!region.contains(end, static_cast<size_t>(0 - end)));
      46             : 
      47           3 :     CHECK(region.contains(start, size));
      48           3 :     CHECK(region.contains(start, 10));
      49           3 :     CHECK(region.contains(start + 11, 120));
      50           6 :     CHECK(region.contains(end - 13, 13));
      51           3 :     CHECK(!region.contains(end, 0));
      52             : 
      53             :     // Zero-size queries.
      54           3 :     CHECK(!region.contains(start - 10, 0));
      55           3 :     CHECK(!region.contains(start - 1, 0));
      56           3 :     CHECK(!region.contains(end, 0));
      57           6 :     CHECK(!region.contains(end + 10, 0));
      58             : 
      59           3 :     CHECK(region.contains(start, 0));
      60           3 :     CHECK(region.contains(start + 10, 0));
      61           3 :     CHECK(region.contains(end - 1, 0));
      62             :   }
      63           1 : }
      64             : 
      65             : }  // namespace base
      66        9111 : }  // namespace v8

Generated by: LCOV version 1.10