Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
/***************************************************************************
|
2022-04-10 22:12:18 +12:00
|
|
|
* Copyright (C) 2021-2022 by Robin Stuart <rstuart114@gmail.com> *
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
* *
|
|
|
|
* This program is free software: you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* This program is distributed in the hope that it will be useful, *
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
|
|
* GNU General Public License for more details. *
|
|
|
|
* You should have received a copy of the GNU General Public License *
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
|
|
***************************************************************************/
|
RMQR: update to ISO/IEC 23941:2022 - R13x77 numeric cclens change 8 -> 7
QRCODE: use stricter interpretation of ZINT_FULL_MULTIBYTE, excluding
certain trailing bytes
libzint: fix some confusing error messages introduced by segment stuff
general: new escape chars \U, \d and \o
backend_qt: fudge rendering of border rectangles due to scaling/translation
rounding errors TODO: better fudge
GUI: foreground/background colours -> text boxes and icon buttons, add swap
button, independently movable picker (NULL parent), preview colour changes,
preview Data Window changes, add clear data (del) buttons, add zap button
and Factory Reset menu option, various other fixes
libzint: remove STATIC_UNLESS_ZINT_TEST, use wrappers
CMake: add find package QtSvg, remove QtXml
manual: split symbology and general specs and sort, move DAFT to 4-state,
UPC/EAN -> EAN/UPC, DataBar -> GS1 DataBar always, expand MAILMARK info,
various other fiddlings
man page: options or -> |, expand MSI Plessey check digit options
README.linux: add packages info
license: add SPDX-License-Identifier to touched files
2022-06-10 08:52:02 +12:00
|
|
|
/* SPDX-License-Identifier: GPL-3.0-or-later */
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
|
|
|
|
#include <QtTest/QtTest>
|
|
|
|
#include "../qzint.h" /* Don't use <qzint.h> in case it's been changed */
|
|
|
|
|
|
|
|
#ifndef ARRAY_SIZE
|
|
|
|
#define ARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0])))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
class TestQZint : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
TestQZint() : m_skipIfFontUsed(false)
|
|
|
|
{
|
|
|
|
// Qt5 will trigger "detected memory leaks" if font used (libfontconfig) so skip if ASAN enabled
|
|
|
|
#if QT_VERSION < 0x60000
|
2021-11-11 16:52:24 +13:00
|
|
|
# if !defined(__has_feature)
|
|
|
|
# define __has_feature(x) 0
|
|
|
|
# endif
|
|
|
|
# if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
m_skipIfFontUsed = true;
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual ~TestQZint() {} // Seems to be needed to generate vtable
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool m_skipIfFontUsed; // Hack to get around Qt5 ASAN leaks
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
void setGetTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
int symbology = BARCODE_CODE11;
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
QCOMPARE(bc.symbol(), symbology);
|
|
|
|
|
|
|
|
int inputMode = UNICODE_MODE;
|
|
|
|
bc.setInputMode(inputMode);
|
|
|
|
QCOMPARE(bc.inputMode(), inputMode);
|
|
|
|
|
|
|
|
QString text("text");
|
|
|
|
bc.setText(text);
|
|
|
|
QCOMPARE(bc.text(), text);
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
QCOMPARE(bc.segs().empty(), true);
|
|
|
|
|
|
|
|
std::vector<QString> segTexts;
|
|
|
|
std::vector<int> segECIs;
|
|
|
|
segTexts.push_back(QString("Τεχτ"));
|
|
|
|
segECIs.push_back(9);
|
|
|
|
segTexts.push_back(QString("貫やぐ禁"));
|
|
|
|
segECIs.push_back(20);
|
|
|
|
segTexts.push_back(QString("กขฯ"));
|
|
|
|
segECIs.push_back(13);
|
|
|
|
|
|
|
|
std::vector<Zint::QZintSeg> segs;
|
|
|
|
for (int i = 0; i < (int) segTexts.size(); i++) {
|
|
|
|
segs.push_back(Zint::QZintSeg(segTexts[i]));
|
|
|
|
segs.back().m_eci = segECIs[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
bc.setSegs(segs);
|
|
|
|
QCOMPARE(bc.segs().size(), segs.size());
|
|
|
|
for (int i = 0; i < (int) segs.size(); i++) {
|
|
|
|
QCOMPARE(bc.segs()[i].m_text, segTexts[i]);
|
|
|
|
QCOMPARE(bc.segs()[i].m_eci, segECIs[i]);
|
|
|
|
}
|
|
|
|
QCOMPARE(bc.text().isEmpty(), true);
|
|
|
|
QCOMPARE(bc.eci(), segECIs[0]);
|
|
|
|
|
|
|
|
bc.setText(text);
|
|
|
|
QCOMPARE(bc.text(), text);
|
|
|
|
QCOMPARE(bc.segs().empty(), true);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
|
|
|
|
QString primaryMessage("primary message");
|
|
|
|
bc.setPrimaryMessage(primaryMessage);
|
|
|
|
QCOMPARE(bc.primaryMessage(), primaryMessage);
|
|
|
|
|
|
|
|
float height = 12.345f;
|
|
|
|
bc.setHeight(height);
|
|
|
|
QCOMPARE(bc.height(), height);
|
|
|
|
|
|
|
|
int option1 = 1;
|
|
|
|
bc.setOption1(option1);
|
|
|
|
QCOMPARE(bc.option1(), option1);
|
|
|
|
|
|
|
|
int option2 = 2;
|
|
|
|
bc.setOption2(option2);
|
|
|
|
QCOMPARE(bc.option2(), option2);
|
|
|
|
|
|
|
|
int option3 = 3;
|
|
|
|
bc.setOption3(option3);
|
|
|
|
QCOMPARE(bc.option3(), option3);
|
|
|
|
|
|
|
|
float scale = 0.678f;
|
|
|
|
bc.setScale(scale);
|
|
|
|
QCOMPARE(bc.scale(), scale);
|
|
|
|
|
|
|
|
bool dotty = true;
|
|
|
|
bc.setDotty(dotty);
|
|
|
|
QCOMPARE(bc.dotty(), dotty);
|
|
|
|
|
|
|
|
float dotSize = 1.234f;
|
|
|
|
bc.setDotSize(dotSize);
|
|
|
|
QCOMPARE(bc.dotSize(), dotSize);
|
|
|
|
|
|
|
|
float guardDescent = 0.678f;
|
|
|
|
bc.setGuardDescent(guardDescent);
|
|
|
|
QCOMPARE(bc.guardDescent(), guardDescent);
|
|
|
|
|
|
|
|
struct zint_structapp structapp = { 2, 3, "ID" };
|
|
|
|
bc.setStructApp(structapp.count, structapp.index, structapp.id);
|
|
|
|
QCOMPARE(bc.structAppCount(), structapp.count);
|
|
|
|
QCOMPARE(bc.structAppIndex(), structapp.index);
|
|
|
|
QCOMPARE(bc.structAppID(), QString(structapp.id));
|
|
|
|
|
|
|
|
QColor fgColor(0x12, 0x34, 0x45, 0x67);
|
|
|
|
bc.setFgColor(fgColor);
|
|
|
|
QCOMPARE(bc.fgColor(), fgColor);
|
|
|
|
|
|
|
|
QColor bgColor(0x89, 0xAB, 0xCD, 0xEF);
|
|
|
|
bc.setBgColor(bgColor);
|
|
|
|
QCOMPARE(bc.bgColor(), bgColor);
|
|
|
|
|
|
|
|
bool cmyk = true;
|
|
|
|
bc.setCMYK(cmyk);
|
|
|
|
QCOMPARE(bc.cmyk(), cmyk);
|
|
|
|
|
|
|
|
int borderTypes[] = { 0, BARCODE_BIND, BARCODE_BOX };
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(borderTypes); i++) {
|
|
|
|
bc.setBorderType(i);
|
|
|
|
QCOMPARE(bc.borderType(), borderTypes[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
int borderWidth = 4;
|
|
|
|
bc.setBorderWidth(borderWidth);
|
|
|
|
QCOMPARE(bc.borderWidth(), borderWidth);
|
|
|
|
|
|
|
|
int whitespace = 5;
|
|
|
|
bc.setWhitespace(whitespace);
|
|
|
|
QCOMPARE(bc.whitespace(), whitespace);
|
|
|
|
|
|
|
|
int vWhitespace = 6;
|
|
|
|
bc.setVWhitespace(vWhitespace);
|
|
|
|
QCOMPARE(bc.vWhitespace(), vWhitespace);
|
|
|
|
|
|
|
|
int fontSettings[] = { 0, BOLD_TEXT, SMALL_TEXT, SMALL_TEXT | BOLD_TEXT };
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(fontSettings); i++) {
|
|
|
|
bc.setFontSetting(i);
|
|
|
|
QCOMPARE(bc.fontSetting(), fontSettings[i]);
|
|
|
|
|
|
|
|
bc.setFontSettingValue(fontSettings[i]);
|
|
|
|
QCOMPARE(bc.fontSetting(), fontSettings[i]);
|
|
|
|
}
|
|
|
|
bc.setFontSetting(ARRAY_SIZE(fontSettings));
|
|
|
|
QCOMPARE(bc.fontSetting(), 0);
|
|
|
|
bc.setFontSetting(-1);
|
|
|
|
QCOMPARE(bc.fontSetting(), 0);
|
|
|
|
|
|
|
|
bc.setFontSettingValue(-1);
|
|
|
|
QCOMPARE(bc.fontSetting(), 0);
|
|
|
|
bc.setFontSettingValue(CMYK_COLOUR);
|
|
|
|
QCOMPARE(bc.fontSetting(), 0);
|
|
|
|
|
|
|
|
bool showText = false;
|
|
|
|
bc.setShowText(showText);
|
|
|
|
QCOMPARE(bc.showText(), showText);
|
|
|
|
|
|
|
|
bool gsSep = true;
|
|
|
|
bc.setGSSep(gsSep);
|
|
|
|
QCOMPARE(bc.gsSep(), gsSep);
|
|
|
|
|
|
|
|
bool quietZones = true;
|
|
|
|
bc.setQuietZones(quietZones);
|
|
|
|
QCOMPARE(bc.quietZones(), quietZones);
|
|
|
|
|
|
|
|
bool noQuietZones = true;
|
|
|
|
bc.setNoQuietZones(noQuietZones);
|
|
|
|
QCOMPARE(bc.noQuietZones(), noQuietZones);
|
|
|
|
|
|
|
|
bool compliantHeight = true;
|
|
|
|
bc.setCompliantHeight(compliantHeight);
|
|
|
|
QCOMPARE(bc.compliantHeight(), compliantHeight);
|
|
|
|
|
|
|
|
int rotateAngles[] = { 0, 90, 180, 270 };
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(rotateAngles); i++) {
|
|
|
|
bc.setRotateAngle(i);
|
|
|
|
QCOMPARE(bc.rotateAngle(), rotateAngles[i]);
|
|
|
|
|
|
|
|
bc.setRotateAngleValue(rotateAngles[i]);
|
|
|
|
QCOMPARE(bc.rotateAngle(), rotateAngles[i]);
|
|
|
|
}
|
|
|
|
bc.setRotateAngle(ARRAY_SIZE(rotateAngles));
|
|
|
|
QCOMPARE(bc.rotateAngle(), 0);
|
|
|
|
bc.setRotateAngle(-1);
|
|
|
|
QCOMPARE(bc.rotateAngle(), 0);
|
|
|
|
|
|
|
|
bc.setRotateAngleValue(-1);
|
|
|
|
QCOMPARE(bc.rotateAngle(), 0);
|
|
|
|
bc.setRotateAngleValue(45);
|
|
|
|
QCOMPARE(bc.rotateAngle(), 0);
|
|
|
|
|
|
|
|
int ecis[] = {
|
|
|
|
0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
|
|
|
12, 13, 15, 16, 17, 18, 20, 21, 22, 23,
|
2022-04-10 22:12:18 +12:00
|
|
|
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
|
|
|
34, 35, 170, 899,
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
};
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(ecis); i++) {
|
|
|
|
bc.setECI(i);
|
|
|
|
QCOMPARE(bc.eci(), ecis[i]);
|
|
|
|
|
|
|
|
bc.setECIValue(ecis[i]);
|
|
|
|
QCOMPARE(bc.eci(), ecis[i]);
|
|
|
|
}
|
|
|
|
bc.setECI(ARRAY_SIZE(ecis));
|
|
|
|
QCOMPARE(bc.eci(), 0);
|
|
|
|
bc.setECI(-1);
|
|
|
|
QCOMPARE(bc.eci(), 0);
|
|
|
|
// See also setGetECIValueTest()
|
|
|
|
|
|
|
|
bool gs1Parens = true;
|
|
|
|
bc.setGS1Parens(gs1Parens);
|
|
|
|
QCOMPARE(bc.gs1Parens(), gs1Parens);
|
|
|
|
|
|
|
|
bool gs1NoCheck = true;
|
|
|
|
bc.setGS1NoCheck(gs1NoCheck);
|
|
|
|
QCOMPARE(bc.gs1NoCheck(), gs1NoCheck);
|
|
|
|
|
|
|
|
bool readerInit = true;
|
|
|
|
bc.setReaderInit(readerInit);
|
|
|
|
QCOMPARE(bc.readerInit(), readerInit);
|
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
int warnLevel = WARN_FAIL_ALL;
|
|
|
|
bc.setWarnLevel(warnLevel);
|
|
|
|
QCOMPARE(bc.warnLevel(), warnLevel);
|
|
|
|
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
bool debug = true;
|
|
|
|
bc.setDebug(debug);
|
|
|
|
QCOMPARE(bc.debug(), debug);
|
2021-11-21 00:32:30 +13:00
|
|
|
|
|
|
|
QCOMPARE(bc.encodedWidth(), 0); // Read-only
|
|
|
|
QCOMPARE(bc.encodedRows(), 0); // Read-only
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
void setGetECIValueTest_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<int>("value");
|
|
|
|
QTest::addColumn<int>("eci");
|
|
|
|
|
|
|
|
QTest::newRow("-1") << -1 << 0;
|
|
|
|
QTest::newRow("0") << 0 << 0;
|
|
|
|
QTest::newRow("1") << 1 << 0;
|
|
|
|
QTest::newRow("2") << 2 << 0;
|
|
|
|
QTest::newRow("14") << 14 << 0;
|
|
|
|
QTest::newRow("19") << 19 << 0;
|
2022-04-10 22:12:18 +12:00
|
|
|
QTest::newRow("31") << 31 << 31;
|
|
|
|
QTest::newRow("36") << 36 << 0;
|
|
|
|
QTest::newRow("169") << 169 << 0;
|
|
|
|
QTest::newRow("171") << 171 << 0;
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
QTest::newRow("898") << 898 << 0;
|
|
|
|
QTest::newRow("900") << 900 << 0;
|
|
|
|
QTest::newRow("1000") << 1000 << 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setGetECIValueTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
QFETCH(int, value);
|
|
|
|
QFETCH(int, eci);
|
|
|
|
|
|
|
|
bc.setECIValue(value);
|
|
|
|
QCOMPARE(bc.eci(), eci);
|
|
|
|
}
|
|
|
|
|
|
|
|
void legacyTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
int width = 12;
|
|
|
|
bc.setWidth(width);
|
|
|
|
QCOMPARE(bc.width(), width);
|
|
|
|
QCOMPARE(bc.option1(), width);
|
|
|
|
|
|
|
|
int securityLevel = 2;
|
|
|
|
bc.setSecurityLevel(securityLevel);
|
|
|
|
QCOMPARE(bc.securityLevel(), securityLevel);
|
|
|
|
QCOMPARE(bc.option2(), securityLevel);
|
|
|
|
|
|
|
|
int pdf417CodeWords = 123;
|
|
|
|
bc.setPdf417CodeWords(pdf417CodeWords);
|
|
|
|
QCOMPARE(bc.pdf417CodeWords(), 0); // No-op
|
|
|
|
|
|
|
|
bool hideText = true;
|
|
|
|
bc.setHideText(hideText);
|
|
|
|
QCOMPARE(bc.showText(), !hideText);
|
|
|
|
|
|
|
|
// No get for target size
|
|
|
|
}
|
|
|
|
|
|
|
|
void capTest_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<int>("symbology");
|
|
|
|
QTest::addColumn<int>("cap_flag");
|
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
QTest::newRow("BARCODE_CODE11") << BARCODE_CODE11
|
|
|
|
<< (ZINT_CAP_HRT | ZINT_CAP_STACKABLE);
|
|
|
|
QTest::newRow("BARCODE_CODE128") << BARCODE_CODE128
|
|
|
|
<< (ZINT_CAP_HRT | ZINT_CAP_STACKABLE | ZINT_CAP_READER_INIT);
|
|
|
|
QTest::newRow("BARCODE_EANX") << BARCODE_EANX
|
|
|
|
<< (ZINT_CAP_HRT | ZINT_CAP_STACKABLE | ZINT_CAP_EXTENDABLE | ZINT_CAP_QUIET_ZONES
|
|
|
|
| ZINT_CAP_COMPLIANT_HEIGHT);
|
|
|
|
QTest::newRow("BARCODE_EANX_CC") << BARCODE_EANX_CC
|
|
|
|
<< (ZINT_CAP_HRT | ZINT_CAP_EXTENDABLE | ZINT_CAP_COMPOSITE | ZINT_CAP_GS1 | ZINT_CAP_QUIET_ZONES
|
|
|
|
| ZINT_CAP_COMPLIANT_HEIGHT);
|
|
|
|
QTest::newRow("BARCODE_QRCODE") << BARCODE_QRCODE
|
|
|
|
<< (ZINT_CAP_ECI | ZINT_CAP_GS1 | ZINT_CAP_DOTTY | ZINT_CAP_FIXED_RATIO | ZINT_CAP_FULL_MULTIBYTE
|
|
|
|
| ZINT_CAP_MASK | ZINT_CAP_STRUCTAPP);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
void capTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
QFETCH(int, symbology);
|
|
|
|
QFETCH(int, cap_flag);
|
|
|
|
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
QCOMPARE(bc.hasHRT(), (cap_flag & ZINT_CAP_HRT) != 0);
|
2021-11-24 08:12:48 +13:00
|
|
|
QCOMPARE(bc.isStackable(), (cap_flag & ZINT_CAP_STACKABLE) != 0);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
QCOMPARE(bc.isExtendable(), (cap_flag & ZINT_CAP_EXTENDABLE) != 0);
|
2021-11-24 08:12:48 +13:00
|
|
|
QCOMPARE(bc.isComposite(), (cap_flag & ZINT_CAP_COMPOSITE) != 0);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
QCOMPARE(bc.supportsECI(), (cap_flag & ZINT_CAP_ECI) != 0);
|
|
|
|
QCOMPARE(bc.supportsGS1(), (cap_flag & ZINT_CAP_GS1) != 0);
|
2021-11-24 08:12:48 +13:00
|
|
|
QCOMPARE(bc.isDotty(), (cap_flag & ZINT_CAP_DOTTY) != 0);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
QCOMPARE(bc.hasDefaultQuietZones(), (cap_flag & ZINT_CAP_QUIET_ZONES) != 0);
|
|
|
|
QCOMPARE(bc.isFixedRatio(), (cap_flag & ZINT_CAP_FIXED_RATIO) != 0);
|
|
|
|
QCOMPARE(bc.supportsReaderInit(), (cap_flag & ZINT_CAP_READER_INIT) != 0);
|
2021-11-24 08:12:48 +13:00
|
|
|
QCOMPARE(bc.supportsFullMultibyte(), (cap_flag & ZINT_CAP_FULL_MULTIBYTE) != 0);
|
|
|
|
QCOMPARE(bc.hasMask(), (cap_flag & ZINT_CAP_MASK) != 0);
|
|
|
|
QCOMPARE(bc.supportsStructApp(), (cap_flag & ZINT_CAP_STRUCTAPP) != 0);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
QCOMPARE(bc.hasCompliantHeight(), (cap_flag & ZINT_CAP_COMPLIANT_HEIGHT) != 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void renderTest_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<int>("symbology");
|
|
|
|
QTest::addColumn<QString>("text");
|
|
|
|
QTest::addColumn<int>("getError");
|
|
|
|
QTest::addColumn<QString>("error_message");
|
2021-11-21 00:32:30 +13:00
|
|
|
QTest::addColumn<int>("encodedWidth");
|
|
|
|
QTest::addColumn<int>("encodedRows");
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
|
2021-11-21 00:32:30 +13:00
|
|
|
QTest::newRow("BARCODE_QRCODE") << BARCODE_QRCODE << "1234" << 0 << "" << 21 << 21;
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
if (!m_skipIfFontUsed) {
|
RMQR: update to ISO/IEC 23941:2022 - R13x77 numeric cclens change 8 -> 7
QRCODE: use stricter interpretation of ZINT_FULL_MULTIBYTE, excluding
certain trailing bytes
libzint: fix some confusing error messages introduced by segment stuff
general: new escape chars \U, \d and \o
backend_qt: fudge rendering of border rectangles due to scaling/translation
rounding errors TODO: better fudge
GUI: foreground/background colours -> text boxes and icon buttons, add swap
button, independently movable picker (NULL parent), preview colour changes,
preview Data Window changes, add clear data (del) buttons, add zap button
and Factory Reset menu option, various other fixes
libzint: remove STATIC_UNLESS_ZINT_TEST, use wrappers
CMake: add find package QtSvg, remove QtXml
manual: split symbology and general specs and sort, move DAFT to 4-state,
UPC/EAN -> EAN/UPC, DataBar -> GS1 DataBar always, expand MAILMARK info,
various other fiddlings
man page: options or -> |, expand MSI Plessey check digit options
README.linux: add packages info
license: add SPDX-License-Identifier to touched files
2022-06-10 08:52:02 +12:00
|
|
|
QTest::newRow("BARCODE_QRCODE no text") << BARCODE_QRCODE << "" << ZINT_ERROR_INVALID_DATA << "Error 778: No input data (segment 0 empty)" << 0 << 0;
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void renderTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
bool bRet;
|
|
|
|
QPainter painter;
|
|
|
|
constexpr int width = 100, height = 100;
|
|
|
|
QPixmap paintDevice(width, height);
|
|
|
|
QRectF paintRect(0, 0, width, height);
|
|
|
|
Zint::QZint::AspectRatioMode mode;
|
|
|
|
QSignalSpy spyEncoded(&bc, SIGNAL(encoded()));
|
|
|
|
QSignalSpy spyErrored(&bc, SIGNAL(errored()));
|
|
|
|
|
|
|
|
mode = Zint::QZint::AspectRatioMode::KeepAspectRatio; // Legacy - ignored
|
|
|
|
|
|
|
|
QFETCH(int, symbology);
|
|
|
|
QFETCH(QString, text);
|
|
|
|
QFETCH(int, getError);
|
|
|
|
QFETCH(QString, error_message);
|
2021-11-21 00:32:30 +13:00
|
|
|
QFETCH(int, encodedWidth);
|
|
|
|
QFETCH(int, encodedRows);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
bc.setText(text);
|
|
|
|
|
|
|
|
bRet = painter.begin(&paintDevice);
|
|
|
|
QCOMPARE(bRet, true);
|
|
|
|
|
|
|
|
bc.render(painter, paintRect, mode);
|
|
|
|
|
|
|
|
bRet = painter.end();
|
|
|
|
QCOMPARE(bRet, true);
|
|
|
|
|
|
|
|
QCOMPARE(bc.getError(), getError);
|
|
|
|
QCOMPARE(bc.error_message(), error_message);
|
|
|
|
QCOMPARE(bc.lastError(), error_message);
|
|
|
|
QCOMPARE(bc.hasErrors(), getError != 0);
|
2021-11-21 00:32:30 +13:00
|
|
|
QCOMPARE(bc.encodedWidth(), encodedWidth);
|
|
|
|
QCOMPARE(bc.encodedRows(), encodedRows);
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
|
|
|
|
if (getError) {
|
|
|
|
QCOMPARE(spyEncoded.count(), 0);
|
|
|
|
QCOMPARE(spyErrored.count(), 1);
|
|
|
|
} else {
|
|
|
|
QCOMPARE(spyEncoded.count(), 1);
|
|
|
|
QCOMPARE(spyErrored.count(), 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void saveToFileTest_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<int>("symbology");
|
|
|
|
QTest::addColumn<QString>("text");
|
|
|
|
QTest::addColumn<QString>("fileName");
|
|
|
|
QTest::addColumn<bool>("expected_bRet");
|
|
|
|
|
|
|
|
QTest::newRow("BARCODE_DATAMATRIX gif") << BARCODE_DATAMATRIX << "1234" << "test_save_to_file.gif" << true;
|
|
|
|
QTest::newRow("BARCODE_DATAMATRIX unknown format") << BARCODE_DATAMATRIX << "1234" << "test_save_to_file.ext" << false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void saveToFileTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
bool bRet;
|
|
|
|
int ret;
|
|
|
|
|
|
|
|
QFETCH(int, symbology);
|
|
|
|
QFETCH(QString, text);
|
|
|
|
QFETCH(QString, fileName);
|
|
|
|
QFETCH(bool, expected_bRet);
|
|
|
|
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
bc.setText(text);
|
|
|
|
|
|
|
|
bRet = bc.save_to_file(fileName);
|
|
|
|
QCOMPARE(bRet, expected_bRet);
|
|
|
|
|
|
|
|
if (bRet) {
|
|
|
|
ret = remove(fileName.toLatin1());
|
|
|
|
QCOMPARE(ret, 0);
|
|
|
|
}
|
|
|
|
}
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
void getAsCLITest_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<bool>("autoHeight");
|
|
|
|
QTest::addColumn<float>("heightPerRow");
|
|
|
|
QTest::addColumn<QString>("outfile");
|
|
|
|
|
|
|
|
QTest::addColumn<int>("symbology");
|
|
|
|
QTest::addColumn<int>("inputMode");
|
|
|
|
QTest::addColumn<QString>("text");
|
|
|
|
QTest::addColumn<QString>("primary");
|
|
|
|
QTest::addColumn<float>("height");
|
|
|
|
QTest::addColumn<int>("option1");
|
|
|
|
QTest::addColumn<int>("option2");
|
|
|
|
QTest::addColumn<int>("option3");
|
|
|
|
QTest::addColumn<float>("scale");
|
|
|
|
QTest::addColumn<bool>("dotty");
|
|
|
|
QTest::addColumn<float>("dotSize");
|
|
|
|
QTest::addColumn<float>("guardDescent");
|
|
|
|
QTest::addColumn<int>("structAppCount");
|
|
|
|
QTest::addColumn<int>("structAppIndex");
|
|
|
|
QTest::addColumn<QString>("structAppID");
|
|
|
|
QTest::addColumn<QColor>("fgColor");
|
|
|
|
QTest::addColumn<QColor>("bgColor");
|
|
|
|
QTest::addColumn<bool>("cmyk");
|
|
|
|
QTest::addColumn<int>("borderTypeIndex");
|
|
|
|
QTest::addColumn<int>("borderWidth");
|
|
|
|
QTest::addColumn<int>("whitespace");
|
|
|
|
QTest::addColumn<int>("vWhitespace");
|
|
|
|
QTest::addColumn<int>("fontSetting");
|
|
|
|
QTest::addColumn<bool>("showText");
|
|
|
|
QTest::addColumn<bool>("gsSep");
|
|
|
|
QTest::addColumn<bool>("quietZones");
|
|
|
|
QTest::addColumn<bool>("noQuietZones");
|
|
|
|
QTest::addColumn<bool>("compliantHeight");
|
|
|
|
QTest::addColumn<int>("rotateAngle");
|
|
|
|
QTest::addColumn<int>("eci");
|
|
|
|
QTest::addColumn<bool>("gs1Parens");
|
|
|
|
QTest::addColumn<bool>("gs1NoCheck");
|
|
|
|
QTest::addColumn<bool>("readerInit");
|
|
|
|
QTest::addColumn<int>("warnLevel");
|
|
|
|
QTest::addColumn<bool>("debug");
|
|
|
|
|
|
|
|
QTest::addColumn<QString>("expected_cmd");
|
|
|
|
QTest::addColumn<QString>("expected_win");
|
|
|
|
QTest::addColumn<QString>("expected_longOptOnly");
|
|
|
|
QTest::addColumn<QString>("expected_barcodeNames");
|
2022-05-13 07:35:06 +12:00
|
|
|
QTest::addColumn<QString>("expected_noexe");
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_AUSPOST") << true << 0.0f << ""
|
|
|
|
<< BARCODE_AUSPOST << DATA_MODE // symbology-inputMode
|
|
|
|
<< "12345678" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 63 --binary --compliantheight -d '12345678'"
|
|
|
|
<< "zint.exe -b 63 --binary --compliantheight -d \"12345678\""
|
|
|
|
<< "zint --barcode=63 --binary --compliantheight --data='12345678'"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "zint -b AUSPOST --binary --compliantheight -d '12345678'"
|
|
|
|
<< "zint -b 63 --binary --compliantheight -d \"12345678\"";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_AZTEC") << false << 0.0f << ""
|
|
|
|
<< BARCODE_AZTEC << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "12345678Ж0%var%" << "" // text-primary
|
|
|
|
<< 0.0f << 1 << 0 << 0 << 4.0f << true << 0.9f // height-dotSize
|
|
|
|
<< 5.0f << 2 << 1 << "as\"dfa'sdf" << QColor(Qt::blue) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< true << 0 << 0 << 2 << 3 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << false << 0 // showText-rotateAngle
|
|
|
|
<< 7 << false << false << false << WARN_DEFAULT << false // eci-debug
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
<< "zint -b 92 --cmyk --eci=7 -d '12345678Ж0%var%' --dotsize=0.9 --dotty --fg=0000FF --scale=4"
|
2021-11-24 08:12:48 +13:00
|
|
|
" --secure=1 --structapp='1,2,as\"dfa'\\''sdf' --vwhitesp=3 -w 2"
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
<< "zint.exe -b 92 --cmyk --eci=7 -d \"12345678Ж0%var%\" --dotsize=0.9 --dotty --fg=0000FF --scale=4"
|
2021-11-24 08:12:48 +13:00
|
|
|
" --secure=1 --structapp=\"1,2,as\\\"dfa'sdf\" --vwhitesp=3 -w 2"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_C25INTER") << true << 0.0f << ""
|
|
|
|
<< BARCODE_C25INTER << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "12345" << "" // text-primary
|
|
|
|
<< 0.0f << -1 << 2 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << SMALL_TEXT // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 3 --compliantheight -d '12345' --small --vers=2"
|
|
|
|
<< "zint.exe -b 3 --compliantheight -d \"12345\" --small --vers=2"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << ""
|
|
|
|
<< BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "453678" << "" // text-primary
|
|
|
|
<< 19.7f << -1 << 7 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(255, 255, 255, 0) // guardDescent-bgColor
|
|
|
|
<< false << 1 << 2 << 0 << 0 << BOLD_TEXT // cmyk-fontSetting
|
|
|
|
<< true << false << true << false << false << 90 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << true // eci-debug
|
|
|
|
<< "zint -b 140 --bind --bold --border=2 -d '453678' --height=19.7 --nobackground --quietzones"
|
|
|
|
" --rotate=90 --verbose --vers=7"
|
|
|
|
<< "zint.exe -b 140 --bind --bold --border=2 -d \"453678\" --height=19.7 --nobackground --quietzones"
|
|
|
|
" --rotate=90 --verbose --vers=7"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_GS1_128_CC") << false << 0.0f << ""
|
|
|
|
<< BARCODE_GS1_128_CC << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "[01]12345678901231[15]121212" << "[11]901222[99]ABCDE" // text-primary
|
|
|
|
<< 71.142f << 3 << 0 << 0 << 3.5f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< false << false << true << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 131 --compliantheight -d '[11]901222[99]ABCDE' --height=71.142 --mode=3 --notext"
|
|
|
|
" --primary='[01]12345678901231[15]121212' --quietzones --scale=3.5"
|
|
|
|
<< "zint.exe -b 131 --compliantheight -d \"[11]901222[99]ABCDE\" --height=71.142 --mode=3 --notext"
|
|
|
|
" --primary=\"[01]12345678901231[15]121212\" --quietzones --scale=3.5"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_CODE16K") << false << 11.7f << ""
|
|
|
|
<< BARCODE_CODE16K << (UNICODE_MODE | HEIGHTPERROW_MODE) // symbology-inputMode
|
|
|
|
<< "12345678901234567890123456789012" << "" // text-primary
|
|
|
|
<< 0.0f << 4 << 0 << 2 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 1 << 1 << 0 << 0 << SMALL_TEXT // cmyk-fontSetting
|
|
|
|
<< true << false << false << true << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "zint -b 23 --compliantheight -d '12345678901234567890123456789012'"
|
2021-11-24 08:12:48 +13:00
|
|
|
" --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "zint.exe -b 23 --compliantheight -d \"12345678901234567890123456789012\""
|
2021-11-24 08:12:48 +13:00
|
|
|
" --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
2021-11-26 09:24:02 +13:00
|
|
|
QTest::newRow("BARCODE_CODE49") << true << 0.0f << ""
|
|
|
|
<< BARCODE_CODE49 << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "12345678901234567890" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 24 --compliantheight -d '12345678901234567890'"
|
|
|
|
<< "zint.exe -b 24 --compliantheight -d \"12345678901234567890\""
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-26 09:24:02 +13:00
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
QTest::newRow("BARCODE_CODABLOCKF") << true << 0.0f << ""
|
|
|
|
<< BARCODE_CODABLOCKF << (DATA_MODE | ESCAPE_MODE) // symbology-inputMode
|
|
|
|
<< "T\\n\\xA0t\\\"" << "" // text-primary
|
|
|
|
<< 0.0f << 2 << 5 << 3 << 3.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 2 << 4 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << true << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 74 --binary --border=4 --box --cols=5 --compliantheight -d 'T\\n\\xA0t\\\"' --esc --init"
|
|
|
|
" --rows=2 --scale=3 --separator=3"
|
|
|
|
<< "zint.exe -b 74 --binary --border=4 --box --cols=5 --compliantheight -d \"T\\n\\xA0t\\\\\"\" --esc --init"
|
|
|
|
" --rows=2 --scale=3 --separator=3"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_DAFT") << false << 0.0f << ""
|
|
|
|
<< BARCODE_DAFT << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "daft" << "" // text-primary
|
|
|
|
<< 9.2f << -1 << 251 << 0 << 1.0f << false << 0.7f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(0x30, 0x31, 0x32, 0x33) << QColor(0xBF, 0xBE, 0xBD, 0xBC) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 93 --bg=BFBEBDBC -d 'daft' --fg=30313233 --height=9.2 --vers=251"
|
|
|
|
<< "zint.exe -b 93 --bg=BFBEBDBC -d \"daft\" --fg=30313233 --height=9.2 --vers=251"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_DATAMATRIX") << true << 0.0f << ""
|
|
|
|
<< BARCODE_DATAMATRIX << GS1_MODE // symbology-inputMode
|
|
|
|
<< "[20]12" << "" // text-primary
|
|
|
|
<< 0.0f << -1 << 0 << DM_SQUARE << 1.0f << false << 0.7f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << true << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 71 -d '[20]12' --gs1 --gssep --square"
|
|
|
|
<< "zint.exe -b 71 -d \"[20]12\" --gs1 --gssep --square"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
2021-12-21 05:57:39 +13:00
|
|
|
QTest::newRow("BARCODE_DATAMATRIX") << false << 0.0f << ""
|
|
|
|
<< BARCODE_DATAMATRIX << (DATA_MODE | ESCAPE_MODE | FAST_MODE) // symbology-inputMode
|
|
|
|
<< "ABCDEFGH\\x01I" << "" // text-primary
|
|
|
|
<< 0.0f << -1 << 0 << 0 << 1.0f << false << 0.7f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 71 --binary -d 'ABCDEFGH\\x01I' --esc --fast"
|
|
|
|
<< "zint.exe -b 71 --binary -d \"ABCDEFGH\\x01I\" --esc --fast"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-12-21 05:57:39 +13:00
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
QTest::newRow("BARCODE_DBAR_EXPSTK_CC") << false << 40.8f << ""
|
|
|
|
<< BARCODE_DBAR_EXPSTK_CC << (DATA_MODE | HEIGHTPERROW_MODE) // symbology-inputMode
|
|
|
|
<< "[91]ABCDEFGHIJKL" << "[11]901222[99]ABCDE" // text-primary
|
|
|
|
<< 0.0f << -1 << 0 << 2 << 1.0f << true << 0.9f // height-dotSize
|
|
|
|
<< 3.0f << 2 << 1 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 139 --binary --compliantheight -d '[11]901222[99]ABCDE' --height=40.8 --heightperrow"
|
|
|
|
" --primary='[91]ABCDEFGHIJKL' --rows=2"
|
|
|
|
<< "zint.exe -b 139 --binary --compliantheight -d \"[11]901222[99]ABCDE\" --height=40.8 --heightperrow"
|
|
|
|
" --primary=\"[91]ABCDEFGHIJKL\" --rows=2"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_DOTCODE") << false << 1.0f << ""
|
|
|
|
<< BARCODE_DOTCODE << GS1_MODE // symbology-inputMode
|
|
|
|
<< "[20]01" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << false << 0.7f // height-dotSize
|
|
|
|
<< 0.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 115 --cols=8 -d '[20]01' --dotsize=0.7 --gs1 --mask=0"
|
|
|
|
<< "zint.exe -b 115 --cols=8 -d \"[20]01\" --dotsize=0.7 --gs1 --mask=0"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_EANX") << true << 0.0f << ""
|
|
|
|
<< BARCODE_EANX << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "123456789012+12" << "" // text-primary
|
|
|
|
<< 0.0f << -1 << 8 << 0 << 1.0f << true << 0.8f // height-dotSize
|
|
|
|
<< 0.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 13 --addongap=8 --compliantheight -d '123456789012+12' --guarddescent=0"
|
|
|
|
<< "zint.exe -b 13 --addongap=8 --compliantheight -d \"123456789012+12\" --guarddescent=0"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_GRIDMATRIX") << false << 0.0f << ""
|
|
|
|
<< BARCODE_GRIDMATRIX << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "Your Data Here!" << "" // text-primary
|
|
|
|
<< 0.0f << 1 << 5 << 0 << 0.5f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << true << false << true << 270 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 142 -d 'Your Data Here!' --quietzones --rotate=270 --scale=0.5 --secure=1 --vers=5"
|
|
|
|
<< "zint.exe -b 142 -d \"Your Data Here!\" --quietzones --rotate=270 --scale=0.5 --secure=1 --vers=5"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_HANXIN") << false << 0.0f << ""
|
|
|
|
<< BARCODE_HANXIN << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode
|
|
|
|
<< "éβÿ啊\\e\"'" << "" // text-primary
|
|
|
|
<< 30.0f << 2 << 5 << ((0 + 1) << 8) << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 29 << false << false << false << WARN_DEFAULT << false // eci-debug
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
<< "zint -b 116 --eci=29 -d 'éβÿ啊\\e\"'\\''' --esc --mask=0 --secure=2 --vers=5"
|
|
|
|
<< "zint.exe -b 116 --eci=29 -d \"éβÿ啊\\e\\\"'\" --esc --mask=0 --secure=2 --vers=5"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_HIBC_DM") << false << 10.0f << ""
|
|
|
|
<< BARCODE_HIBC_DM << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "1234" << "" // text-primary
|
|
|
|
<< 0.0f << -1 << 8 << DM_DMRE << 1.0f << false << 0.7f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << true << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 102 -d '1234' --dmre --vers=8"
|
|
|
|
<< "zint.exe -b 102 -d \"1234\" --dmre --vers=8"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_HIBC_PDF") << false << 0.0f << ""
|
|
|
|
<< BARCODE_HIBC_PDF << (DATA_MODE | HEIGHTPERROW_MODE) // symbology-inputMode
|
|
|
|
<< "TEXT" << "" // text-primary
|
|
|
|
<< 3.5f << 3 << 4 << 10 << 10.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 2 << 1 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << true << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 106 --binary --cols=4 -d 'TEXT' --height=3.5 --heightperrow --quietzones"
|
|
|
|
" --rows=10 --scale=10 --secure=3 --structapp=1,2"
|
|
|
|
<< "zint.exe -b 106 --binary --cols=4 -d \"TEXT\" --height=3.5 --heightperrow --quietzones"
|
|
|
|
" --rows=10 --scale=10 --secure=3 --structapp=1,2"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
2021-11-26 09:24:02 +13:00
|
|
|
QTest::newRow("BARCODE_ITF14") << true << 0.0f << ""
|
|
|
|
<< BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "9212320967145" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 89 --compliantheight -d '9212320967145'"
|
|
|
|
<< "zint.exe -b 89 --compliantheight -d \"9212320967145\""
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
|
|
|
|
|
|
|
QTest::newRow("BARCODE_ITF14") << true << 0.0f << ""
|
|
|
|
<< BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "9212320967145" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 1 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 89 --border=1 --compliantheight -d '9212320967145'"
|
|
|
|
<< "zint.exe -b 89 --border=1 --compliantheight -d \"9212320967145\""
|
|
|
|
<< "" << "" << "";
|
2021-11-26 09:24:02 +13:00
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
QTest::newRow("BARCODE_MAXICODE") << true << 0.0f << ""
|
|
|
|
<< BARCODE_MAXICODE << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode
|
|
|
|
<< "152382802840001"
|
|
|
|
<< "1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G1 MAIN ST\\GTOWN\\GNY\\R\\E" // text-primary
|
|
|
|
<< 0.0f << -1 << (96 + 1) << 0 << 2.5f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << true << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 57 -d '1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G1 MAIN ST\\GTOWN\\GNY\\R\\E'"
|
|
|
|
" --esc --primary='152382802840001' --quietzones --scale=2.5 --scmvv=96"
|
|
|
|
<< "zint.exe -b 57 -d \"1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G1 MAIN ST\\GTOWN\\GNY\\R\\E\""
|
|
|
|
" --esc --primary=\"152382802840001\" --quietzones --scale=2.5 --scmvv=96"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_MICROQR") << false << 0.0f << ""
|
|
|
|
<< BARCODE_MICROQR << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "1234" << "" // text-primary
|
|
|
|
<< 30.0f << 2 << 3 << (ZINT_FULL_MULTIBYTE | (3 + 1) << 8) << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 97 -d '1234' --fullmultibyte --mask=3 --secure=2 --vers=3"
|
|
|
|
<< "zint.exe -b 97 -d \"1234\" --fullmultibyte --mask=3 --secure=2 --vers=3"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_QRCODE") << true << 0.0f << ""
|
|
|
|
<< BARCODE_QRCODE << GS1_MODE // symbology-inputMode
|
|
|
|
<< "(01)12" << "" // text-primary
|
|
|
|
<< 0.0f << 1 << 5 << (ZINT_FULL_MULTIBYTE | (0 + 1) << 8) << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << true << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << true << true << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 58 -d '(01)12' --fullmultibyte --gs1 --gs1parens --gs1nocheck --mask=0 --quietzones"
|
|
|
|
" --secure=1 --vers=5"
|
|
|
|
<< "zint.exe -b 58 -d \"(01)12\" --fullmultibyte --gs1 --gs1parens --gs1nocheck --mask=0 --quietzones"
|
|
|
|
" --secure=1 --vers=5"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_RMQR") << true << 0.0f << ""
|
|
|
|
<< BARCODE_RMQR << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "テ" << "" // text-primary
|
|
|
|
<< 30.0f << -1 << 8 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 180 // showText-rotateAngle
|
|
|
|
<< 20 << false << false << false << WARN_DEFAULT << false // eci-debug
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
<< "zint -b 145 --eci=20 -d 'テ' --rotate=180 --vers=8"
|
|
|
|
<< "zint.exe -b 145 --eci=20 -d \"テ\" --rotate=180 --vers=8"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
2021-11-24 09:27:28 +13:00
|
|
|
QTest::newRow("BARCODE_ULTRA") << false << 0.0f << ""
|
|
|
|
<< BARCODE_ULTRA << (GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE) // symbology-inputMode
|
|
|
|
<< "(01)1" << "" // text-primary
|
|
|
|
<< 0.0f << 6 << 2 << 0 << 1.0f << true << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 2 << 1 << "4" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 144 -d '(01)1' --gs1 --gs1parens --gs1nocheck --secure=6 --structapp='1,2,4' --vers=2"
|
|
|
|
<< "zint.exe -b 144 -d \"(01)1\" --gs1 --gs1parens --gs1nocheck --secure=6 --structapp=\"1,2,4\" --vers=2"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 09:27:28 +13:00
|
|
|
|
2021-11-24 08:12:48 +13:00
|
|
|
QTest::newRow("BARCODE_UPCE_CC") << true << 0.0f << "out.svg"
|
|
|
|
<< BARCODE_UPCE_CC << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "12345670+1234" << "[11]901222[99]ABCDE" // text-primary
|
|
|
|
<< 0.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 6.5f << 0 << 0 << "" << QColor(0xEF, 0x29, 0x29) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // cmyk-fontSetting
|
|
|
|
<< true << false << false << true << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_FAIL_ALL << false // eci-debug
|
|
|
|
<< "zint -b 136 --bold --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5"
|
|
|
|
" --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror"
|
|
|
|
<< "zint.exe -b 136 --bold --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5"
|
|
|
|
" --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror"
|
|
|
|
<< "zint --barcode=136 --bold --compliantheight --data='[11]901222[99]ABCDE' --fg=EF2929"
|
|
|
|
" --guarddescent=6.5 --noquietzones --output='out.svg' --primary='12345670+1234' --small --werror"
|
|
|
|
<< "zint -b UPCE_CC --bold --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5"
|
2022-05-13 07:35:06 +12:00
|
|
|
" --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror"
|
|
|
|
<< "zint -b 136 --bold --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5"
|
|
|
|
" --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror";
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
QTest::newRow("BARCODE_VIN") << false << 2.0f << ""
|
|
|
|
<< BARCODE_VIN << UNICODE_MODE // symbology-inputMode
|
|
|
|
<< "12345678701234567" << "" // text-primary
|
|
|
|
<< 20.0f << -1 << 1 << 0 << 1.0f << false << 0.8f // height-dotSize
|
|
|
|
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
|
|
|
|
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
|
|
|
|
<< true << false << false << false << true << 0 // showText-rotateAngle
|
|
|
|
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
|
|
|
|
<< "zint -b 73 -d '12345678701234567' --height=20 --vers=1"
|
|
|
|
<< "zint.exe -b 73 -d \"12345678701234567\" --height=20 --vers=1"
|
2022-05-13 07:35:06 +12:00
|
|
|
<< "" << "" << "";
|
2021-11-24 08:12:48 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
void getAsCLITest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
QString cmd;
|
|
|
|
|
|
|
|
QFETCH(bool, autoHeight);
|
|
|
|
QFETCH(float, heightPerRow);
|
|
|
|
QFETCH(QString, outfile);
|
|
|
|
|
|
|
|
QFETCH(int, symbology);
|
|
|
|
QFETCH(int, inputMode);
|
|
|
|
QFETCH(QString, text);
|
|
|
|
QFETCH(QString, primary);
|
|
|
|
QFETCH(float, height);
|
|
|
|
QFETCH(int, option1);
|
|
|
|
QFETCH(int, option2);
|
|
|
|
QFETCH(int, option3);
|
|
|
|
QFETCH(float, scale);
|
|
|
|
QFETCH(bool, dotty);
|
|
|
|
QFETCH(float, dotSize);
|
|
|
|
QFETCH(float, guardDescent);
|
|
|
|
QFETCH(int, structAppCount);
|
|
|
|
QFETCH(int, structAppIndex);
|
|
|
|
QFETCH(QString, structAppID);
|
|
|
|
QFETCH(QColor, fgColor);
|
|
|
|
QFETCH(QColor, bgColor);
|
|
|
|
QFETCH(bool, cmyk);
|
|
|
|
QFETCH(int, borderTypeIndex);
|
|
|
|
QFETCH(int, borderWidth);
|
|
|
|
QFETCH(int, whitespace);
|
|
|
|
QFETCH(int, vWhitespace);
|
|
|
|
QFETCH(int, fontSetting);
|
|
|
|
QFETCH(bool, showText);
|
|
|
|
QFETCH(bool, gsSep);
|
|
|
|
QFETCH(bool, quietZones);
|
|
|
|
QFETCH(bool, noQuietZones);
|
|
|
|
QFETCH(bool, compliantHeight);
|
|
|
|
QFETCH(int, rotateAngle);
|
|
|
|
QFETCH(int, eci);
|
|
|
|
QFETCH(bool, gs1Parens);
|
|
|
|
QFETCH(bool, gs1NoCheck);
|
|
|
|
QFETCH(bool, readerInit);
|
|
|
|
QFETCH(int, warnLevel);
|
|
|
|
QFETCH(bool, debug);
|
|
|
|
|
|
|
|
QFETCH(QString, expected_cmd);
|
|
|
|
QFETCH(QString, expected_win);
|
|
|
|
QFETCH(QString, expected_longOptOnly);
|
|
|
|
QFETCH(QString, expected_barcodeNames);
|
2022-05-13 07:35:06 +12:00
|
|
|
QFETCH(QString, expected_noexe);
|
2021-11-24 08:12:48 +13:00
|
|
|
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
bc.setInputMode(inputMode);
|
|
|
|
if (primary.isEmpty()) {
|
|
|
|
bc.setText(text);
|
|
|
|
} else {
|
|
|
|
bc.setText(primary);
|
|
|
|
bc.setPrimaryMessage(text);
|
|
|
|
}
|
|
|
|
bc.setHeight(height);
|
|
|
|
bc.setOption1(option1);
|
|
|
|
bc.setOption2(option2);
|
|
|
|
bc.setOption3(option3);
|
|
|
|
bc.setScale(scale);
|
|
|
|
bc.setDotty(dotty);
|
|
|
|
bc.setDotSize(dotSize);
|
|
|
|
bc.setGuardDescent(guardDescent);
|
|
|
|
bc.setStructApp(structAppCount, structAppIndex, structAppID);
|
|
|
|
bc.setFgColor(fgColor);
|
|
|
|
bc.setBgColor(bgColor);
|
|
|
|
bc.setCMYK(cmyk);
|
|
|
|
bc.setBorderType(borderTypeIndex);
|
|
|
|
bc.setBorderWidth(borderWidth);
|
|
|
|
bc.setWhitespace(whitespace);
|
|
|
|
bc.setVWhitespace(vWhitespace);
|
|
|
|
bc.setFontSettingValue(fontSetting);
|
|
|
|
bc.setShowText(showText);
|
|
|
|
bc.setGSSep(gsSep);
|
|
|
|
bc.setQuietZones(quietZones);
|
|
|
|
bc.setNoQuietZones(noQuietZones);
|
|
|
|
bc.setCompliantHeight(compliantHeight);
|
|
|
|
bc.setRotateAngleValue(rotateAngle);
|
|
|
|
bc.setECIValue(eci);
|
|
|
|
bc.setGS1Parens(gs1Parens);
|
|
|
|
bc.setGS1NoCheck(gs1NoCheck);
|
|
|
|
bc.setReaderInit(readerInit);
|
|
|
|
bc.setWarnLevel(warnLevel);
|
|
|
|
bc.setDebug(debug);
|
|
|
|
|
2022-05-13 07:35:06 +12:00
|
|
|
cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
|
2021-11-24 08:12:48 +13:00
|
|
|
autoHeight, heightPerRow, outfile);
|
|
|
|
QCOMPARE(cmd, expected_cmd);
|
|
|
|
|
2022-05-13 07:35:06 +12:00
|
|
|
cmd = bc.getAsCLI(true /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
|
2021-11-24 08:12:48 +13:00
|
|
|
autoHeight, heightPerRow, outfile);
|
|
|
|
QCOMPARE(cmd, expected_win);
|
|
|
|
|
|
|
|
if (!expected_longOptOnly.isEmpty()) {
|
2022-05-13 07:35:06 +12:00
|
|
|
cmd = bc.getAsCLI(false /*win*/, true /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
|
2021-11-24 08:12:48 +13:00
|
|
|
autoHeight, heightPerRow, outfile);
|
|
|
|
QCOMPARE(cmd, expected_longOptOnly);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!expected_barcodeNames.isEmpty()) {
|
2022-05-13 07:35:06 +12:00
|
|
|
cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, true /*barcodeNames*/, false /*noEXE*/,
|
2021-11-24 08:12:48 +13:00
|
|
|
autoHeight, heightPerRow, outfile);
|
|
|
|
QCOMPARE(cmd, expected_barcodeNames);
|
|
|
|
}
|
2022-05-13 07:35:06 +12:00
|
|
|
|
|
|
|
if (!expected_noexe.isEmpty()) {
|
|
|
|
cmd = bc.getAsCLI(true /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, true /*noEXE*/,
|
|
|
|
autoHeight, heightPerRow, outfile);
|
|
|
|
QCOMPARE(cmd, expected_noexe);
|
|
|
|
}
|
2021-11-24 08:12:48 +13:00
|
|
|
}
|
2021-11-27 01:20:54 +13:00
|
|
|
|
Add multiple segments support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
2022-05-10 06:50:50 +12:00
|
|
|
void getAsCLISegsTest()
|
|
|
|
{
|
|
|
|
Zint::QZint bc;
|
|
|
|
|
|
|
|
QString cmd;
|
|
|
|
QString expected_cmd;
|
|
|
|
QString expected_win;
|
|
|
|
|
|
|
|
std::vector<QString> segTexts;
|
|
|
|
std::vector<int> segECIs;
|
|
|
|
segTexts.push_back(QString("Τεχτ"));
|
|
|
|
segECIs.push_back(9);
|
|
|
|
segTexts.push_back(QString("Téxt"));
|
|
|
|
segECIs.push_back(3);
|
|
|
|
segTexts.push_back(QString("กขฯ"));
|
|
|
|
segECIs.push_back(13);
|
|
|
|
segTexts.push_back(QString("貫やぐ禁"));
|
|
|
|
segECIs.push_back(20);
|
|
|
|
|
|
|
|
std::vector<Zint::QZintSeg> segs;
|
|
|
|
for (int i = 0; i < (int) segTexts.size(); i++) {
|
|
|
|
segs.push_back(Zint::QZintSeg(segTexts[i]));
|
|
|
|
segs.back().m_eci = segECIs[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
bc.setSymbol(BARCODE_QRCODE);
|
|
|
|
bc.setSegs(segs);
|
|
|
|
bc.setDotty(true);
|
|
|
|
|
|
|
|
expected_cmd = "zint -b 58 --eci=9 -d 'Τεχτ' --seg1=3,'Téxt' --seg2=13,'กขฯ' --seg3=20,'貫やぐ禁' --dotty";
|
|
|
|
cmd = bc.getAsCLI(false /*win*/);
|
|
|
|
QCOMPARE(cmd, expected_cmd);
|
|
|
|
|
|
|
|
expected_win = "zint.exe -b 58 --eci=9 -d \"Τεχτ\" --seg1=3,\"Téxt\" --seg2=13,\"กขฯ\" --seg3=20,\"貫やぐ禁\" --dotty";
|
|
|
|
cmd = bc.getAsCLI(true /*win*/);
|
|
|
|
QCOMPARE(cmd, expected_win);
|
|
|
|
}
|
|
|
|
|
2021-11-27 01:20:54 +13:00
|
|
|
void qZintAndLibZintEqual_data()
|
|
|
|
{
|
|
|
|
QTest::addColumn<int>("symbology");
|
|
|
|
QTest::addColumn<int>("rotateAngles");
|
|
|
|
QTest::addColumn<QString>("text");
|
|
|
|
|
|
|
|
QTest::newRow("symbology=BARCODE_DATAMATRIX rotateAngles=0 text=1234") << BARCODE_DATAMATRIX << 0 << "1234";
|
|
|
|
QTest::newRow("symbology=BARCODE_QRCODE rotateAngles=0 text=Hello%20World") << BARCODE_QRCODE << 0 << "Hello%20World";
|
|
|
|
QTest::newRow("symbology=BARCODE_QRCODE rotateAngles=90 text=Hello%20World") << BARCODE_QRCODE << 90 << "Hello%20World";
|
|
|
|
QTest::newRow("symbology=BARCODE_QRCODE rotateAngles=180 text=Hello%20World") << BARCODE_QRCODE << 180 << "Hello%20World";
|
|
|
|
QTest::newRow("symbology=BARCODE_QRCODE rotateAngles=270 text=Hello%20World") << BARCODE_QRCODE << 270 << "Hello%20World";
|
|
|
|
}
|
|
|
|
|
|
|
|
void qZintAndLibZintEqual()
|
|
|
|
{
|
|
|
|
QFETCH(int, symbology);
|
|
|
|
QFETCH(int, rotateAngles);
|
|
|
|
QFETCH(QString, text);
|
|
|
|
QString fileName("test_qZintAndLibZintEqual_%1.gif");
|
|
|
|
QString fileNameForLibZint(fileName.arg("libZint"));
|
|
|
|
QString fileNameForQZint(fileName.arg("qZint"));
|
|
|
|
|
|
|
|
Zint::QZint bc;
|
|
|
|
QSharedPointer<zint_symbol> symbol(ZBarcode_Create(), ZBarcode_Delete);
|
|
|
|
|
|
|
|
bc.setSymbol(symbology);
|
|
|
|
symbol->symbology = symbology;
|
|
|
|
|
|
|
|
bc.setText(text);
|
|
|
|
bc.setRotateAngleValue(rotateAngles);
|
|
|
|
|
|
|
|
qstrcpy(symbol->outfile, qUtf8Printable(fileNameForLibZint));
|
|
|
|
|
|
|
|
bc.save_to_file(fileNameForQZint);
|
|
|
|
ZBarcode_Encode_and_Print(symbol.data(), reinterpret_cast<const unsigned char*>(qUtf8Printable(text)), 0, rotateAngles);
|
|
|
|
|
|
|
|
QImage imageWrittenByVanilla(fileNameForLibZint);
|
|
|
|
QImage imageWrittenByQZint(fileNameForQZint);
|
|
|
|
|
|
|
|
QCOMPARE(imageWrittenByQZint.isNull(), false);
|
|
|
|
QCOMPARE(imageWrittenByVanilla.isNull(), false);
|
|
|
|
|
|
|
|
QCOMPARE(imageWrittenByQZint == imageWrittenByVanilla, true);
|
|
|
|
|
|
|
|
QFile::remove(fileNameForLibZint);
|
|
|
|
QFile::remove(fileNameForQZint);
|
|
|
|
}
|
Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 12:13:39 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
QTEST_MAIN(TestQZint)
|
|
|
|
#include "test_qzint.moc"
|
2022-04-10 22:12:18 +12:00
|
|
|
|
|
|
|
/* vim: set ts=4 sw=4 et : */
|