File: sanitizer_range_test.cpp

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (62 lines) | stat: -rw-r--r-- 2,296 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//===-- sanitizer_region_test.cpp -----------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "sanitizer_common/sanitizer_range.h"

#include <algorithm>

#include "gtest/gtest.h"
#include "sanitizer_common/sanitizer_common.h"

namespace __sanitizer {

class SanitizerCommon
    : public testing::TestWithParam<std::tuple<
          std::vector<Range>, std::vector<Range>, std::vector<Range>>> {};

TEST_P(SanitizerCommon, Intersect) {
  {
    InternalMmapVector<Range> output;
    Intersect(std::get<0>(GetParam()), std::get<1>(GetParam()), output);
    EXPECT_EQ(std::get<2>(GetParam()),
              std::vector<Range>(output.begin(), output.end()));
  }
  {
    InternalMmapVector<Range> output;
    Intersect(std::get<1>(GetParam()), std::get<0>(GetParam()), output);
    EXPECT_EQ(std::get<2>(GetParam()),
              std::vector<Range>(output.begin(), output.end()));
  }
}

static void PrintTo(const Range &r, std::ostream *os) {
  *os << "[" << r.begin << ", " << r.end << ")";
}

static const std::tuple<std::vector<Range>, std::vector<Range>,
                        std::vector<Range>>
    kTests[] = {
        {{}, {}, {}},
        {{{100, 1000}}, {{5000, 10000}}, {}},
        {{{100, 1000}, {200, 2000}}, {{5000, 10000}, {6000, 11000}}, {}},
        {{{100, 1000}}, {{100, 1000}}, {{100, 1000}}},
        {{{100, 1000}}, {{50, 150}}, {{100, 150}}},
        {{{100, 1000}}, {{150, 250}}, {{150, 250}}},
        {{{100, 1000}, {100, 1000}}, {{100, 1000}}, {{100, 1000}}},
        {{{100, 1000}}, {{500, 1500}}, {{500, 1000}}},
        {{{100, 200}}, {{200, 300}, {1, 1000}}, {{100, 200}}},
        {{{100, 200}, {200, 300}}, {{100, 300}}, {{100, 300}}},
        {{{100, 200}, {200, 300}, {300, 400}}, {{150, 350}}, {{150, 350}}},
        {{{100, 200}, {300, 400}, {500, 600}},
         {{0, 1000}},
         {{100, 200}, {300, 400}, {500, 600}}},
};

INSTANTIATE_TEST_SUITE_P(SanitizerCommonEmpty, SanitizerCommon,
                         testing::ValuesIn(kTests));

}  // namespace __sanitizer