Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
BC_DataMatrixWriter_unittest.cpp
Go to the documentation of this file.
1// Copyright 2018 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 "fxbarcode/datamatrix/BC_DataMatrixWriter.h"
6
7#include <stdint.h>
8
9#include "core/fxcrt/data_vector.h"
10#include "testing/gmock/include/gmock/gmock.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13using testing::ElementsAreArray;
14
16 public:
19
20 // testing::Test:
23};
24
26 CBC_DataMatrixWriter writer;
27 int32_t width = -1;
28 int32_t height = -1;
29
30 {
31 static constexpr int kExpectedDimension = 10;
32 // clang-format off
33 static constexpr uint8_t kExpectedData[] = {
34 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
35 1, 1, 0, 1, 1, 0, 1, 0, 0, 1,
36 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
37 1, 1, 1, 1, 0, 0, 0, 1, 0, 1,
38 1, 0, 1, 0, 0, 0, 1, 0, 0, 0,
39 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,
40 1, 0, 0, 1, 0, 1, 1, 0, 1, 0,
41 1, 0, 1, 0, 1, 1, 1, 1, 0, 1,
42 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
43 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
44 };
45 // clang-format on
46 DataVector<uint8_t> data = writer.Encode(L"", &width, &height);
47 ASSERT_EQ(std::size(kExpectedData), data.size());
48 ASSERT_EQ(kExpectedDimension, width);
49 ASSERT_EQ(kExpectedDimension, height);
50 EXPECT_THAT(data, ElementsAreArray(kExpectedData));
51 }
52 {
53 static constexpr int kExpectedDimension = 14;
54 // clang-format off
55 static constexpr uint8_t kExpectedData[] = {
56 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
57 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1,
58 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0,
59 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1,
60 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0,
61 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1,
62 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0,
63 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1,
64 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0,
65 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1,
66 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0,
67 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
68 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0,
69 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
70 };
71 // clang-format on
72 DataVector<uint8_t> data = writer.Encode(L"helloworld", &width, &height);
73 ASSERT_EQ(std::size(kExpectedData), data.size());
74 ASSERT_EQ(kExpectedDimension, width);
75 ASSERT_EQ(kExpectedDimension, height);
76 EXPECT_THAT(data, ElementsAreArray(kExpectedData));
77 }
78 {
79 static constexpr int kExpectedDimension = 10;
80 // clang-format off
81 static constexpr uint8_t kExpectedData[] = {
82 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
83 1, 1, 0, 1, 1, 0, 0, 1, 1, 1,
84 1, 1, 0, 0, 0, 1, 0, 1, 1, 0,
85 1, 1, 0, 0, 1, 1, 0, 1, 0, 1,
86 1, 1, 0, 0, 1, 1, 1, 0, 0, 0,
87 1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
88 1, 1, 0, 1, 0, 1, 1, 1, 1, 0,
89 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
90 1, 1, 0, 1, 1, 0, 0, 1, 0, 0,
91 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
92 };
93 // clang-format on
94 DataVector<uint8_t> data = writer.Encode(L"12345", &width, &height);
95 ASSERT_EQ(std::size(kExpectedData), data.size());
96 ASSERT_EQ(kExpectedDimension, width);
97 ASSERT_EQ(kExpectedDimension, height);
98 EXPECT_THAT(data, ElementsAreArray(kExpectedData));
99 }
100 {
101 static constexpr int kExpectedDimension = 18;
102 // clang-format off
103 static constexpr uint8_t kExpectedData[] = {
104 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
105 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1,
106 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,
107 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1,
108 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0,
109 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
110 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0,
111 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1,
112 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0,
113 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1,
114 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0,
115 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1,
116 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
117 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1,
118 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0,
119 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,
120 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0,
121 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
122 };
123 // clang-format on
124 DataVector<uint8_t> data =
125 writer.Encode(L"abcdefghijklmnopqrst", &width, &height);
126 ASSERT_EQ(std::size(kExpectedData), data.size());
127 ASSERT_EQ(kExpectedDimension, width);
128 ASSERT_EQ(kExpectedDimension, height);
129 EXPECT_THAT(data, ElementsAreArray(kExpectedData));
130 }
131 {
132 DataVector<uint8_t> data = writer.Encode(L"hello world", &width, &height);
133 ASSERT_TRUE(data.empty());
134 }
135}
136
138 CBC_DataMatrixWriter writer;
139 int32_t width = -1;
140 int32_t height = -1;
141
142 static constexpr int kMaxInputLength = 2335; // Per spec.
143 WideString input;
144 for (size_t i = 0; i < kMaxInputLength; ++i)
145 input.InsertAtBack(L'a');
146
147 {
148 static constexpr int kExpectedDimension = 144;
149 DataVector<uint8_t> data = writer.Encode(input.c_str(), &width, &height);
150 EXPECT_EQ(20736u, data.size());
151 EXPECT_EQ(kExpectedDimension, width);
152 EXPECT_EQ(kExpectedDimension, height);
153 }
154
155 // Go over the limit.
156 input.InsertAtBack(L'a');
157 {
158 width = -1;
159 height = -1;
160 DataVector<uint8_t> data = writer.Encode(input.c_str(), &width, &height);
161 EXPECT_EQ(0u, data.size());
162 EXPECT_EQ(-1, width);
163 EXPECT_EQ(-1, height);
164 }
165}
166
168 CBC_DataMatrixWriter writer;
169 int32_t width = -1;
170 int32_t height = -1;
171
172 static constexpr int kMaxInputLength = 3116; // Per spec.
173 WideString input;
174 for (size_t i = 0; i < kMaxInputLength; ++i)
175 input.InsertAtBack(L'1');
176
177 {
178 static constexpr int kExpectedDimension = 144;
179 DataVector<uint8_t> data = writer.Encode(input.c_str(), &width, &height);
180 EXPECT_EQ(20736u, data.size());
181 EXPECT_EQ(kExpectedDimension, width);
182 EXPECT_EQ(kExpectedDimension, height);
183 }
184
185 // Go over the limit.
186 input.InsertAtBack(L'1');
187 {
188 width = -1;
189 height = -1;
190 DataVector<uint8_t> data = writer.Encode(input.c_str(), &width, &height);
191 EXPECT_EQ(0u, data.size());
192 EXPECT_EQ(-1, width);
193 EXPECT_EQ(-1, height);
194 }
195}
TEST_F(CBC_DataMatrixWriterTest, Encode)
void BC_Library_Init()
void BC_Library_Destroy()
~CBC_DataMatrixWriterTest() override=default
CBC_DataMatrixWriterTest()=default
fxcrt::WideString WideString
Definition widestring.h:207