You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

81 lines
4.5 KiB

/*
* Copyright 2017 Huy Cuong Nguyen
* Copyright 2016 ZXing authors
*/
// SPDX-License-Identifier: Apache-2.0
#include "oned/ODCode39Writer.h"
#include "BitMatrixIO.h"
#include "gtest/gtest.h"
using namespace ZXing;
using namespace ZXing::OneD;
namespace {
std::string Encode(const std::wstring& input)
{
auto result = ToString(Code39Writer().encode(input, 0, 0), '1', '0', false);
return result.substr(0, result.size() - 1); // remove the \n at the end
}
}
TEST(ODCode39WriterTest, Encode)
{
EXPECT_EQ(Encode(L"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"),
"000001001011011010110101001011010110100101101101101001010101011001011011010110010101"
"011011001010101010011011011010100110101011010011010101011001101011010101001101011010"
"100110110110101001010101101001101101011010010101101101001010101011001101101010110010"
"101101011001010101101100101100101010110100110101011011001101010101001011010110110010"
"110101010011011010101010011011010110100101011010110010101101101100101010101001101011"
"01101001101010101100110101010100101101101101001011010101100101101010010110110100000");
}
TEST(ODCode39WriterTest, EncodeExtended)
{
EXPECT_EQ(Encode(std::wstring(L"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", 0x20)),
"000001001011011010101001001001011001010101101001001001010110101001011010010010010101"
"011010010110100100100101011011010010101001001001010101011001011010010010010101101011"
"001010100100100101010110110010101001001001010101010011011010010010010101101010011010"
"100100100101010110100110101001001001010101011001101010010010010101101010100110100100"
"100101010110101001101001001001010110110101001010010010010101010110100110100100100101"
"011010110100101001001001010101101101001010010010010101010101100110100100100101011010"
"101100101001001001010101101011001010010010010101010110110010100100100101011001010101"
"101001001001010100110101011010010010010101100110101010100100100101010010110101101001"
"001001010110010110101010010010010101001101101010101001001001011010100101101010010010"
"010101101001011010100100100101101101001010101001001001010101100101101010010010010110"
"101100101010010110110100000");
EXPECT_EQ(Encode(L" !\"#$%&'()*+,-./0123456789:;<=>?"),
"000001001011011010100110101101010010010100101101010010110100100101001010110100101101"
"001001010010110110100101010010010100101010110010110100100101001011010110010101001001"
"010010101101100101010010010100101010100110110100100101001011010100110101001001010010"
"101101001101010010010100101010110011010100100101001011010101001101001001010010101101"
"010011010010101101101100101011010100100101001011010110100101010011011010110100101011"
"010110010101101101100101010101001101011011010011010101011001101010101001011011011010"
"010110101011001011010100100101001010011011010101010010010010101101100101010100100100"
"101010100110110101001001001011010100110101010010010010101101001101010100100100101010"
"11001101010010110110100000");
EXPECT_EQ(Encode(L"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"),
"0000010010110110101010010010010100110101011011010100101101011010010110110110100101010"
"101100101101101011001010101101100101010101001101101101010011010101101001101010101100"
"110101101010100110101101010011011011010100101010110100110110101101001010110110100101"
"010101100110110101011001010110101100101010110110010110010101011010011010101101100110"
"101010100101101011011001011010101001101101010101001001001011010101001101010010010010"
"101101010011010100100100101101101010010101001001001010101101001101010010010010110101"
"101001010010110110100000");
EXPECT_EQ(Encode(L"`abcdefghijklmnopqrstuvwxyz{|}~"),
"000001001011011010101001001001011001101010101001010010010110101001011010010100100101"
"011010010110100101001001011011010010101001010010010101011001011010010100100101101011"
"001010100101001001010110110010101001010010010101010011011010010100100101101010011010"
"100101001001010110100110101001010010010101011001101010010100100101101010100110100101"
"001001010110101001101001010010010110110101001010010100100101010110100110100101001001"
"011010110100101001010010010101101101001010010100100101010101100110100101001001011010"
"101100101001010010010101101011001010010100100101010110110010100101001001011001010101"
"101001010010010100110101011010010100100101100110101010100101001001010010110101101001"
"010010010110010110101010010100100101001101101010101001001001010110110100101010010010"
"010101010110011010100100100101101010110010101001001001010110101100101010010010010101"
"011011001010010110110100000");
}