24 auto vec = FixedSizeDataVector<
int>::Uninit(4);
25 EXPECT_FALSE(vec.empty());
26 ASSERT_EQ(4u, vec.size());
27 ASSERT_EQ(4u, vec.span().size());
29 constexpr int kData[] = {1, 2, 3, 4};
30 fxcrt::spancpy(vec.span(), pdfium::make_span(kData));
31 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
35 auto vec = FixedSizeDataVector<
int>::Zeroed(4);
36 EXPECT_FALSE(vec.empty());
37 EXPECT_EQ(4u, vec.size());
38 EXPECT_EQ(4u, vec.span().size());
39 EXPECT_THAT(vec.span(), testing::ElementsAre(0, 0, 0, 0));
41 constexpr int kData[] = {1, 2, 3, 4};
42 fxcrt::spancpy(vec.span(), pdfium::make_span(kData));
43 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
47 auto vec = FixedSizeDataVector<
int>::TryZeroed(4);
48 EXPECT_FALSE(vec.empty());
49 ASSERT_EQ(4u, vec.size());
50 ASSERT_EQ(4u, vec.span().size());
51 EXPECT_THAT(vec.span(), testing::ElementsAre(0, 0, 0, 0));
53 constexpr int kData[] = {1, 2, 3, 4};
54 fxcrt::spancpy(vec.span(), pdfium::make_span(kData));
55 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
59 constexpr size_t kCloseToMaxByteAlloc =
60 std::numeric_limits<size_t>::max() - 100;
61 auto vec = FixedSizeDataVector<
int>::TryZeroed(kCloseToMaxByteAlloc);
62 EXPECT_TRUE(vec.empty());
63 EXPECT_EQ(0u, vec.size());
64 EXPECT_EQ(0u, vec.span().size());
68 constexpr int kData[] = {1, 2, 3, 4};
69 auto vec = FixedSizeDataVector<
int>::Uninit(4);
70 ASSERT_EQ(4u, vec.span().size());
71 fxcrt::spancpy(vec.span(), pdfium::make_span(kData));
72 const int*
const original_data_ptr = vec.span().data();
75 EXPECT_FALSE(vec2.empty());
76 EXPECT_EQ(4u, vec2.size());
77 EXPECT_EQ(4u, vec2.span().size());
78 EXPECT_THAT(vec2.span(), testing::ElementsAre(1, 2, 3, 4));
79 EXPECT_EQ(vec2.span().data(), original_data_ptr);
81 EXPECT_EQ(0u, vec.size());
82 EXPECT_TRUE(vec.empty());
83 EXPECT_TRUE(vec.span().empty());
85 vec =
std::move(vec2);
86 EXPECT_FALSE(vec.empty());
87 EXPECT_EQ(4u, vec.size());
88 EXPECT_EQ(4u, vec.span().size());
89 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
90 EXPECT_EQ(vec.span().data(), original_data_ptr);
92 EXPECT_EQ(0u, vec2.size());
93 EXPECT_TRUE(vec2.empty());
94 EXPECT_TRUE(vec2.span().empty());
98 auto vec = FixedSizeDataVector<
int>();
99 auto vec2 = FixedSizeDataVector<
int>::Zeroed(4);
100 constexpr int kData[] = {1, 2, 3, 4};
101 ASSERT_EQ(4u, vec2.span().size());
102 fxcrt::spancpy(vec2.span(), pdfium::make_span(kData));
104 vec =
std::move(vec2);
105 EXPECT_TRUE(vec2.empty());
106 EXPECT_EQ(4u, vec.span().size());
107 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
111 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
112 std::iota(vec.span().begin(), vec.span().end(), 0u);
114 pdfium::span<uint32_t> empty = vec.subspan(2, 0);
115 EXPECT_TRUE(empty.empty());
117 pdfium::span<uint32_t> first = vec.subspan(0, 1);
118 ASSERT_EQ(first.size(), 1u);
119 EXPECT_EQ(first[0], 0u);
121 pdfium::span<uint32_t> mids = vec.subspan(1, 2);
122 ASSERT_EQ(mids.size(), 2u);
123 EXPECT_EQ(mids[0], 1u);
124 EXPECT_EQ(mids[1], 2u);
126 pdfium::span<uint32_t> rest = vec.subspan(3);
127 ASSERT_EQ(rest.size(), 1u);
128 EXPECT_EQ(rest[0], 3u);
132 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
133 std::iota(vec.span().begin(), vec.span().end(), 0u);
135 pdfium::span<uint32_t> empty = vec.first(0);
136 EXPECT_TRUE(empty.empty());
138 pdfium::span<uint32_t> some = vec.first(2);
139 ASSERT_EQ(some.size(), 2u);
140 EXPECT_EQ(some[0], 0u);
141 EXPECT_EQ(some[1], 1u);
145 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
146 std::iota(vec.span().begin(), vec.span().end(), 0u);
148 pdfium::span<uint32_t> empty = vec.first(0);
149 EXPECT_TRUE(empty.empty());
151 pdfium::span<uint32_t> some = vec.first(2);
152 ASSERT_EQ(some.size(), 2u);
153 EXPECT_EQ(some[0], 0u);
154 EXPECT_EQ(some[1], 1u);