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::Copy(kData, vec.span());
31 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
35 auto vec = FixedSizeDataVector<
int>::TryUninit(4);
36 EXPECT_FALSE(vec.empty());
37 ASSERT_EQ(4u, vec.size());
38 ASSERT_EQ(4u, vec.span().size());
40 constexpr int kData[] = {1, 2, 3, 4};
41 fxcrt::Copy(kData, vec.span());
42 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
46 auto vec = FixedSizeDataVector<
int>::Zeroed(4);
47 EXPECT_FALSE(vec.empty());
48 EXPECT_EQ(4u, vec.size());
49 EXPECT_EQ(4u, vec.span().size());
50 EXPECT_THAT(vec.span(), testing::ElementsAre(0, 0, 0, 0));
52 constexpr int kData[] = {1, 2, 3, 4};
53 fxcrt::Copy(kData, vec.span());
54 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
58 auto vec = FixedSizeDataVector<
int>::TryZeroed(4);
59 EXPECT_FALSE(vec.empty());
60 ASSERT_EQ(4u, vec.size());
61 ASSERT_EQ(4u, vec.span().size());
62 EXPECT_THAT(vec.span(), testing::ElementsAre(0, 0, 0, 0));
64 constexpr int kData[] = {1, 2, 3, 4};
65 fxcrt::Copy(kData, vec.span());
66 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
70 constexpr size_t kCloseToMaxByteAlloc =
71 std::numeric_limits<size_t>::max() - 100;
72 auto vec = FixedSizeDataVector<
int>::TryZeroed(kCloseToMaxByteAlloc);
73 EXPECT_TRUE(vec.empty());
74 EXPECT_EQ(0u, vec.size());
75 EXPECT_EQ(0u, vec.span().size());
77 vec = FixedSizeDataVector<
int>::TryUninit(kCloseToMaxByteAlloc);
78 EXPECT_TRUE(vec.empty());
79 EXPECT_EQ(0u, vec.size());
80 EXPECT_EQ(0u, vec.span().size());
84 constexpr int kData[] = {1, 2, 3, 4};
85 auto vec = FixedSizeDataVector<
int>::Uninit(4);
86 ASSERT_EQ(4u, vec.span().size());
87 fxcrt::Copy(kData, vec.span());
88 const int*
const original_data_ptr = vec.span().data();
90 FixedSizeDataVector<
int> vec2(
std::move(vec));
91 EXPECT_FALSE(vec2.empty());
92 EXPECT_EQ(4u, vec2.size());
93 EXPECT_EQ(4u, vec2.span().size());
94 EXPECT_THAT(vec2.span(), testing::ElementsAre(1, 2, 3, 4));
95 EXPECT_EQ(vec2.span().data(), original_data_ptr);
97 EXPECT_EQ(0u, vec.size());
98 EXPECT_TRUE(vec.empty());
99 EXPECT_TRUE(vec.span().empty());
101 vec =
std::move(vec2);
102 EXPECT_FALSE(vec.empty());
103 EXPECT_EQ(4u, vec.size());
104 EXPECT_EQ(4u, vec.span().size());
105 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
106 EXPECT_EQ(vec.span().data(), original_data_ptr);
108 EXPECT_EQ(0u, vec2.size());
109 EXPECT_TRUE(vec2.empty());
110 EXPECT_TRUE(vec2.span().empty());
114 auto vec = FixedSizeDataVector<
int>();
115 auto vec2 = FixedSizeDataVector<
int>::Zeroed(4);
116 constexpr int kData[] = {1, 2, 3, 4};
117 ASSERT_EQ(4u, vec2.span().size());
118 fxcrt::Copy(kData, vec2.span());
120 vec =
std::move(vec2);
121 EXPECT_TRUE(vec2.empty());
122 EXPECT_EQ(4u, vec.span().size());
123 EXPECT_THAT(vec.span(), testing::ElementsAre(1, 2, 3, 4));
127 constexpr int kData[] = {1, 2, 3, 4};
128 auto vec1 = FixedSizeDataVector<
int>::Uninit(4);
129 fxcrt::Copy(kData, vec1.span());
131 auto vec2 = FixedSizeDataVector<
int>::TruncatedFrom(std::move(vec1), 3);
132 EXPECT_EQ(0u, vec1.span().size());
133 EXPECT_EQ(
nullptr, vec1.span().data());
134 EXPECT_THAT(vec2.span(), testing::ElementsAre(1, 2, 3));
138 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
139 std::iota(vec.span().begin(), vec.span().end(), 0u);
141 pdfium::span<uint32_t> empty = vec.subspan(2, 0);
142 EXPECT_TRUE(empty.empty());
144 pdfium::span<uint32_t> first = vec.subspan(0, 1);
145 ASSERT_EQ(first.size(), 1u);
146 EXPECT_EQ(first[0], 0u);
148 pdfium::span<uint32_t> mids = vec.subspan(1, 2);
149 ASSERT_EQ(mids.size(), 2u);
150 EXPECT_EQ(mids[0], 1u);
151 EXPECT_EQ(mids[1], 2u);
153 pdfium::span<uint32_t> rest = vec.subspan(3);
154 ASSERT_EQ(rest.size(), 1u);
155 EXPECT_EQ(rest[0], 3u);
159 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
160 std::iota(vec.span().begin(), vec.span().end(), 0u);
162 pdfium::span<uint32_t> empty = vec.first(0);
163 EXPECT_TRUE(empty.empty());
165 pdfium::span<uint32_t> some = vec.first(2);
166 ASSERT_EQ(some.size(), 2u);
167 EXPECT_EQ(some[0], 0u);
168 EXPECT_EQ(some[1], 1u);
172 auto vec = FixedSizeDataVector<uint32_t>::Uninit(4);
173 std::iota(vec.span().begin(), vec.span().end(), 0u);
175 pdfium::span<uint32_t> empty = vec.first(0);
176 EXPECT_TRUE(empty.empty());
178 pdfium::span<uint32_t> some = vec.first(2);
179 ASSERT_EQ(some.size(), 2u);
180 EXPECT_EQ(some[0], 0u);
181 EXPECT_EQ(some[1], 1u);