mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +00:00
still working on tests
This commit is contained in:
@@ -183,6 +183,15 @@ impl Reader for QrReader {
|
||||
}
|
||||
}
|
||||
|
||||
if detectorResult.is_err() {
|
||||
for decode_function in [DetectPureQR, DetectPureMQR] {
|
||||
detectorResult = decode_function(binImg);
|
||||
if detectorResult.is_ok() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let detectorResult = detectorResult?;
|
||||
|
||||
// let detectorResult: DetectorResult;
|
||||
|
||||
@@ -4,13 +4,11 @@
|
||||
*/
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use crate::{qrcode::cpp_port::decoder::Decode, common::BitMatrix, Exceptions};
|
||||
use crate::{common::BitMatrix, qrcode::cpp_port::decoder::Decode, Exceptions};
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM3L()
|
||||
{
|
||||
const CODE_STR : &str =
|
||||
r"XXXXXXX X X X X
|
||||
fn MQRCodeM3L() {
|
||||
const CODE_STR: &str = r"XXXXXXX X X X X
|
||||
X X X X
|
||||
X XXX X XXXXXXX
|
||||
X XXX X X X XX
|
||||
@@ -26,18 +24,15 @@ X XXXXX XXX X X
|
||||
X X X XXX
|
||||
XXX XX X X XXXX
|
||||
";
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR,
|
||||
"X", " ").unwrap();
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR, "X", " ").unwrap();
|
||||
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM3M()
|
||||
{
|
||||
const CODE_STR : &str =
|
||||
r"XXXXXXX X X X X
|
||||
fn MQRCodeM3M() {
|
||||
const CODE_STR: &str = r"XXXXXXX X X X X
|
||||
X X XX
|
||||
X XXX X X XX XX
|
||||
X XXX X X X
|
||||
@@ -53,18 +48,15 @@ XX X X X
|
||||
X X X
|
||||
X X XXXX XXX
|
||||
";
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR,
|
||||
"X", " ").unwrap();
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR, "X", " ").unwrap();
|
||||
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM1()
|
||||
{
|
||||
const CODE_STR : &str =
|
||||
r"XXXXXXX X X
|
||||
fn MQRCodeM1() {
|
||||
const CODE_STR: &str = r"XXXXXXX X X
|
||||
X X
|
||||
X XXX X XXX
|
||||
X XXX X XX
|
||||
@@ -76,18 +68,15 @@ XX X
|
||||
X XXXXX X
|
||||
X XXXXXX X
|
||||
";
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR,
|
||||
"X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
assert_eq!("123", result.text());
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR, "X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
assert_eq!("123", result.text());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM1Error4Bits()
|
||||
{
|
||||
const CODE_STR : &str =
|
||||
r"XXXXXXX X X
|
||||
fn MQRCodeM1Error4Bits() {
|
||||
const CODE_STR: &str = r"XXXXXXX X X
|
||||
X X XX
|
||||
X XXX X X
|
||||
X XXX X XX
|
||||
@@ -99,20 +88,20 @@ XX X
|
||||
X XXXXXX
|
||||
X XXXXXXX
|
||||
";
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR,
|
||||
"X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix);
|
||||
dbg!(&result);
|
||||
assert!(matches!(result.err(), Some(Exceptions::ReedSolomonException(_))));
|
||||
// assert_eq!(Error::Checksum, result.error());
|
||||
// assert!(result.text().is_empty());
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR, "X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix);
|
||||
dbg!(&result);
|
||||
assert!(matches!(
|
||||
result.err(),
|
||||
Some(Exceptions::ReedSolomonException(_))
|
||||
));
|
||||
// assert_eq!(Error::Checksum, result.error());
|
||||
// assert!(result.text().is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM4()
|
||||
{
|
||||
const CODE_STR : &str =
|
||||
r"XXXXXXX X X X X X
|
||||
fn MQRCodeM4() {
|
||||
const CODE_STR: &str = r"XXXXXXX X X X X X
|
||||
X X XX X XX
|
||||
X XXX X X X XX
|
||||
X XXX X XX XX XX
|
||||
@@ -130,8 +119,7 @@ X X XX XXXXX
|
||||
X X X X X
|
||||
X XXXXXXX X X X
|
||||
";
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR,
|
||||
"X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
let bitMatrix = BitMatrix::parse_strings(CODE_STR, "X", " ").unwrap();
|
||||
let result = Decode(&bitMatrix).unwrap();
|
||||
assert!(result.isValid());
|
||||
}
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
*/
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use crate::{qrcode::cpp_port::{ bitmatrix_parser::{ReadFormatInformation, ReadCodewords, ReadVersion}}, common::BitMatrix};
|
||||
use crate::{
|
||||
common::BitMatrix,
|
||||
qrcode::cpp_port::bitmatrix_parser::{ReadCodewords, ReadFormatInformation, ReadVersion},
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM3L()
|
||||
{
|
||||
let bitMatrix =
|
||||
BitMatrix::parse_strings(
|
||||
r"XXXXXXX X X X X
|
||||
fn MQRCodeM3L() {
|
||||
let bitMatrix = BitMatrix::parse_strings(
|
||||
r"XXXXXXX X X X X
|
||||
X X X X
|
||||
X XXX X XXXXXXX
|
||||
X XXX X X X XX
|
||||
@@ -26,22 +27,26 @@ XXX XX XXXX XXX
|
||||
X XXXXX XXX X X
|
||||
X X X XXX
|
||||
XXX XX X X XXXX
|
||||
", "X", " ").expect("parse must parse");
|
||||
",
|
||||
"X",
|
||||
" ",
|
||||
)
|
||||
.expect("parse must parse");
|
||||
|
||||
let version = ReadVersion(&bitMatrix).unwrap();
|
||||
assert_eq!(3, version.getVersionNumber());
|
||||
let format = ReadFormatInformation(&bitMatrix, true).expect("could not read format information");
|
||||
let codewords = ReadCodewords(&bitMatrix, version, &format).expect("could not read codewords");
|
||||
assert_eq!(17, codewords.len());
|
||||
assert_eq!(0x0, codewords[10]);
|
||||
assert_eq!(0xd1, codewords[11]);
|
||||
let version = ReadVersion(&bitMatrix).unwrap();
|
||||
assert_eq!(3, version.getVersionNumber());
|
||||
let format =
|
||||
ReadFormatInformation(&bitMatrix, true).expect("could not read format information");
|
||||
let codewords = ReadCodewords(&bitMatrix, version, &format).expect("could not read codewords");
|
||||
assert_eq!(17, codewords.len());
|
||||
assert_eq!(0x0, codewords[10]);
|
||||
assert_eq!(0xd1, codewords[11]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn MQRCodeM3M()
|
||||
{
|
||||
let bitMatrix = BitMatrix::parse_strings(
|
||||
r"XXXXXXX X X X X
|
||||
fn MQRCodeM3M() {
|
||||
let bitMatrix = BitMatrix::parse_strings(
|
||||
r"XXXXXXX X X X X
|
||||
X X XX
|
||||
X XXX X X XX XX
|
||||
X XXX X X X
|
||||
@@ -56,14 +61,18 @@ XX XX XXXXXXX
|
||||
XX X X X
|
||||
X X X
|
||||
X X XXXX XXX
|
||||
"
|
||||
,"X", " ").unwrap();
|
||||
",
|
||||
"X",
|
||||
" ",
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let version = ReadVersion(&bitMatrix).unwrap();
|
||||
assert_eq!(3, version.getVersionNumber());
|
||||
let format = ReadFormatInformation(&bitMatrix, true).expect("could not read format information");
|
||||
let codewords = ReadCodewords(&bitMatrix, version, &format).expect("could not read codewords");
|
||||
assert_eq!(17, codewords.len());
|
||||
assert_eq!(0x0, codewords[8]);
|
||||
assert_eq!(0x89, codewords[9]);
|
||||
let version = ReadVersion(&bitMatrix).unwrap();
|
||||
assert_eq!(3, version.getVersionNumber());
|
||||
let format =
|
||||
ReadFormatInformation(&bitMatrix, true).expect("could not read format information");
|
||||
let codewords = ReadCodewords(&bitMatrix, version, &format).expect("could not read codewords");
|
||||
assert_eq!(17, codewords.len());
|
||||
assert_eq!(0x0, codewords[8]);
|
||||
assert_eq!(0x89, codewords[9]);
|
||||
}
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
/*
|
||||
* Copyright 2017 Huy Cuong Nguyen
|
||||
* Copyright 2008 ZXing authors
|
||||
*/
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#include "BitMatrixIO.h"
|
||||
#include "qrcode/QRWriter.h"
|
||||
#include "qrcode/QRErrorCorrectionLevel.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include <stdexcept>
|
||||
|
||||
using namespace ZXing;
|
||||
using namespace ZXing::QRCode;
|
||||
|
||||
namespace {
|
||||
|
||||
void DoTest(const std::wstring& contents, ErrorCorrectionLevel ecLevel, int resolution, const char* expected) {
|
||||
Writer writer;
|
||||
writer.setErrorCorrectionLevel(ecLevel);
|
||||
auto matrix = writer.encode(contents, resolution, resolution);
|
||||
auto actual = ToString(matrix, 'X', ' ', true);
|
||||
EXPECT_EQ(matrix.width(), resolution);
|
||||
EXPECT_EQ(matrix.height(), resolution);
|
||||
EXPECT_EQ(actual, expected);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TEST(QRWriterTest, OverSize)
|
||||
{
|
||||
// The QR should be multiplied up to fit, with extra padding if necessary
|
||||
int bigEnough = 256;
|
||||
Writer writer;
|
||||
BitMatrix matrix = writer.encode(L"http://www.google.com/", bigEnough, bigEnough);
|
||||
EXPECT_EQ(matrix.width(), bigEnough);
|
||||
EXPECT_EQ(matrix.height(), bigEnough);
|
||||
|
||||
// The QR will not fit in this size, so the matrix should come back bigger
|
||||
int tooSmall = 20;
|
||||
matrix = writer.encode(L"http://www.google.com/", tooSmall, tooSmall);
|
||||
EXPECT_GT(matrix.width(), tooSmall);
|
||||
EXPECT_GT(matrix.height(), tooSmall);
|
||||
|
||||
// We should also be able to handle non-square requests by padding them
|
||||
int strangeWidth = 500;
|
||||
int strangeHeight = 100;
|
||||
matrix = writer.encode(L"http://www.google.com/", strangeWidth, strangeHeight);
|
||||
EXPECT_EQ(matrix.width(), strangeWidth);
|
||||
EXPECT_EQ(matrix.height(), strangeHeight);
|
||||
|
||||
int overflowSize = 0x1000000;
|
||||
EXPECT_THROW(writer.encode(L"http://www.google.com/", overflowSize, overflowSize), std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(QRWriterTest, RegressionTest)
|
||||
{
|
||||
DoTest(L"http://www.google.com/", ErrorCorrectionLevel::Medium, 99,
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
);
|
||||
}
|
||||
@@ -11,4 +11,4 @@ mod QRDataMaskTest;
|
||||
|
||||
mod QRBitMatrixParserTest;
|
||||
|
||||
mod MQRDecoderTest;
|
||||
mod MQRDecoderTest;
|
||||
|
||||
Reference in New Issue
Block a user