mirror of https://github.com/status-im/qzxing.git
Updated the tests to use the correct way of handling the zxing exceptions. Enriched EncoderTests with further tests.
This commit is contained in:
parent
a25e39cba6
commit
59ed259a15
|
@ -35,9 +35,7 @@ void EncodeValidator::execute()
|
||||||
|
|
||||||
EncoderTests t4;
|
EncoderTests t4;
|
||||||
t4.execute();
|
t4.execute();
|
||||||
}
|
} catch(zxing::Exception &e) {
|
||||||
catch(zxing::Exception &e)
|
|
||||||
{
|
|
||||||
qDebug() << e.what();
|
qDebug() << e.what();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,10 @@ private:
|
||||||
protected:
|
protected:
|
||||||
template<class T> void assertEquals(T expected, T actual) {
|
template<class T> void assertEquals(T expected, T actual) {
|
||||||
if(expected != actual) {
|
if(expected != actual) {
|
||||||
QString message = QString("Expected: ") + itemToString(expected) +
|
QString message = QString("Expected: \n") + itemToString(expected) +
|
||||||
QString(", Got: ") + itemToString(actual);
|
QString(", Got: \n") + itemToString(actual);
|
||||||
Q_ASSERT_X(false, "assertEquals", message.toStdString().c_str());
|
//Q_ASSERT_X(false, "assertEquals", message.toStdString().c_str());
|
||||||
throw new zxing::Exception(message.toStdString().c_str());
|
throw zxing::Exception(message.toStdString().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,10 @@ void EncoderTests::execute()
|
||||||
{
|
{
|
||||||
testGetAlphanumericCode();
|
testGetAlphanumericCode();
|
||||||
testChooseMode();
|
testChooseMode();
|
||||||
|
|
||||||
|
testAppendModeInfo();
|
||||||
|
testAppendLengthInfo();
|
||||||
|
testAppendBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EncoderTests::testGetAlphanumericCode()
|
void EncoderTests::testGetAlphanumericCode()
|
||||||
|
@ -69,18 +73,87 @@ void EncoderTests::testChooseMode()
|
||||||
// from data bytes alone. See also comments in qrcode_encoder.h.
|
// from data bytes alone. See also comments in qrcode_encoder.h.
|
||||||
|
|
||||||
// AIUE in Hiragana in Shift_JIS
|
// AIUE in Hiragana in Shift_JIS
|
||||||
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x8, 0xa, 0x8, 0xa, 0x8, 0xa, 0x8, (byte) 0xa6}));
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x8, 0xa, 0x8, 0xa, 0x8, 0xa, 0x8, (byte) 0xa6}));
|
||||||
// assertSame(Mode::BYTE,mode_);
|
// assertSame(Mode::BYTE,mode_);
|
||||||
|
|
||||||
// // Nihon in Kanji in Shift_JIS.
|
// // Nihon in Kanji in Shift_JIS.
|
||||||
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x9, 0xf, 0x9, 0x7b}));
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x9, 0xf, 0x9, 0x7b}));
|
||||||
// assertSame(Mode::BYTE, mode_);
|
// assertSame(Mode::BYTE, mode_);
|
||||||
|
|
||||||
// // Sou-Utsu-Byou in Kanji in Shift_JIS.
|
// // Sou-Utsu-Byou in Kanji in Shift_JIS.
|
||||||
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0xe, 0x4, 0x9, 0x5, 0x9, 0x61}));
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0xe, 0x4, 0x9, 0x5, 0x9, 0x61}));
|
||||||
// assertSame(Mode::BYTE, mode_);
|
// assertSame(Mode::BYTE, mode_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EncoderTests::testAppendModeInfo()
|
||||||
|
{
|
||||||
|
BitArray bits;
|
||||||
|
Encoder::appendModeInfo(Mode::NUMERIC, bits);
|
||||||
|
assertEquals(std::string(" ...X"), bits.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
void EncoderTests::testAppendLengthInfo()
|
||||||
|
{
|
||||||
|
BitArray bits;
|
||||||
|
Encoder::appendLengthInfo(1, // 1 letter (1/1).
|
||||||
|
*Version::getVersionForNumber(1),
|
||||||
|
Mode::NUMERIC,
|
||||||
|
bits);
|
||||||
|
assertEquals(std::string(" ........ .X"), bits.toString()); // 10 bits.
|
||||||
|
bits = BitArray();
|
||||||
|
Encoder::appendLengthInfo(2, // 2 letters (2/1).
|
||||||
|
*Version::getVersionForNumber(10),
|
||||||
|
Mode::ALPHANUMERIC,
|
||||||
|
bits);
|
||||||
|
assertEquals(std::string(" ........ .X."), bits.toString()); // 11 bits.
|
||||||
|
bits = BitArray();
|
||||||
|
Encoder::appendLengthInfo(255, // 255 letter (255/1).
|
||||||
|
*Version::getVersionForNumber(27),
|
||||||
|
Mode::BYTE,
|
||||||
|
bits);
|
||||||
|
assertEquals(std::string(" ........ XXXXXXXX"), bits.toString()); // 16 bits.
|
||||||
|
// bits = BitArray();
|
||||||
|
// Encoder::appendLengthInfo(512, // 512 letters (1024/2).
|
||||||
|
// *Version::getVersionForNumber(40),
|
||||||
|
// Mode::KANJI,
|
||||||
|
// bits);
|
||||||
|
// assertEquals(" ..X..... ....", bits.toString()); // 12 bits.
|
||||||
|
}
|
||||||
|
|
||||||
|
void EncoderTests::testAppendBytes()
|
||||||
|
{
|
||||||
|
// Should use appendNumericBytes.
|
||||||
|
// 1 = 01 = 0001 in 4 bits.
|
||||||
|
BitArray bits;
|
||||||
|
Encoder::appendBytes("1", Mode::NUMERIC, bits, Encoder::DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
assertEquals(std::string(" ...X") , bits.toString());
|
||||||
|
// Should use appendAlphanumericBytes.
|
||||||
|
// A = 10 = 0xa = 001010 in 6 bits
|
||||||
|
bits = BitArray();
|
||||||
|
Encoder::appendBytes("A", Mode::ALPHANUMERIC, bits, Encoder::DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
assertEquals(std::string(" ..X.X.") , bits.toString());
|
||||||
|
// Lower letters such as 'a' cannot be encoded in MODE_ALPHANUMERIC.
|
||||||
|
try {
|
||||||
|
Encoder::appendBytes("a", Mode::ALPHANUMERIC, bits, Encoder::DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
} catch(zxing::Exception &/*e*/) {
|
||||||
|
// good
|
||||||
|
}
|
||||||
|
// Should use append8BitBytes.
|
||||||
|
// 0x61, 0x62, 0x63
|
||||||
|
bits = BitArray();
|
||||||
|
Encoder::appendBytes("abc", Mode::BYTE, bits, Encoder::DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
assertEquals(std::string(" .XX....X .XX...X. .XX...XX"), bits.toString());
|
||||||
|
// Anything can be encoded in QRCode.MODE_8BIT_BYTE.
|
||||||
|
Encoder::appendBytes("\0", Mode::BYTE, bits, Encoder::DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
// Should use appendKanjiBytes.
|
||||||
|
// 0x93, 0x5f
|
||||||
|
// bits = new BitArray();
|
||||||
|
// Encoder.appendBytes(shiftJISString(new byte[] {(byte)0x93,0x5f}), Mode.KANJI, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING);
|
||||||
|
// assertEquals(" .XX.XX.. XXXXX", bits.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,11 @@ public:
|
||||||
private:
|
private:
|
||||||
void testGetAlphanumericCode();
|
void testGetAlphanumericCode();
|
||||||
void testChooseMode();
|
void testChooseMode();
|
||||||
|
//void testEncode();
|
||||||
|
//void testSimpleUTF8ECI();
|
||||||
|
void testAppendModeInfo();
|
||||||
|
void testAppendLengthInfo();
|
||||||
|
void testAppendBytes();
|
||||||
|
|
||||||
static std::string shiftJISString(byte bytes[]);
|
static std::string shiftJISString(byte bytes[]);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue