|  | // Copyright 2017 The PDFium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "fxbarcode/oned/BC_OnedCodaBarWriter.h" | 
|  |  | 
|  | #include <string.h> | 
|  |  | 
|  | #include "core/fxcrt/data_vector.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | TEST(OnedCodaBarWriterTest, Encode) { | 
|  | CBC_OnedCodaBarWriter writer; | 
|  |  | 
|  | static const char kExpected1[] = | 
|  | "# ##  #  # "  // A Start | 
|  | "#  #  # ##";  // B End | 
|  | DataVector<uint8_t> encoded = writer.Encode(""); | 
|  | ASSERT_EQ(strlen(kExpected1), encoded.size()); | 
|  | for (size_t i = 0; i < strlen(kExpected1); i++) | 
|  | EXPECT_EQ(kExpected1[i] != ' ', !!encoded[i]) << i; | 
|  |  | 
|  | static const char kExpected2[] = | 
|  | "# ##  #  # "  // A Start | 
|  | "# # ##  # "   // 1 | 
|  | "# #  # ## "   // 2 | 
|  | "##  # # # "   // 3 | 
|  | "#  #  # ##";  // B End | 
|  | encoded = writer.Encode("123"); | 
|  | ASSERT_EQ(strlen(kExpected2), encoded.size()); | 
|  | for (size_t i = 0; i < strlen(kExpected2); i++) | 
|  | EXPECT_EQ(kExpected2[i] != ' ', !!encoded[i]) << i; | 
|  |  | 
|  | static const char kExpected3[] = | 
|  | "# ##  #  # "  // A Start | 
|  | "# #  ## # "   // - | 
|  | "# ##  # # "   // $ | 
|  | "## ## ## # "  // . | 
|  | "## ## # ## "  // / | 
|  | "## # ## ## "  // : | 
|  | "# ## ## ## "  // + | 
|  | "#  #  # ##";  // B End | 
|  | encoded = writer.Encode("-$./:+"); | 
|  | ASSERT_EQ(strlen(kExpected3), encoded.size()); | 
|  | for (size_t i = 0; i < strlen(kExpected3); i++) | 
|  | EXPECT_EQ(kExpected3[i] != ' ', !!encoded[i]) << i; | 
|  |  | 
|  | static const char kExpected4[] = | 
|  | "# ##  #  # "  // A Start | 
|  | "# ## #  # "   // 4 | 
|  | "## # #  # "   // 5 | 
|  | "#  # # ## "   // 6 | 
|  | "## ## ## # "  // . | 
|  | "## #  # # "   // 9 | 
|  | "#  ## # # "   // 8 | 
|  | "#  # ## # "   // 7 | 
|  | "## #  # # "   // 9 | 
|  | "#  ## # # "   // 8 | 
|  | "#  # ## # "   // 7 | 
|  | "## #  # # "   // 9 | 
|  | "#  ## # # "   // 8 | 
|  | "#  # ## # "   // 7 | 
|  | "## ## # ## "  // / | 
|  | "# # #  ## "   // 0 | 
|  | "# # #  ## "   // 0 | 
|  | "# # ##  # "   // 1 | 
|  | "#  #  # ##";  // B End | 
|  | encoded = writer.Encode("456.987987987/001"); | 
|  | ASSERT_EQ(strlen(kExpected4), encoded.size()); | 
|  | for (size_t i = 0; i < strlen(kExpected4); i++) | 
|  | EXPECT_EQ(kExpected4[i] != ' ', !!encoded[i]) << i; | 
|  | } | 
|  |  | 
|  | TEST(OnedCodaBarWriterTest, SetDelimiters) { | 
|  | CBC_OnedCodaBarWriter writer; | 
|  |  | 
|  | EXPECT_TRUE(writer.SetStartChar('A')); | 
|  | EXPECT_TRUE(writer.SetStartChar('B')); | 
|  | EXPECT_TRUE(writer.SetStartChar('C')); | 
|  | EXPECT_TRUE(writer.SetStartChar('D')); | 
|  | EXPECT_TRUE(writer.SetStartChar('E')); | 
|  | EXPECT_TRUE(writer.SetStartChar('N')); | 
|  | EXPECT_TRUE(writer.SetStartChar('T')); | 
|  | EXPECT_TRUE(writer.SetStartChar('*')); | 
|  | EXPECT_FALSE(writer.SetStartChar('V')); | 
|  | EXPECT_FALSE(writer.SetStartChar('0')); | 
|  | EXPECT_FALSE(writer.SetStartChar('\0')); | 
|  | EXPECT_FALSE(writer.SetStartChar('@')); | 
|  |  | 
|  | EXPECT_TRUE(writer.SetEndChar('A')); | 
|  | EXPECT_TRUE(writer.SetEndChar('B')); | 
|  | EXPECT_TRUE(writer.SetEndChar('C')); | 
|  | EXPECT_TRUE(writer.SetEndChar('D')); | 
|  | EXPECT_TRUE(writer.SetEndChar('E')); | 
|  | EXPECT_TRUE(writer.SetEndChar('N')); | 
|  | EXPECT_TRUE(writer.SetEndChar('T')); | 
|  | EXPECT_TRUE(writer.SetEndChar('*')); | 
|  | EXPECT_FALSE(writer.SetEndChar('V')); | 
|  | EXPECT_FALSE(writer.SetEndChar('0')); | 
|  | EXPECT_FALSE(writer.SetEndChar('\0')); | 
|  | EXPECT_FALSE(writer.SetEndChar('@')); | 
|  |  | 
|  | writer.SetStartChar('N'); | 
|  | writer.SetEndChar('*'); | 
|  |  | 
|  | static const char kExpected[] = | 
|  | "#  #  # ## "  // N (same as B) Start | 
|  | "## #  # # "   // 9 | 
|  | "#  ## # # "   // 8 | 
|  | "#  # ## # "   // 7 | 
|  | "# #  #  ##";  // * (same as C) End | 
|  | DataVector<uint8_t> encoded = writer.Encode("987"); | 
|  | ASSERT_EQ(strlen(kExpected), encoded.size()); | 
|  | for (size_t i = 0; i < strlen(kExpected); i++) | 
|  | EXPECT_EQ(kExpected[i] != ' ', !!encoded[i]) << i; | 
|  | } | 
|  |  | 
|  | }  // namespace |