xref: /aosp_15_r20/external/cronet/base/memory/raw_span_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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