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
cfx_barcode_unittest.cpp
Go to the documentation of this file.
1// Copyright 2017 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/cfx_barcode.h"
6
7#include <memory>
8#include <string>
9#include <utility>
10
11#include "core/fxcrt/fx_coordinates.h"
12#include "core/fxcrt/fx_string.h"
13#include "core/fxge/cfx_defaultrenderdevice.h"
14#include "core/fxge/cfx_renderdevice.h"
15#include "core/fxge/dib/cfx_dibitmap.h"
16#include "testing/gtest/include/gtest/gtest.h"
17#include "testing/utils/bitmap_saver.h"
18#include "testing/utils/hash.h"
19
20class BarcodeTest : public testing::Test {
21 public:
22 void SetUp() override {
24
25 auto device = std::make_unique<CFX_DefaultRenderDevice>();
26 auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
27 if (bitmap->Create(640, 480, FXDIB_Format::kBgrx)) {
28 bitmap_ = bitmap;
29 }
30 ASSERT_TRUE(bitmap_);
31 ASSERT_TRUE(device->Attach(bitmap_));
32 device_ = std::move(device);
33 }
34
36 bitmap_.Reset();
37 device_.reset();
38 barcode_.reset();
40 }
41
42 CFX_Barcode* barcode() const { return barcode_.get(); }
43
44 void Create(BC_TYPE type) {
45 barcode_ = CFX_Barcode::Create(type);
46 barcode_->SetHeight(298);
47 barcode_->SetWidth(418);
48 }
49
50 bool RenderDevice() { return barcode_->RenderDevice(device_.get(), matrix_); }
51
52 std::string BitmapChecksum() {
53 return GenerateMD5Base16(bitmap_->GetBuffer());
54 }
55
56 // Manually insert calls to this as needed for debugging.
57 void SaveBitmap(const std::string& filename) {
58 BitmapSaver::WriteBitmapToPng(bitmap_.Get(), filename);
59 }
60
61 protected:
65 RetainPtr<CFX_DIBitmap> bitmap_;
66};
67
68// https://crbug.com/pdfium/738
69#if defined(PDF_USE_SKIA)
70#define MAYBE_Code39 DISABLED_Code39
71#else
72#define MAYBE_Code39 Code39
73#endif
75 Create(BC_TYPE::kCode39);
76 EXPECT_TRUE(barcode()->Encode(L"CLAMS"));
77 RenderDevice();
78 EXPECT_EQ("cd4cd3f36da38ff58d9f621827018903", BitmapChecksum());
79}
80
81// https://crbug.com/pdfium/738
82#if defined(PDF_USE_SKIA)
83#define MAYBE_CodaBar DISABLED_CodaBar
84#else
85#define MAYBE_CodaBar CodaBar
86#endif
88 Create(BC_TYPE::kCodabar);
89 EXPECT_TRUE(barcode()->Encode(L"$123-456"));
90 RenderDevice();
91 EXPECT_EQ("5fad4fc19f099001a0fe83c89430c977", BitmapChecksum());
92}
93
95 Create(BC_TYPE::kCodabar);
96 EXPECT_FALSE(barcode()->Encode(L"clams"));
97}
98
99// https://crbug.com/pdfium/738
100#if defined(PDF_USE_SKIA)
101#define MAYBE_Code128 DISABLED_Code128
102#else
103#define MAYBE_Code128 Code128
104#endif
106 Create(BC_TYPE::kCode128);
107 EXPECT_TRUE(barcode()->Encode(L"Clams"));
108 RenderDevice();
109 EXPECT_EQ("6351f0f6e997050e4658bbb4777aef74", BitmapChecksum());
110}
111
112// https://crbug.com/pdfium/738
113#if defined(PDF_USE_SKIA)
114#define MAYBE_Code128B DISABLED_Code128B
115#else
116#define MAYBE_Code128B Code128B
117#endif
119 Create(BC_TYPE::kCode128B);
120 EXPECT_TRUE(barcode()->Encode(L"Clams"));
121 RenderDevice();
122 EXPECT_EQ("6351f0f6e997050e4658bbb4777aef74", BitmapChecksum());
123}
124
125// https://crbug.com/pdfium/738
126#if defined(PDF_USE_SKIA)
127#define MAYBE_Code128C DISABLED_Code128C
128#else
129#define MAYBE_Code128C Code128C
130#endif
132 Create(BC_TYPE::kCode128C);
133 EXPECT_TRUE(barcode()->Encode(L"123456"));
134 RenderDevice();
135 EXPECT_EQ("fba730a807ba6363f9bd2bc7f8c56d1f", BitmapChecksum());
136}
137
138// https://crbug.com/pdfium/738
139#if defined(PDF_USE_SKIA)
140#define MAYBE_Code128CLetters DISABLED_Code128CLetters
141#else
142#define MAYBE_Code128CLetters Code128CLetters
143#endif
145 Create(BC_TYPE::kCode128C);
146 EXPECT_TRUE(barcode()->Encode(L"clams"));
147 RenderDevice();
148 EXPECT_EQ("6284ec8503d5a948c9518108da33cdd3", BitmapChecksum());
149}
150
151// https://crbug.com/pdfium/738
152#if defined(PDF_USE_SKIA)
153#define MAYBE_Ean8 DISABLED_Ean8
154#else
155#define MAYBE_Ean8 Ean8
156#endif
158 Create(BC_TYPE::kEAN8);
159 EXPECT_TRUE(barcode()->Encode(L"123456"));
160 RenderDevice();
161 EXPECT_EQ("aff88491ac46ca6217d780d185300cde", BitmapChecksum());
162}
163
165 Create(BC_TYPE::kEAN8);
166 EXPECT_FALSE(barcode()->Encode(L"clams"));
167}
168
169// https://crbug.com/pdfium/738
170#if defined(PDF_USE_SKIA)
171#define MAYBE_UPCA DISABLED_UPCA
172#else
173#define MAYBE_UPCA UPCA
174#endif
176 Create(BC_TYPE::kUPCA);
177 EXPECT_TRUE(barcode()->Encode(L"123456"));
178 RenderDevice();
179 EXPECT_EQ("fe26a5714cff7ffe3f9b02183efc435b", BitmapChecksum());
180}
181
183 Create(BC_TYPE::kUPCA);
184 EXPECT_FALSE(barcode()->Encode(L"clams"));
185}
186
187// https://crbug.com/pdfium/738
188#if defined(PDF_USE_SKIA)
189#define MAYBE_Ean13 DISABLED_Ean13
190#else
191#define MAYBE_Ean13 Ean13
192#endif
194 Create(BC_TYPE::kEAN13);
195 EXPECT_TRUE(barcode()->Encode(L"123456"));
196 RenderDevice();
197 EXPECT_EQ("72d2190b98d635c32834bf67552e561e", BitmapChecksum());
198}
199
201 Create(BC_TYPE::kEAN13);
202 EXPECT_FALSE(barcode()->Encode(L"clams"));
203}
204
205// https://crbug.com/pdfium/738
206#if defined(PDF_USE_SKIA)
207#define MAYBE_Pdf417 DISABLED_Pdf417
208#else
209#define MAYBE_Pdf417 Pdf417
210#endif
212 Create(BC_TYPE::kPDF417);
213 EXPECT_TRUE(barcode()->Encode(L"clams"));
214 RenderDevice();
215 EXPECT_EQ("191e35d11613901b7d5d51033689aa89", BitmapChecksum());
216}
217
218// https://crbug.com/pdfium/738
219#if defined(PDF_USE_SKIA)
220#define MAYBE_DataMatrix DISABLED_DataMatrix
221#else
222#define MAYBE_DataMatrix DataMatrix
223#endif
225 Create(BC_TYPE::kDataMatrix);
226 EXPECT_TRUE(barcode()->Encode(L"clams"));
227 RenderDevice();
228 EXPECT_EQ("5e5cd9a680b86fcd4ffd53ed36e3c980", BitmapChecksum());
229}
230
231// https://crbug.com/pdfium/738
232#if defined(PDF_USE_SKIA)
233#define MAYBE_QrCode DISABLED_QrCode
234#else
235#define MAYBE_QrCode QrCode
236#endif
238 Create(BC_TYPE::kQRCode);
239 EXPECT_TRUE(barcode()->Encode(L"clams"));
240 RenderDevice();
241 EXPECT_EQ("4751c6e0f67749fabe24f787128decee", BitmapChecksum());
242}
BC_TYPE
Definition BC_Library.h:20
@ kCode128C
Definition BC_Library.h:26
@ kDataMatrix
Definition BC_Library.h:32
@ kCode128B
Definition BC_Library.h:25
void BC_Library_Init()
void BC_Library_Destroy()
#define MAYBE_Pdf417
#define MAYBE_Code128B
#define MAYBE_Code128C
#define MAYBE_UPCA
#define MAYBE_Code128
#define MAYBE_CodaBar
#define MAYBE_Code128CLetters
#define MAYBE_QrCode
TEST_F(BarcodeTest, MAYBE_Code39)
#define MAYBE_DataMatrix
#define MAYBE_Ean13
#define MAYBE_Ean8
#define MAYBE_Code39
void TearDown() override
std::string BitmapChecksum()
void SetUp() override
std::unique_ptr< CFX_Barcode > barcode_
CFX_Barcode * barcode() const
void SaveBitmap(const std::string &filename)
void Create(BC_TYPE type)
std::unique_ptr< CFX_RenderDevice > device_
RetainPtr< CFX_DIBitmap > bitmap_
FXDIB_Format
Definition fx_dib.h:21