File: DMWriterTest.cpp

package info (click to toggle)
zxing-cpp 2.3.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 26,832 kB
  • sloc: cpp: 32,803; ansic: 18,360; php: 1,156; python: 215; makefile: 25; sh: 3
file content (142 lines) | stat: -rw-r--r-- 8,476 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
* Copyright 2017 Huy Cuong Nguyen
* Copyright 2008 ZXing authors
*/
// SPDX-License-Identifier: Apache-2.0

#include "datamatrix/DMWriter.h"
#include "BitMatrixIO.h"

#include "gtest/gtest.h"

using namespace ZXing;
using namespace ZXing::DataMatrix;

TEST(DMWriterTest, ImageWriter)
{
	int bigEnough = 64;
	Writer writer;
	writer.setMargin(0).setShapeHint(SymbolShape::SQUARE);
	auto matrix = writer.encode(L"Hello Google", bigEnough, bigEnough);
	EXPECT_LE(matrix.width(), bigEnough);
	EXPECT_LE(matrix.height(), bigEnough);
}

TEST(DMWriterTest, Writer2)
{
	int bigEnough = 14;
	Writer writer;
	writer.setMargin(0).setShapeHint(SymbolShape::SQUARE);
	auto matrix = writer.encode(L"Hello Me", bigEnough, bigEnough);
	EXPECT_EQ(matrix.width(), bigEnough);
	EXPECT_EQ(matrix.height(), bigEnough);
}

TEST(DMWriterTest, TooSmallSize)
{
	// The DataMatrix will not fit in this size, so the matrix should come back bigger
	int tooSmall = 8;
	Writer writer;
	writer.setMargin(0);
	auto matrix = writer.encode(L"http://www.google.com/", tooSmall, tooSmall);
	EXPECT_GT(matrix.width(), tooSmall);
	EXPECT_GT(matrix.height(), tooSmall);
}

static void DoTest(const std::wstring& text, SymbolShape shape, const char* expected)
{
	Writer writer;
	writer.setMargin(0).setShapeHint(shape);
	auto matrix = writer.encode(text, 0, 0);
	auto actual = ToString(matrix, 'X', ' ', true);
	EXPECT_EQ(expected, actual);
}

TEST(DMWriterTest, Small)
{
	DoTest(L"0", SymbolShape::SQUARE,
	       "X   X   X   X   X   \n"
	       "X X   X X     X   X \n"
	       "X       X X     X   \n"
	       "X     X           X \n"
	       "X     X   X X X X   \n"
	       "X X X X X X       X \n"
	       "X       X   X       \n"
	       "X X     X X X   X X \n"
	       "X   X       X       \n"
	       "X X X X X X X X X X \n" );
}

TEST(DMWriterTest, Rectangle)
{
	DoTest(L"abcde", SymbolShape::RECTANGLE,
	       "X   X   X   X   X   X   X   X   X   \n"
	       "X   X X     X     X     X   X X   X \n"
	       "X X       X X   X     X   X X       \n"
	       "X   X X X     X     X X   X X   X X \n"
	       "X     X X X   X X X X X X X X X     \n"
	       "X   X X     X     X X X X       X X \n"
	       "X X   X X X       X X X X X   X X   \n"
	       "X X X X X X X X X X X X X X X X X X \n");
}

TEST(DMWriterTest, Large)
{
	auto text = L"123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-"
				L"123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-"
				L"123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-";
	auto expected =
		"X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   \n"
		"X X     X     X   X   X     X X X X     X     X   X X     X X       X X X   X   X   X     X X       X X \n"
		"X X                   X X X   X   X                 X X X X X   X X     X   X   X X   X X X X   X X     \n"
		"X X     X X X     X X     X   X   X     X X X X X X X   X   X     X             X X X   X   X     X   X \n"
		"X X       X   X   X               X       X     X   X   X   X     X X X X   X X     X   X   X           \n"
		"X   X   X     X X   X X X     X X   X   X X       X X   X X X X     X   X     X         X X X   X X X X \n"
		"X   X X   X X X       X   X   X X   X X   X X X X   X X   X   X     X   X     X X X X X   X       X X   \n"
		"X   X X X   X   X   X     X X       X X     X     X X X   X   X     X X X X     X     X   X           X \n"
		"X X     X   X   X X   X X X X   X X   X             X         X X X   X   X               X X   X X X   \n"
		"X X             X X X   X   X     X   X     X X X X X     X X     X   X   X     X X X X       X   X X X \n"
		"X X X X X   X X     X   X   X         X       X     X X   X               X       X           X X X     \n"
		"X   X   X     X         X X X     X X   X   X     X X X X   X X X     X X   X   X         X X X   X   X \n"
		"X   X   X     X X X X X   X   X   X X   X X   X X   X X       X   X   X X   X X   X   X     X   X X     \n"
		"X   X X X X     X     X       X X       X X X   X X X   X   X     X X       X     X X       X X X X   X \n"
		"X X   X   X               X X X X   X X     X   X   X   X X   X X X X   X X   X X X X   X   X     X X   \n"
		"X X   X   X     X X X X X   X   X     X           X X   X X X   X   X     X X   X   X     X X   X X   X \n"
		"X         X       X     X   X   X     X X X X   X   X X     X   X   X       X         X X   X X   X     \n"
		"X     X X   X   X X         X X X X     X   X     X X X         X X X X         X X X     X X   X X   X \n"
		"X X   X X   X X   X X X X X   X   X     X   X       X X X X X X   X   X X X X X   X   X     X X X   X   \n"
		"X X X       X X     X     X   X   X     X X X X   X X   X     X   X     X     X     X X     X   X     X \n"
		"X X X   X X   X                   X X X   X   X     X             X       X       X   X   X X X X X X   \n"
		"X   X     X   X     X X X     X X     X   X   X   X X   X X X X   X     X             X     X X X   X X \n"
		"X   X         X       X   X   X               X     X     X       X X X X X X   X   X   X X X   X X X   \n"
		"X X X     X X   X   X     X X   X X X     X X   X X X   X     X X   X X X             X   X       X X X \n"
		"X X   X   X X   X X   X X X       X   X   X X   X   X X   X   X X   X   X     X X X X X X     X   X     \n"
		"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
		"X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   X   \n"
		"X     X X       X X X   X   X   X     X X       X X X     X X     X   X X X X X X   X X   X X       X X \n"
		"X X X X X   X X     X   X   X X   X X X X   X X     X X X X     X   X   X X           X       X X   X   \n"
		"X   X   X     X             X X X   X   X     X X X X   X   X   X       X X           X X         X X X \n"
		"X   X   X     X X X X   X X     X   X   X       X   X   X X X               X     X X X X   X   X   X   \n"
		"X   X X X X     X   X     X         X X X X       X X         X     X   X     X X     X   X X   X     X \n"
		"X X   X   X     X   X     X X X X X   X   X X X     X X   X   X         X X X   X X     X X     X   X   \n"
		"X X   X   X     X X X X     X     X   X     X     X X X X X         X X   X   X     X X   X X X X     X \n"
		"X         X X X   X   X               X     X X     X   X       X X X     X       X   X X   X     X     \n"
		"X     X X     X   X   X     X X X X   X     X   X X X   X X     X   X       X X   X   X   X       X X X \n"
		"X X   X               X       X       X X   X X X   X   X       X       X X X   X   X X     X X   X X   \n"
		"X X X   X X X     X X   X   X     X X           X X X X     X X X X X   X     X X X   X     X         X \n"
		"X X       X   X   X X   X X   X   X     X X X       X X   X X       X X X   X X     X   X     X   X X   \n"
		"X   X   X     X X       X     X X     X X     X   X X X   X   X X   X           X X       X X X X   X X \n"
		"X   X X   X X X X   X X   X X X X   X X   X X X     X     X X X           X       X X X X X X       X   \n"
		"X   X X X   X   X     X X   X   X X   X         X X X           X X     X X X X     X X   X X         X \n"
		"X X     X   X   X       X     X X       X X     X   X X   X     X X         X   X X X X X X   X     X   \n"
		"X X         X X X X             X X X     X X X X X X         X X X   X X X X X X X X X X X       X   X \n"
		"X X X X X X   X   X X X X X   X X     X X X   X     X       X     X X       X X X       X X   X     X   \n"
		"X   X     X   X     X   X     X X X X     X X     X X     X X X   X   X X X X X X   X   X     X   X   X \n"
		"X             X       X     X   X   X               X   X X   X X   X     X X           X X   X X X     \n"
		"X   X X X X   X     X X X X   X     X     X   X X X X   X   X X X     X X   X             X X X   X   X \n"
		"X     X       X           X     X X     X     X X   X     X X X       X   X       X   X   X     X       \n"
		"X   X X   X X     X   X   X X   X   X X       X   X X         X X X X   X           X   X           X X \n"
		"X X   X X X X X       X     X         X X X X X     X     X   X X         X X X     X     X   X X   X   \n"
		"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n";
	DoTest(text, SymbolShape::SQUARE, expected);
}