| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401 |
- /***************************************************************************
- * Copyright (C) 2021-2024 by Robin Stuart <rstuart114@gmail.com> *
- * *
- * 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/>. *
- ***************************************************************************/
- /* SPDX-License-Identifier: GPL-3.0-or-later */
- #include <QtTest/QSignalSpy>
- #include <QtTest/QTest>
- #include "../qzint.h" /* Don't use <qzint.h> in case it's been changed */
- #define ARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0])))
- // Whether using ZINT_SANITIZE
- #if !defined(__has_feature)
- # define __has_feature(x) 0
- #endif
- #if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
- # define TESTQZINT_HAVE_ASAN
- #endif
- class TestQZint : public QObject
- {
- Q_OBJECT
- // This avoids WaylandClient memory leaks for Qt5 > 5.15.2 (taken from "frontend_qt/main.cpp")
- #if defined(__linux__) && QT_VERSION > 0x50F02
- public:
- static void initMain()
- {
- /* Not compatible with Wayland for some reason(s) so use X11 unless overridden */
- if (qEnvironmentVariableIsEmpty("QT_QPA_PLATFORM")) {
- qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("xcb"));
- }
- }
- #endif
- public:
- TestQZint() : m_skipIfFontUsed(false)
- {
- // Qt will trigger "detected memory leaks" if font used (libfontconfig) so skip if ASAN enabled
- #ifdef TESTQZINT_HAVE_ASAN
- m_skipIfFontUsed = true;
- #endif
- // Unfortunately Qt5 > 5.15.13 & Qt6 > 6.4.2 have further libfontconfig leaks which this doesn't address...
- // ...only option found so far is to use `QTEST_GUILESS_MAIN()` and skip `renderTest()` completely
- #if defined(__linux__) && ((QT_VERSION > 0x50F0D && QT_VERSION < 0x60000) || QT_VERSION > 0x60402) \
- && defined(TESTQZINT_HAVE_ASAN)
- #define TESTQZINT_GUILESS
- #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);
- 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);
- 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);
- float dpmm = 11.811f;
- bc.setDPMM(dpmm);
- QCOMPARE(bc.dpmm(), dpmm);
- bool dotty = true;
- bc.setDotty(dotty);
- QCOMPARE(bc.dotty(), dotty);
- float dotSize = 1.234f;
- bc.setDotSize(dotSize);
- QCOMPARE(bc.dotSize(), dotSize);
- float textGap = 4.321f;
- bc.setTextGap(textGap);
- QCOMPARE(bc.textGap(), textGap);
- 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));
- QString fgStr("12344567");
- bc.setFgStr(fgStr);
- QCOMPARE(bc.fgStr(), fgStr);
- QColor fgColor(0x12, 0x34, 0x45, 0x67);
- bc.setFgColor(fgColor);
- QCOMPARE(bc.fgColor(), fgColor);
- QCOMPARE(bc.fgStr(), fgStr);
- QString bgStr("89ABCDEF");
- bc.setBgStr(bgStr);
- QCOMPARE(bc.bgStr(), bgStr);
- QColor bgColor(0x89, 0xAB, 0xCD, 0xEF);
- bc.setBgColor(bgColor);
- QCOMPARE(bc.bgColor(), bgColor);
- QCOMPARE(bc.bgStr(), bgStr);
- QString bgStr2("71,0,40,44");
- bc.setBgStr(bgStr2);
- QCOMPARE(bc.bgStr(), bgStr2);
- bool cmyk = true;
- bc.setCMYK(cmyk);
- QCOMPARE(bc.cmyk(), cmyk);
- int borderTypes[] = { 0, BARCODE_BIND, BARCODE_BOX, BARCODE_BIND_TOP };
- 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,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 170, 899,
- };
- 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);
- bool guardWhitespace = true;
- bc.setGuardWhitespace(guardWhitespace);
- QCOMPARE(bc.guardWhitespace(), guardWhitespace);
- bool embedVectorFont = true;
- bc.setEmbedVectorFont(embedVectorFont);
- QCOMPARE(bc.embedVectorFont(), embedVectorFont);
- int warnLevel = WARN_FAIL_ALL;
- bc.setWarnLevel(warnLevel);
- QCOMPARE(bc.warnLevel(), warnLevel);
- bool debug = true;
- bc.setDebug(debug);
- QCOMPARE(bc.debug(), debug);
- QCOMPARE(bc.encodedWidth(), 0); // Read-only
- QCOMPARE(bc.encodedRows(), 0); // Read-only
- QCOMPARE(bc.encodedHeight(), 0.0f); // Read-only
- QCOMPARE(bc.vectorWidth(), 0.0f); // Read-only
- QCOMPARE(bc.vectorHeight(), 0.0f); // Read-only
- QCOMPARE(bc.takesGS1AIData(BARCODE_CODE128), false);
- QCOMPARE(bc.takesGS1AIData(BARCODE_GS1_128), true);
- }
- 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;
- QTest::newRow("31") << 31 << 31;
- QTest::newRow("36") << 36 << 0;
- QTest::newRow("169") << 169 << 0;
- QTest::newRow("171") << 171 << 0;
- 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.option2(), width);
- int securityLevel = 2;
- bc.setSecurityLevel(securityLevel);
- QCOMPARE(bc.securityLevel(), securityLevel);
- QCOMPARE(bc.option1(), 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");
- 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);
- }
- void capTest()
- {
- Zint::QZint bc;
- QFETCH(int, symbology);
- QFETCH(int, cap_flag);
- bc.setSymbol(symbology);
- QCOMPARE(bc.hasHRT(), (cap_flag & ZINT_CAP_HRT) != 0);
- QCOMPARE(bc.isStackable(), (cap_flag & ZINT_CAP_STACKABLE) != 0);
- QCOMPARE(bc.isExtendable(), (cap_flag & ZINT_CAP_EXTENDABLE) != 0);
- QCOMPARE(bc.isComposite(), (cap_flag & ZINT_CAP_COMPOSITE) != 0);
- QCOMPARE(bc.supportsECI(), (cap_flag & ZINT_CAP_ECI) != 0);
- QCOMPARE(bc.supportsGS1(), (cap_flag & ZINT_CAP_GS1) != 0);
- QCOMPARE(bc.isDotty(), (cap_flag & ZINT_CAP_DOTTY) != 0);
- 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);
- 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);
- QCOMPARE(bc.hasCompliantHeight(), (cap_flag & ZINT_CAP_COMPLIANT_HEIGHT) != 0);
- }
- void renderTest_data()
- {
- QTest::addColumn<int>("symbology");
- QTest::addColumn<QString>("text");
- QTest::addColumn<float>("scale");
- QTest::addColumn<int>("getError");
- QTest::addColumn<QString>("error_message");
- QTest::addColumn<int>("encodedWidth");
- QTest::addColumn<int>("encodedRows");
- QTest::addColumn<float>("encodedHeight");
- QTest::addColumn<float>("vectorWidth");
- QTest::addColumn<float>("vectorHeight");
- QTest::newRow("BARCODE_CODE128") << BARCODE_CODE128 << "1234" << 0.0f << 0 << "" << 57 << 1 << 50.0f << 114.0f << 100.0f;
- QTest::newRow("BARCODE_CODE128 Scale 2") << BARCODE_CODE128 << "1234" << 2.0f << 0 << "" << 57 << 1 << 50.0f << 228.0f << 200.0f;
- QTest::newRow("BARCODE_QRCODE") << BARCODE_QRCODE << "1234" << 0.0f << 0 << "" << 21 << 21 << 21.0f << 42.0f << 42.0f;
- QTest::newRow("BARCODE_QRCODE Scale 1.5") << BARCODE_QRCODE << "1234" << 1.5f << 0 << "" << 21 << 21 << 21.0f << 63.0f << 63.0f;
- if (!m_skipIfFontUsed) {
- QTest::newRow("BARCODE_QRCODE no text") << BARCODE_QRCODE << "" << 0.0f << ZINT_ERROR_INVALID_DATA << "Error 228: No input data (segment 0 empty)" << 0 << 0 << 0.0f << 0.0f << 0.0f;
- }
- QTest::newRow("BARCODE_MAXICODE") << BARCODE_MAXICODE << "1234" << 0.0f << 0 << "" << 30 << 33 << 28.578f << 60.0f << 57.7334f;
- QTest::newRow("BARCODE_MAXICODE Scale 2") << BARCODE_MAXICODE << "1234" << 2.0f << 0 << "" << 30 << 33 << 28.578f << 120.0f << 115.467f;
- }
- void renderTest()
- {
- #ifdef TESTQZINT_GUILESS
- QSKIP("disabled on Linux for Qt5 > 5.15.13 & Qt6 > 6.4.2 due to memory leaks (ZINT_SANITIZE)");
- #endif
- 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(float, scale);
- QFETCH(int, getError);
- QFETCH(QString, error_message);
- QFETCH(int, encodedWidth);
- QFETCH(int, encodedRows);
- QFETCH(float, encodedHeight);
- QFETCH(float, vectorWidth);
- QFETCH(float, vectorHeight);
- bc.setSymbol(symbology);
- bc.setText(text);
- bc.setShowText(false);
- if (scale) {
- bc.setScale(scale);
- }
- 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);
- QCOMPARE(bc.encodedWidth(), encodedWidth);
- QCOMPARE(bc.encodedRows(), encodedRows);
- QCOMPARE(bc.encodedHeight(), encodedHeight);
- QCOMPARE(bc.vectorWidth(), vectorWidth);
- QCOMPARE(bc.vectorHeight(), vectorHeight);
- 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;
- QTest::newRow("BARCODE_DATAMATRIX UTF8 gif") << BARCODE_DATAMATRIX << "1234" << "test_save_to_file_τ.gif" << true;
- QTest::newRow("BARCODE_DATAMATRIX too long (unknown format)") << BARCODE_DATAMATRIX << "1234"
- << "test_6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.gif" // 256 long so should be truncated to end in ".gi"
- << false;
- }
- void saveToFileTest()
- {
- Zint::QZint bc;
- bool bRet;
- 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) {
- bRet = QFile::remove(fileName);
- QCOMPARE(bRet, true);
- }
- }
- 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<float>("dpmm");
- QTest::addColumn<bool>("dotty");
- QTest::addColumn<float>("dotSize");
- QTest::addColumn<float>("textGap");
- QTest::addColumn<float>("guardDescent");
- QTest::addColumn<int>("structAppCount");
- QTest::addColumn<int>("structAppIndex");
- QTest::addColumn<QString>("structAppID");
- QTest::addColumn<QString>("fgStr");
- QTest::addColumn<QString>("bgStr");
- 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<bool>("guardWhitespace");
- QTest::addColumn<bool>("embedVectorFont");
- QTest::addColumn<int>("warnLevel");
- QTest::addColumn<bool>("debug");
- QTest::addColumn<double>("xdimdp_x_dim");
- QTest::addColumn<int>("xdimdp_x_dim_units");
- QTest::addColumn<int>("xdimdp_resolution");
- QTest::addColumn<int>("xdimdp_resolution_units");
- QTest::addColumn<int>("xdimdp_filetype");
- QTest::addColumn<int>("xdimdp_filetype_maxicode");
- QTest::addColumn<QString>("expected_cmd");
- QTest::addColumn<QString>("expected_win");
- QTest::addColumn<QString>("expected_longOptOnly");
- QTest::addColumn<QString>("expected_barcodeNames");
- QTest::addColumn<QString>("expected_noexe");
- QTest::addColumn<QString>("expected_xdimdp");
- QTest::newRow("BARCODE_AUSPOST") << true << 0.0f << ""
- << BARCODE_AUSPOST << DATA_MODE // symbology-inputMode
- << "12345678" << "" // text-primary
- << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 63 --binary --compliantheight -d '12345678'"
- << "zint.exe -b 63 --binary --compliantheight -d \"12345678\""
- << "zint --barcode=63 --binary --compliantheight --data='12345678'"
- << "zint -b AUSPOST --binary --compliantheight -d '12345678'"
- << "zint -b 63 --binary --compliantheight -d \"12345678\""
- << "";
- 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 << 0.0f << true << 0.9f << 1.0f // height-textGap
- << 5.0f << 2 << 1 << "as\"dfa'sdf" // guardDescent-structAppID
- << "" << "" << QColor(Qt::blue) << QColor(Qt::white) << true // fgStr-cmyk
- << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << false << 0 // showText-rotateAngle
- << 7 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 92 --cmyk --eci=7 -d '12345678Ж0%var%' --dotsize=0.9 --dotty --fg=0000FF --scale=4"
- " --secure=1 --structapp='1,2,as\"dfa'\\''sdf' --vwhitesp=3 -w 2"
- << "zint.exe -b 92 --cmyk --eci=7 -d \"12345678Ж0%var%\" --dotsize=0.9 --dotty --fg=0000FF --scale=4"
- " --secure=1 --structapp=\"1,2,as\\\"dfa'sdf\" --vwhitesp=3 -w 2"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_AZTEC (bgStr CMYK, fgStr CMYK)") << false << 0.0f << ""
- << BARCODE_AZTEC << UNICODE_MODE // symbology-inputMode
- << "12345678Ж0%var%" << "" // text-primary
- << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f << 1.0f // height-textGap
- << 5.0f << 2 << 1 << "as\"dfa'sdf" // guardDescent-structAppID
- << "71,0,40,44" << "0,0,0,0" << QColor(Qt::black) << QColor(Qt::white) << true // fgStr-cmyk
- << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << false << 0 // showText-rotateAngle
- << 7 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 92 --bg=0,0,0,0 --cmyk --eci=7 -d '12345678Ж0%var%' --dotsize=0.9 --dotty --fg=71,0,40,44 --scale=4"
- " --secure=1 --structapp='1,2,as\"dfa'\\''sdf' --vwhitesp=3 -w 2"
- << "zint.exe -b 92 --bg=0,0,0,0 --cmyk --eci=7 -d \"12345678Ж0%var%\" --dotsize=0.9 --dotty --fg=71,0,40,44 --scale=4"
- " --secure=1 --structapp=\"1,2,as\\\"dfa'sdf\" --vwhitesp=3 -w 2"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_C25INTER") << true << 0.0f << ""
- << BARCODE_C25INTER << UNICODE_MODE // symbology-inputMode
- << "12345" << "" // text-primary
- << 0.0f << -1 << 2 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 3 --compliantheight -d '12345' --small --vers=2"
- << "zint.exe -b 3 --compliantheight -d \"12345\" --small --vers=2"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << ""
- << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode
- << "453678" << "" // text-primary
- << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(255, 255, 255, 0) << false // fgStr-cmyk
- << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting
- << true << false << true << false << false << 90 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_CHANNEL (bgStr FFFFFF00)") << false << 0.0f << ""
- << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode
- << "453678" << "" // text-primary
- << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "FFFFFF00" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting
- << true << false << true << false << false << 90 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_CHANNEL (bgStr 12345600)") << false << 0.0f << ""
- << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode
- << "453678" << "" // text-primary
- << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "12345600" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting
- << true << false << true << false << false << 90 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_CODE128") << false << 0.0f << ""
- << BARCODE_CODE128 << (UNICODE_MODE | EXTRA_ESCAPE_MODE) // symbology-inputMode
- << "1234\\^A56" << "" // text-primary
- << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << false << false << true << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 20 -d '1234\\^A56' --extraesc --notext --quietzones"
- << "zint.exe -b 20 -d \"1234\\^A56\" --extraesc --notext --quietzones"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << false << false << true << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 1 << 1 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting
- << true << false << false << true << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 23 --compliantheight -d '12345678901234567890123456789012'"
- " --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small"
- << "zint.exe -b 23 --compliantheight -d \"12345678901234567890123456789012\""
- " --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_CODE49") << true << 0.0f << ""
- << BARCODE_CODE49 << UNICODE_MODE // symbology-inputMode
- << "12345678901234567890" << "" // text-primary
- << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 24 --compliantheight -d '12345678901234567890'"
- << "zint.exe -b 24 --compliantheight -d \"12345678901234567890\""
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 2 << 4 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << true << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_DAFT") << false << 0.0f << ""
- << BARCODE_DAFT << UNICODE_MODE // symbology-inputMode
- << "daft" << "" // text-primary
- << 9.2f << -1 << 251 << 0 << 1.0f << 0.0f << false << 0.7f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(0x30, 0x31, 0x32, 0x33) << QColor(0xBF, 0xBE, 0xBD, 0xBC) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_DATAMATRIX (GS1)") << true << 0.0f << ""
- << BARCODE_DATAMATRIX << GS1_MODE // symbology-inputMode
- << "[20]12" << "" // text-primary
- << 0.0f << -1 << 0 << DM_SQUARE << 1.0f << 0.0f << false << 0.7f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << true << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 71 -d '[20]12' --gs1 --gssep --square"
- << "zint.exe -b 71 -d \"[20]12\" --gs1 --gssep --square"
- << "" << "" << "" << "";
- 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 << DM_ISO_144 << 1.0f << 0.0f << false << 0.7f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 71 --binary -d 'ABCDEFGH\\x01I' --dmiso144 --esc --fast"
- << "zint.exe -b 71 --binary -d \"ABCDEFGH\\x01I\" --dmiso144 --esc --fast"
- << "" << "" << "" << "";
- 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 << 0.0f << true << 0.9f << 1.0f // height-textGap
- << 3.0f << 2 << 1 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.7f << 1.0f // height-textGap
- << 0.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_DPD") << true << 0.0f << ""
- << BARCODE_DPD << UNICODE_MODE // symbology-inputMode
- << "1234567890123456789012345678" << "" // text-primary
- << 0.0f << -1 << 0 << 0 << 4.5f << 24.0f << true << 0.8f << 1.0f // height-textGap
- << 0.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.375 << 0 << 600 << 1 << 0 << 0 // xdimdp
- << "zint -b 96 --compliantheight -d '1234567890123456789012345678' --scalexdimdp=0.375,24"
- << "zint.exe -b 96 --compliantheight -d \"1234567890123456789012345678\" --scalexdimdp=0.375,24"
- << "" << "" << ""
- << "zint -b 96 --compliantheight -d '1234567890123456789012345678' --scalexdimdp=0.375mm,600dpi";
- QTest::newRow("BARCODE_EANX") << true << 0.0f << ""
- << BARCODE_EANX << UNICODE_MODE // symbology-inputMode
- << "123456789012+12" << "" // text-primary
- << 0.0f << -1 << 8 << 0 << 1.0f << 0.0f << true << 0.8f << 1.0f // height-textGap
- << 0.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 13 --addongap=8 --compliantheight -d '123456789012+12' --guarddescent=0"
- << "zint.exe -b 13 --addongap=8 --compliantheight -d \"123456789012+12\" --guarddescent=0"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_EANX (guardWhitespace/embedVectorFont") << true << 0.0f << ""
- << BARCODE_EANX << UNICODE_MODE // symbology-inputMode
- << "123456789012+12" << "" // text-primary
- << 0.0f << -1 << 8 << 0 << 1.0f << 0.0f << true << 0.8f << 1.0f // height-textGap
- << 0.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << true << true << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 13 --addongap=8 --compliantheight -d '123456789012+12' --embedfont --guarddescent=0 --guardwhitespace"
- << "zint.exe -b 13 --addongap=8 --compliantheight -d \"123456789012+12\" --embedfont --guarddescent=0 --guardwhitespace"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << true << false << true << 270 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 29 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.7f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << true << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 102 -d '1234' --dmre --vers=8"
- << "zint.exe -b 102 -d \"1234\" --dmre --vers=8"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 2 << 1 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << true << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_ITF14") << true << 0.0f << ""
- << BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode
- << "9212320967145" << "" // text-primary
- << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 89 --compliantheight -d '9212320967145'"
- << "zint.exe -b 89 --compliantheight -d \"9212320967145\""
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_ITF14 (border)") << true << 0.0f << ""
- << BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode
- << "9212320967145" << "" // text-primary
- << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 1 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 89 --border=1 --compliantheight -d '9212320967145'"
- << "zint.exe -b 89 --border=1 --compliantheight -d \"9212320967145\""
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << true << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << true << false << true << 0 // showText-rotateAngle
- << 0 << true << true << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_RMQR") << true << 0.0f << ""
- << BARCODE_RMQR << UNICODE_MODE // symbology-inputMode
- << "テ" << "" // text-primary
- << 30.0f << -1 << 8 << 0 << 1.0f << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 180 // showText-rotateAngle
- << 20 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 145 --eci=20 -d 'テ' --rotate=180 --vers=8"
- << "zint.exe -b 145 --eci=20 -d \"テ\" --rotate=180 --vers=8"
- << "" << "" << "" << "";
- 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 << 0.0f << true << 0.8f << 1.0f // height-textGap
- << 5.0f << 2 << 1 << "4" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "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"
- << "" << "" << "" << "";
- 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 << 0.0f << false << 0.8f << 1.0f // height-textGap
- << 6.5f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(0xEF, 0x29, 0x29) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting
- << true << false << false << true << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_FAIL_ALL << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 136 --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5"
- " --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror"
- << "zint.exe -b 136 --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5"
- " --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror"
- << "zint --barcode=136 --compliantheight --data='[11]901222[99]ABCDE' --fg=EF2929"
- " --guarddescent=6.5 --noquietzones --output='out.svg' --primary='12345670+1234' --small --werror"
- << "zint -b UPCE_CC --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5"
- " --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror"
- << "zint -b 136 --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5"
- " --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror"
- << "";
- QTest::newRow("BARCODE_VIN") << false << 2.0f << ""
- << BARCODE_VIN << UNICODE_MODE // symbology-inputMode
- << "12345678701234567" << "" // text-primary
- << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f << 1.2f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting
- << true << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 73 --bold -d '12345678701234567' --height=20 --small --textgap=1.2 --vers=1"
- << "zint.exe -b 73 --bold -d \"12345678701234567\" --height=20 --small --textgap=1.2 --vers=1"
- << "" << "" << "" << "";
- QTest::newRow("BARCODE_VIN (notext)") << false << 2.0f << ""
- << BARCODE_VIN << UNICODE_MODE // symbology-inputMode
- << "12345678701234567" << "" // text-primary
- << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f << 1.2f // height-textGap
- << 5.0f << 0 << 0 << "" // guardDescent-structAppID
- << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk
- << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting
- << false << false << false << false << true << 0 // showText-rotateAngle
- << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug
- << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp
- << "zint -b 73 -d '12345678701234567' --height=20 --notext --vers=1"
- << "zint.exe -b 73 -d \"12345678701234567\" --height=20 --notext --vers=1"
- << "" << "" << "" << "";
- }
- 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(float, dpmm);
- QFETCH(bool, dotty);
- QFETCH(float, dotSize);
- QFETCH(float, textGap);
- QFETCH(float, guardDescent);
- QFETCH(int, structAppCount);
- QFETCH(int, structAppIndex);
- QFETCH(QString, structAppID);
- QFETCH(QString, fgStr);
- QFETCH(QString, bgStr);
- 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(bool, guardWhitespace);
- QFETCH(bool, embedVectorFont);
- QFETCH(int, warnLevel);
- QFETCH(bool, debug);
- QFETCH(double, xdimdp_x_dim);
- QFETCH(int, xdimdp_x_dim_units);
- QFETCH(int, xdimdp_resolution);
- QFETCH(int, xdimdp_resolution_units);
- QFETCH(int, xdimdp_filetype);
- QFETCH(int, xdimdp_filetype_maxicode);
- QFETCH(QString, expected_cmd);
- QFETCH(QString, expected_win);
- QFETCH(QString, expected_longOptOnly);
- QFETCH(QString, expected_barcodeNames);
- QFETCH(QString, expected_noexe);
- QFETCH(QString, expected_xdimdp);
- 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.setDPMM(dpmm);
- bc.setDotty(dotty);
- bc.setDotSize(dotSize);
- bc.setTextGap(textGap);
- bc.setGuardDescent(guardDescent);
- bc.setStructApp(structAppCount, structAppIndex, structAppID);
- if (fgStr.isEmpty()) {
- bc.setFgColor(fgColor);
- } else {
- bc.setFgStr(fgStr);
- }
- if (bgStr.isEmpty()) {
- bc.setBgColor(bgColor);
- } else {
- bc.setBgStr(bgStr);
- }
- 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.setGuardWhitespace(guardWhitespace);
- bc.setEmbedVectorFont(embedVectorFont);
- bc.setWarnLevel(warnLevel);
- bc.setDebug(debug);
- cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
- autoHeight, heightPerRow, outfile);
- QCOMPARE(cmd, expected_cmd);
- cmd = bc.getAsCLI(true /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
- autoHeight, heightPerRow, outfile);
- QCOMPARE(cmd, expected_win);
- if (!expected_longOptOnly.isEmpty()) {
- cmd = bc.getAsCLI(false /*win*/, true /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
- autoHeight, heightPerRow, outfile);
- QCOMPARE(cmd, expected_longOptOnly);
- }
- if (!expected_barcodeNames.isEmpty()) {
- cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, true /*barcodeNames*/, false /*noEXE*/,
- autoHeight, heightPerRow, outfile);
- QCOMPARE(cmd, expected_barcodeNames);
- }
- if (!expected_noexe.isEmpty()) {
- cmd = bc.getAsCLI(true /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, true /*noEXE*/,
- autoHeight, heightPerRow, outfile);
- QCOMPARE(cmd, expected_noexe);
- }
- if (xdimdp_x_dim) {
- /* Avoid clang 14 error "no matching constructor for initialization" by initializing field-wise */
- struct Zint::QZintXdimDpVars vars;
- vars.x_dim = xdimdp_x_dim;
- vars.x_dim_units = xdimdp_x_dim_units;
- vars.resolution = xdimdp_resolution;
- vars.resolution_units = xdimdp_resolution_units;
- vars.filetype = xdimdp_filetype;
- vars.filetype_maxicode = xdimdp_filetype_maxicode;
- vars.set = 1;
- cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/,
- autoHeight, heightPerRow, outfile, &vars);
- QCOMPARE(cmd, expected_xdimdp);
- }
- }
- 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);
- }
- void qZintAndLibZintEqualTest_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 qZintAndLibZintEqualTest()
- {
- 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);
- }
- void barcodeNameTest_data()
- {
- QTest::addColumn<int>("symbology");
- QTest::addColumn<QString>("expected_name");
- QTest::newRow("BARCODE_MAXICODE") << BARCODE_MAXICODE << "BARCODE_MAXICODE";
- QTest::newRow("BARCODE_CODE128AB") << BARCODE_CODE128AB << "BARCODE_CODE128AB";
- QTest::newRow("BARCODE_CODE128B") << BARCODE_CODE128B << "BARCODE_CODE128AB";
- }
- void barcodeNameTest()
- {
- QFETCH(int, symbology);
- QFETCH(QString, expected_name);
- QString name = Zint::QZint::barcodeName(symbology);
- QCOMPARE(name, expected_name);
- }
- };
- #ifdef TESTQZINT_GUILESS
- QTEST_GUILESS_MAIN(TestQZint)
- #else
- QTEST_MAIN(TestQZint)
- #endif
- #include "test_qzint.moc"
- /* vim: set ts=4 sw=4 et : */
|