• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/oned/BC_OnedCodaBarWriter.h"
6 
7 #include <string.h>
8 
9 #include "core/fxcrt/compiler_specific.h"
10 #include "core/fxcrt/data_vector.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
13 namespace {
14 
TEST(OnedCodaBarWriterTest,Encode)15 TEST(OnedCodaBarWriterTest, Encode) {
16   CBC_OnedCodaBarWriter writer;
17 
18   static const char kExpected1[] =
19       "# ##  #  # "  // A Start
20       "#  #  # ##";  // B End
21   DataVector<uint8_t> encoded = writer.Encode("");
22   ASSERT_EQ(strlen(kExpected1), encoded.size());
23   for (size_t i = 0; i < strlen(kExpected1); i++) {
24     UNSAFE_TODO(EXPECT_EQ(kExpected1[i] != ' ', !!encoded[i])) << i;
25   }
26   static const char kExpected2[] =
27       "# ##  #  # "  // A Start
28       "# # ##  # "   // 1
29       "# #  # ## "   // 2
30       "##  # # # "   // 3
31       "#  #  # ##";  // B End
32   encoded = writer.Encode("123");
33   ASSERT_EQ(strlen(kExpected2), encoded.size());
34   for (size_t i = 0; i < strlen(kExpected2); i++) {
35     UNSAFE_TODO(EXPECT_EQ(kExpected2[i] != ' ', !!encoded[i])) << i;
36   }
37   static const char kExpected3[] =
38       "# ##  #  # "  // A Start
39       "# #  ## # "   // -
40       "# ##  # # "   // $
41       "## ## ## # "  // .
42       "## ## # ## "  // /
43       "## # ## ## "  // :
44       "# ## ## ## "  // +
45       "#  #  # ##";  // B End
46   encoded = writer.Encode("-$./:+");
47   ASSERT_EQ(strlen(kExpected3), encoded.size());
48   for (size_t i = 0; i < strlen(kExpected3); i++) {
49     UNSAFE_TODO(EXPECT_EQ(kExpected3[i] != ' ', !!encoded[i])) << i;
50   }
51   static const char kExpected4[] =
52       "# ##  #  # "  // A Start
53       "# ## #  # "   // 4
54       "## # #  # "   // 5
55       "#  # # ## "   // 6
56       "## ## ## # "  // .
57       "## #  # # "   // 9
58       "#  ## # # "   // 8
59       "#  # ## # "   // 7
60       "## #  # # "   // 9
61       "#  ## # # "   // 8
62       "#  # ## # "   // 7
63       "## #  # # "   // 9
64       "#  ## # # "   // 8
65       "#  # ## # "   // 7
66       "## ## # ## "  // /
67       "# # #  ## "   // 0
68       "# # #  ## "   // 0
69       "# # ##  # "   // 1
70       "#  #  # ##";  // B End
71   encoded = writer.Encode("456.987987987/001");
72   ASSERT_EQ(strlen(kExpected4), encoded.size());
73   for (size_t i = 0; i < strlen(kExpected4); i++) {
74     UNSAFE_TODO(EXPECT_EQ(kExpected4[i] != ' ', !!encoded[i])) << i;
75   }
76 }
77 
TEST(OnedCodaBarWriterTest,SetDelimiters)78 TEST(OnedCodaBarWriterTest, SetDelimiters) {
79   CBC_OnedCodaBarWriter writer;
80 
81   EXPECT_TRUE(writer.SetStartChar('A'));
82   EXPECT_TRUE(writer.SetStartChar('B'));
83   EXPECT_TRUE(writer.SetStartChar('C'));
84   EXPECT_TRUE(writer.SetStartChar('D'));
85   EXPECT_TRUE(writer.SetStartChar('E'));
86   EXPECT_TRUE(writer.SetStartChar('N'));
87   EXPECT_TRUE(writer.SetStartChar('T'));
88   EXPECT_TRUE(writer.SetStartChar('*'));
89   EXPECT_FALSE(writer.SetStartChar('V'));
90   EXPECT_FALSE(writer.SetStartChar('0'));
91   EXPECT_FALSE(writer.SetStartChar('\0'));
92   EXPECT_FALSE(writer.SetStartChar('@'));
93 
94   EXPECT_TRUE(writer.SetEndChar('A'));
95   EXPECT_TRUE(writer.SetEndChar('B'));
96   EXPECT_TRUE(writer.SetEndChar('C'));
97   EXPECT_TRUE(writer.SetEndChar('D'));
98   EXPECT_TRUE(writer.SetEndChar('E'));
99   EXPECT_TRUE(writer.SetEndChar('N'));
100   EXPECT_TRUE(writer.SetEndChar('T'));
101   EXPECT_TRUE(writer.SetEndChar('*'));
102   EXPECT_FALSE(writer.SetEndChar('V'));
103   EXPECT_FALSE(writer.SetEndChar('0'));
104   EXPECT_FALSE(writer.SetEndChar('\0'));
105   EXPECT_FALSE(writer.SetEndChar('@'));
106 
107   writer.SetStartChar('N');
108   writer.SetEndChar('*');
109 
110   static const char kExpected[] =
111       "#  #  # ## "  // N (same as B) Start
112       "## #  # # "   // 9
113       "#  ## # # "   // 8
114       "#  # ## # "   // 7
115       "# #  #  ##";  // * (same as C) End
116   DataVector<uint8_t> encoded = writer.Encode("987");
117   ASSERT_EQ(strlen(kExpected), encoded.size());
118   for (size_t i = 0; i < strlen(kExpected); i++) {
119     UNSAFE_TODO(EXPECT_EQ(kExpected[i] != ' ', !!encoded[i])) << i;
120   }
121 }
122 
123 }  // namespace
124