mirror of https://github.com/status-im/qzxing.git
Started implementation of zxing/qrcode/encoder/EncoderTests
minor refactoring on BitArrayTests.
This commit is contained in:
parent
450afbe54b
commit
48ee696c42
|
@ -59,8 +59,13 @@ public:
|
||||||
int getBits() const { return bits_; }
|
int getBits() const { return bits_; }
|
||||||
|
|
||||||
bool operator==(const Mode& other);
|
bool operator==(const Mode& other);
|
||||||
|
bool operator!=(const Mode& other);
|
||||||
|
|
||||||
std::string getName() const { return name_; }
|
std::string getName() const { return name_; }
|
||||||
|
|
||||||
|
std::string toString() const {
|
||||||
|
return getName();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,5 +114,10 @@ bool Mode::operator==(const Mode& other)
|
||||||
&& characterCountBitsForVersions10To26_ == other.characterCountBitsForVersions10To26_
|
&& characterCountBitsForVersions10To26_ == other.characterCountBitsForVersions10To26_
|
||||||
&& characterCountBitsForVersions27AndHigher_ == other.characterCountBitsForVersions27AndHigher_
|
&& characterCountBitsForVersions27AndHigher_ == other.characterCountBitsForVersions27AndHigher_
|
||||||
&& name_ == other.name_
|
&& name_ == other.name_
|
||||||
&& bits_ == other.bits_ );
|
&& bits_ == other.bits_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Mode::operator!=(const zxing::qrcode::Mode &other)
|
||||||
|
{
|
||||||
|
return !(operator==(other));
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "zxing/qrcode/encoder/MaskUtilTests.h"
|
#include "zxing/qrcode/encoder/MaskUtilTests.h"
|
||||||
#include "zxing/qrcode/encoder/BitArrayTests.h"
|
#include "zxing/qrcode/encoder/BitArrayTests.h"
|
||||||
#include "zxing/qrcode/encoder/QRCodeTests.h"
|
#include "zxing/qrcode/encoder/QRCodeTests.h"
|
||||||
|
#include "zxing/qrcode/encoder/EncoderTests.h"
|
||||||
|
|
||||||
namespace zxing {
|
namespace zxing {
|
||||||
namespace qrcode {
|
namespace qrcode {
|
||||||
|
@ -31,6 +32,9 @@ void EncodeValidator::execute()
|
||||||
|
|
||||||
QRCodeTests t3;
|
QRCodeTests t3;
|
||||||
t3.execute();
|
t3.execute();
|
||||||
|
|
||||||
|
EncoderTests t4;
|
||||||
|
t4.execute();
|
||||||
}
|
}
|
||||||
catch(zxing::Exception &e)
|
catch(zxing::Exception &e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,8 @@ SOURCES += main.cpp \
|
||||||
zxing/qrcode/encoder/MatrixUtilTests.cpp \
|
zxing/qrcode/encoder/MatrixUtilTests.cpp \
|
||||||
zxing/qrcode/encoder/MaskUtilTests.cpp \
|
zxing/qrcode/encoder/MaskUtilTests.cpp \
|
||||||
zxing/qrcode/encoder/BitArrayTests.cpp \
|
zxing/qrcode/encoder/BitArrayTests.cpp \
|
||||||
zxing/qrcode/encoder/QRCodeTests.cpp
|
zxing/qrcode/encoder/QRCodeTests.cpp \
|
||||||
|
zxing/qrcode/encoder/EncoderTests.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
DecodeValidator.h \
|
DecodeValidator.h \
|
||||||
|
@ -27,6 +28,7 @@ HEADERS += \
|
||||||
TestCase.h \
|
TestCase.h \
|
||||||
zxing/qrcode/encoder/MaskUtilTests.h \
|
zxing/qrcode/encoder/MaskUtilTests.h \
|
||||||
zxing/qrcode/encoder/BitArrayTests.h \
|
zxing/qrcode/encoder/BitArrayTests.h \
|
||||||
zxing/qrcode/encoder/QRCodeTests.h
|
zxing/qrcode/encoder/QRCodeTests.h \
|
||||||
|
zxing/qrcode/encoder/EncoderTests.h
|
||||||
|
|
||||||
include(../../../src/QZXing.pri)
|
include(../../../src/QZXing.pri)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QZXing.h>
|
#include <QZXing.h>
|
||||||
#include <zxing/Exception.h>
|
#include <zxing/Exception.h>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
#include <zxing/qrcode/decoder/Mode.h>
|
||||||
|
|
||||||
namespace zxing{
|
namespace zxing{
|
||||||
|
|
||||||
|
@ -26,6 +27,10 @@ private:
|
||||||
return QString::number(item);
|
return QString::number(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString itemToString(qrcode::Mode& item) {
|
||||||
|
return QString::fromStdString(item.toString());
|
||||||
|
}
|
||||||
|
|
||||||
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) {
|
||||||
|
@ -36,6 +41,10 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void assertSame(qrcode::Mode &expected, qrcode::Mode &actual){
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
void assertSame(void *expected, void *actual) {
|
void assertSame(void *expected, void *actual) {
|
||||||
assertEquals((int)expected, (int)actual);
|
assertEquals((int)expected, (int)actual);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,11 @@ namespace tests{
|
||||||
|
|
||||||
class BitArrayTests : public TestCase
|
class BitArrayTests : public TestCase
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
BitArrayTests();
|
||||||
|
|
||||||
|
void execute();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static long unsigned int getUnsignedInt(BitArray &v, int index);
|
static long unsigned int getUnsignedInt(BitArray &v, int index);
|
||||||
|
|
||||||
|
@ -21,10 +26,6 @@ private:
|
||||||
void testXOR2();
|
void testXOR2();
|
||||||
void testAt();
|
void testAt();
|
||||||
void testToString();
|
void testToString();
|
||||||
public:
|
|
||||||
BitArrayTests();
|
|
||||||
|
|
||||||
void execute();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
#include "EncoderTests.h"
|
||||||
|
#include <zxing/qrcode/encoder/Encoder.h>
|
||||||
|
|
||||||
|
namespace zxing{
|
||||||
|
namespace qrcode{
|
||||||
|
namespace tests{
|
||||||
|
|
||||||
|
EncoderTests::EncoderTests()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void EncoderTests::execute()
|
||||||
|
{
|
||||||
|
testGetAlphanumericCode();
|
||||||
|
testChooseMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EncoderTests::testGetAlphanumericCode()
|
||||||
|
{
|
||||||
|
// The first ten code points are numbers.
|
||||||
|
for (int i = 0; i < 10; ++i) {
|
||||||
|
assertEquals(i, Encoder::getAlphanumericCode('0' + i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// The next 26 code points are capital alphabet letters.
|
||||||
|
for (int i = 10; i < 36; ++i) {
|
||||||
|
assertEquals(i, Encoder::getAlphanumericCode('A' + i - 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Others are symbol letters
|
||||||
|
assertEquals(36, Encoder::getAlphanumericCode(' '));
|
||||||
|
assertEquals(37, Encoder::getAlphanumericCode('$'));
|
||||||
|
assertEquals(38, Encoder::getAlphanumericCode('%'));
|
||||||
|
assertEquals(39, Encoder::getAlphanumericCode('*'));
|
||||||
|
assertEquals(40, Encoder::getAlphanumericCode('+'));
|
||||||
|
assertEquals(41, Encoder::getAlphanumericCode('-'));
|
||||||
|
assertEquals(42, Encoder::getAlphanumericCode('.'));
|
||||||
|
assertEquals(43, Encoder::getAlphanumericCode('/'));
|
||||||
|
assertEquals(44, Encoder::getAlphanumericCode(':'));
|
||||||
|
|
||||||
|
// Should return -1 for other letters;
|
||||||
|
assertEquals(-1, Encoder::getAlphanumericCode('a'));
|
||||||
|
assertEquals(-1, Encoder::getAlphanumericCode('#'));
|
||||||
|
assertEquals(-1, Encoder::getAlphanumericCode('\0'));
|
||||||
|
}
|
||||||
|
|
||||||
|
void EncoderTests::testChooseMode()
|
||||||
|
{
|
||||||
|
// Numeric mode.
|
||||||
|
Mode mode_(Encoder::chooseMode("0"));
|
||||||
|
assertSame(Mode::NUMERIC, mode_);
|
||||||
|
mode_ = Encoder::chooseMode("0123456789");
|
||||||
|
assertSame(Mode::NUMERIC, mode_);
|
||||||
|
// Alphanumeric mode.
|
||||||
|
mode_ = Encoder::chooseMode("A");
|
||||||
|
assertSame(Mode::ALPHANUMERIC, mode_);
|
||||||
|
mode_ = Encoder::chooseMode("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:");
|
||||||
|
assertSame(Mode::ALPHANUMERIC, mode_);
|
||||||
|
// 8-bit byte mode.
|
||||||
|
mode_ = Encoder::chooseMode("a");
|
||||||
|
assertSame(Mode::BYTE, mode_);
|
||||||
|
mode_ = Encoder::chooseMode("#");
|
||||||
|
assertSame(Mode::BYTE, mode_);
|
||||||
|
mode_ = Encoder::chooseMode("");
|
||||||
|
assertSame(Mode::BYTE, mode_);
|
||||||
|
// Kanji mode. We used to use MODE_KANJI for these, but we stopped
|
||||||
|
// doing that as we cannot distinguish Shift_JIS from other encodings
|
||||||
|
// from data bytes alone. See also comments in qrcode_encoder.h.
|
||||||
|
|
||||||
|
// AIUE in Hiragana in Shift_JIS
|
||||||
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x8, 0xa, 0x8, 0xa, 0x8, 0xa, 0x8, (byte) 0xa6}));
|
||||||
|
// assertSame(Mode::BYTE,mode_);
|
||||||
|
|
||||||
|
// // Nihon in Kanji in Shift_JIS.
|
||||||
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0x9, 0xf, 0x9, 0x7b}));
|
||||||
|
// assertSame(Mode::BYTE, mode_);
|
||||||
|
|
||||||
|
// // Sou-Utsu-Byou in Kanji in Shift_JIS.
|
||||||
|
// mode_ = Encoder::chooseMode(shiftJISString(new byte[]{0xe, 0x4, 0x9, 0x5, 0x9, 0x61}));
|
||||||
|
// assertSame(Mode::BYTE, mode_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef ENCODERTESTS_H
|
||||||
|
#define ENCODERTESTS_H
|
||||||
|
|
||||||
|
#include "TestCase.h"
|
||||||
|
|
||||||
|
namespace zxing{
|
||||||
|
namespace qrcode{
|
||||||
|
namespace tests{
|
||||||
|
|
||||||
|
class EncoderTests : public TestCase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EncoderTests();
|
||||||
|
|
||||||
|
void execute();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void testGetAlphanumericCode();
|
||||||
|
void testChooseMode();
|
||||||
|
|
||||||
|
static std::string shiftJISString(byte bytes[]);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // ENCODERTESTS_H
|
Loading…
Reference in New Issue