1 // Copyright 2022 The PDFium 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 "core/fxcrt/small_buffer.h"
6
7 #include <algorithm>
8
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace fxcrt {
12
TEST(SmallBuffer,Empty)13 TEST(SmallBuffer, Empty) {
14 SmallBuffer<int, 4> buffer(0);
15 EXPECT_EQ(buffer.data(), buffer.fixed_for_test());
16 EXPECT_EQ(buffer.begin(), buffer.end());
17 }
18
TEST(SmallBuffer,NoFixed)19 TEST(SmallBuffer, NoFixed) {
20 SmallBuffer<int, 0> buffer(4);
21 EXPECT_EQ(buffer.data(), buffer.dynamic_for_test());
22 std::fill(buffer.begin(), buffer.end(), 42);
23 int* ptr = buffer.data();
24 EXPECT_EQ(42, ptr[0]);
25 EXPECT_EQ(42, ptr[1]);
26 EXPECT_EQ(42, ptr[2]);
27 EXPECT_EQ(42, ptr[3]);
28 }
29
TEST(SmallBuffer,NoFixedEmpty)30 TEST(SmallBuffer, NoFixedEmpty) {
31 SmallBuffer<int, 0> buffer(0);
32 EXPECT_EQ(buffer.data(), buffer.fixed_for_test());
33 EXPECT_EQ(buffer.begin(), buffer.end());
34 }
35
TEST(SmallBuffer,Fixed)36 TEST(SmallBuffer, Fixed) {
37 SmallBuffer<int, 4> buffer(2);
38 EXPECT_EQ(buffer.data(), buffer.fixed_for_test());
39 std::fill(buffer.begin(), buffer.end(), 42);
40 int* ptr = buffer.data();
41 EXPECT_EQ(42, ptr[0]);
42 EXPECT_EQ(42, ptr[1]);
43 }
44
TEST(SmallBuffer,Dynamic)45 TEST(SmallBuffer, Dynamic) {
46 SmallBuffer<int, 2> buffer(4);
47 EXPECT_EQ(buffer.data(), buffer.dynamic_for_test());
48 std::fill(buffer.begin(), buffer.end(), 42);
49 int* ptr = buffer.data();
50 EXPECT_EQ(42, ptr[0]);
51 EXPECT_EQ(42, ptr[1]);
52 EXPECT_EQ(42, ptr[2]);
53 EXPECT_EQ(42, ptr[3]);
54 }
55
56 } // namespace fxcrt
57