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
|
/*
* Copyright 2022 gitlost
*/
// SPDX-License-Identifier: Apache-2.0
#include "oned/ODCode39Reader.h"
#include "ReaderOptions.h"
#include "Barcode.h"
#include "gtest/gtest.h"
using namespace ZXing;
using namespace ZXing::OneD;
// Helper to call decodePattern()
static Barcode parse(PatternRow row, ReaderOptions opts = {})
{
Code39Reader reader(opts);
row.insert(row.begin(), { 0, 1, 2, 1, 1, 2, 1, 2, 1, 1, 0 });
row.insert(row.end(), { 0, 1, 2, 1, 1, 2, 1, 2, 1, 1, 0 });
std::unique_ptr<RowReader::DecodingState> state;
PatternView next(row);
return reader.decodePattern(0, next, state);
}
TEST(ODCode39ReaderTest, SymbologyIdentifier)
{
{
// Plain "A"
PatternRow row({ 2, 1, 1, 1, 1, 2, 1, 1, 2 });
auto result = parse(row);
EXPECT_EQ(result.symbologyIdentifier(), "]A0");
EXPECT_EQ(result.text(), "A");
}
{
// "A" with checksum
PatternRow row({ 2, 1, 1, 1, 1, 2, 1, 1, 2, 0, 2, 1, 1, 1, 1, 2, 1, 1, 2 });
auto result = parse(row);
EXPECT_EQ(result.symbologyIdentifier(), "]A1");
EXPECT_EQ(result.text(), "AA");
}
{
// Extended "a"
PatternRow row({ 1, 2, 1, 1, 1, 2, 1, 2, 1, 0, 2, 1, 1, 1, 1, 2, 1, 1, 2 });
auto result = parse(row);
EXPECT_EQ(result.symbologyIdentifier(), "]A4");
EXPECT_EQ(result.text(), "a");
}
{
// Extended "a" with checksum
PatternRow row({ 1, 2, 1, 1, 1, 2, 1, 2, 1, 0, 2, 1, 1, 1, 1, 2, 1, 1, 2, 0, 2, 1, 1, 2, 1, 1, 2, 1, 1 });
auto result = parse(row);
EXPECT_EQ(result.symbologyIdentifier(), "]A5");
EXPECT_EQ(result.text(), "a8");
}
}
|