Home | History | Annotate | Download | only in oned
      1 // Copyright 2017 PDFium Authors. All rights reserved.
      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_OnedEAN8Writer.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 namespace {
      9 
     10 TEST(OnedEAN8WriterTest, Encode) {
     11   CBC_OnedEAN8Writer writer;
     12   int32_t width;
     13   int32_t height;
     14   uint8_t* encoded;
     15   const char* expected;
     16 
     17   // EAN-8 barcodes encode 8-digit numbers into 67 modules in a unidimensional
     18   // disposition.
     19   encoded = writer.Encode("", BCFORMAT_EAN_8, width, height);
     20   EXPECT_EQ(nullptr, encoded);
     21   FX_Free(encoded);
     22 
     23   encoded = writer.Encode("123", BCFORMAT_EAN_8, width, height);
     24   EXPECT_EQ(nullptr, encoded);
     25   FX_Free(encoded);
     26 
     27   encoded = writer.Encode("1234567", BCFORMAT_EAN_8, width, height);
     28   EXPECT_EQ(nullptr, encoded);
     29   FX_Free(encoded);
     30 
     31   encoded = writer.Encode("123456789", BCFORMAT_EAN_8, width, height);
     32   EXPECT_EQ(nullptr, encoded);
     33   FX_Free(encoded);
     34 
     35   encoded = writer.Encode("12345670", BCFORMAT_EAN_8, width, height);
     36   EXPECT_NE(nullptr, encoded);
     37   EXPECT_EQ(1, height);
     38   EXPECT_EQ(67, width);
     39 
     40   expected =
     41       "# #"      // Start
     42       "  ##  #"  // 1 L
     43       "  #  ##"  // 2 L
     44       " #### #"  // 3 L
     45       " #   ##"  // 4 L
     46       " # # "    // Middle
     47       "#  ### "  // 5 R
     48       "# #    "  // 6 R
     49       "#   #  "  // 7 R
     50       "###  # "  // 0 R
     51       "# #";     // End
     52   for (int i = 0; i < 67; i++) {
     53     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
     54   }
     55   FX_Free(encoded);
     56 
     57   encoded = writer.Encode("99441104", BCFORMAT_EAN_8, width, height);
     58   EXPECT_NE(nullptr, encoded);
     59   EXPECT_EQ(1, height);
     60   EXPECT_EQ(67, width);
     61 
     62   expected =
     63       "# #"      // Start
     64       "   # ##"  // 9 L
     65       "   # ##"  // 9 L
     66       " #   ##"  // 4 L
     67       " #   ##"  // 4 L
     68       " # # "    // Middle
     69       "##  ## "  // 1 R
     70       "##  ## "  // 1 R
     71       "###  # "  // 0 R
     72       "# ###  "  // 4 R
     73       "# #";     // End
     74   for (int i = 0; i < 67; i++) {
     75     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
     76   }
     77   FX_Free(encoded);
     78 }
     79 
     80 TEST(OnedEAN8WriterTest, Checksum) {
     81   CBC_OnedEAN8Writer writer;
     82   EXPECT_EQ(0, writer.CalcChecksum(""));
     83   EXPECT_EQ(6, writer.CalcChecksum("123"));
     84   EXPECT_EQ(0, writer.CalcChecksum("1234567"));
     85   EXPECT_EQ(4, writer.CalcChecksum("9944110"));
     86 }
     87 
     88 }  // namespace
     89