1 // Copyright 2023 The Chromium Authors
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 "base/memory/raw_span.h"
6
7 #include "testing/gmock/include/gmock/gmock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 // This file contains tests related to raw_span, to show that they
11 // convert to span.
12
TEST(RawSpan,ConvertToSpan)13 TEST(RawSpan, ConvertToSpan) {
14 int arr[3] = {100, 101, 102};
15 base::raw_span<int> span1(arr);
16 base::span<int> span2(span1);
17 base::span<int> span3;
18 span3 = span1;
19
20 EXPECT_THAT(span1, ::testing::ElementsAre(100, 101, 102));
21 EXPECT_THAT(span2, ::testing::ElementsAre(100, 101, 102));
22 EXPECT_THAT(span3, ::testing::ElementsAre(100, 101, 102));
23 }
24
TEST(RawSpan,ConvertFromSpan)25 TEST(RawSpan, ConvertFromSpan) {
26 int arr[3] = {100, 101, 102};
27 base::span<int> span1(arr);
28 base::raw_span<int> span2(span1);
29 base::raw_span<int> span3;
30 span3 = span1;
31
32 EXPECT_THAT(span1, ::testing::ElementsAre(100, 101, 102));
33 EXPECT_THAT(span2, ::testing::ElementsAre(100, 101, 102));
34 EXPECT_THAT(span3, ::testing::ElementsAre(100, 101, 102));
35 }
36
TEST(RawSpan,UnderstandsDanglingAttribute)37 TEST(RawSpan, UnderstandsDanglingAttribute) {
38 // Test passes if it doesn't trip Dangling Ptr Detectors.
39 int* arr = new int[3];
40 base::raw_span<int, DisableDanglingPtrDetection> span(arr, 3u);
41 delete[] span.data();
42 }
43
TEST(RawSpan,ExtractAsDangling)44 TEST(RawSpan, ExtractAsDangling) {
45 // Test passes if it doesn't trip Dangling Ptr Detectors.
46 int* arr = new int[3];
47 base::raw_span<int> span(arr, 3u);
48 delete[] base::ExtractAsDanglingSpan(span).data();
49 }
50