Feature: Labelprint für Kistenetiketten hinzugefügt

This commit is contained in:
2025-10-27 12:14:44 +01:00
parent 43bc416554
commit 14bae6c9ef
1068 changed files with 229014 additions and 1807 deletions

View File

@@ -0,0 +1,447 @@
<?php
/**
* DatamatrixTest.php
*
* @since 2015-02-21
* @category Library
* @package Barcode
* @author Nicola Asuni <info@tecnick.com>
* @copyright 2015-2024 Nicola Asuni - Tecnick.com LTD
* @license http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
* @link https://github.com/tecnickcom/tc-lib-barcode
*
* This file is part of tc-lib-barcode software library.
*/
namespace Test\Square;
use Test\TestUtil;
use PHPUnit\Framework\Attributes\DataProvider;
/**
* Datamatrix Barcode class test
*
* @since 2015-02-21
* @category Library
* @package Barcode
* @author Nicola Asuni <info@tecnick.com>
* @copyright 2015-2024 Nicola Asuni - Tecnick.com LTD
* @license http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
* @link https://github.com/tecnickcom/tc-lib-barcode
*/
class DatamatrixTest extends TestUtil
{
protected function getTestObject(): \Com\Tecnick\Barcode\Barcode
{
return new \Com\Tecnick\Barcode\Barcode();
}
public function testInvalidInput(): void
{
$this->bcExpectException('\\' . \Com\Tecnick\Barcode\Exception::class);
$barcode = $this->getTestObject();
$barcode->getBarcodeObj('DATAMATRIX', '');
}
public function testCapacityException(): void
{
$this->bcExpectException('\\' . \Com\Tecnick\Barcode\Exception::class);
$barcode = $this->getTestObject();
$code = str_pad('', 3000, 'X');
$barcode->getBarcodeObj('DATAMATRIX', $code);
}
public function testEncodeTXTC40shiftException(): void
{
$this->bcExpectException('\\' . \Com\Tecnick\Barcode\Exception::class);
$encode = new \Com\Tecnick\Barcode\Type\Square\Datamatrix\Encode();
$chr = -1;
$enc = -1;
$temp_cw = [];
$ptr = 0;
$encode->encodeTXTC40shift($chr, $enc, $temp_cw, $ptr);
}
public function testEncodeTXTC40Exception(): void
{
$this->bcExpectException('\\' . \Com\Tecnick\Barcode\Exception::class);
$encode = new \Com\Tecnick\Barcode\Type\Square\Datamatrix\Encode();
$data = "\x80";
$enc = \Com\Tecnick\Barcode\Type\Square\Datamatrix\Data::ENC_X12;
$temp_cw = [];
$ptr = 0;
$epos = 0;
$charset = [];
$encode->encodeTXTC40($data, $enc, $temp_cw, $ptr, $epos, $charset);
}
#[DataProvider('getGridDataProvider')]
public function testGetGrid(string $mode, string $code, mixed $expected): void
{
$barcode = $this->getTestObject();
$type = $barcode->getBarcodeObj($mode, $code);
$grid = $type->getGrid();
$this->assertEquals($expected, md5($grid));
}
/**
* @return array<array{string, string, string}>
*/
public static function getGridDataProvider(): array
{
return [
[
'DATAMATRIX',
'0&0&0&0&0&0&_',
'fffdfdaec33af0788d24cdfa8cba5ac6',
],
[
'DATAMATRIX',
'0&0&0&0&0&0&0',
'10d0faf5a6e7b71829f268218df7e6af',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3',
'75c6038d90476cec641ad07690989b36',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3x',
'f020e44d0926d17af7eb21febdb38d53',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3xyz',
'17420fbffefddb5f1b8abd0d05de724d',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3-',
'a63372ce839b51294964f0da0ae0f9f9',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3-xy',
'f65ab07c374c53e2a93016776041de42',
],
[
'DATAMATRIX',
'-=-1-=-2-=-3-=x',
'7a30efdf7616397a1ea2fd5fd95fed2c',
],
[
'DATAMATRIX',
'(400)BS2WZ64PA(00)0',
'9cb7f1c2aa5989909229ef8e4252d61d',
],
[
'DATAMATRIX',
'(400)BS2WZ64QA(00)0',
'0494f709138a1feef5a1c9f14852dbe5',
],
[
'DATAMATRIX',
'LD2B 1 CLNGP',
'f806889d1dbe0908dcfb530f86098041',
],
[
'DATAMATRIX',
'XXXXXXXXXNGP',
'c6f2b7b293a2943bae74f2a191ec4aea',
],
[
'DATAMATRIX',
'XXXXXXXXXXXXNGP',
'f7679d5a7ab4a8edf12571a6866d92bc',
],
[
'DATAMATRIX',
'ABCDABCDAB' . "\x80" . 'DABCD',
'39aca5ed58b922bee369e5ab8e3add8c',
],
[
'DATAMATRIX',
'123aabcdefghijklmnopqrstuvwxyzc',
'b2d1e957af10655d7a8c3bae86696314',
],
[
'DATAMATRIX',
'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq',
'c45bd372694ad7a20fca7d45f3d459ab',
],
[
'DATAMATRIX',
'abcdefghijklmnop',
'4fc7940fe3d19fca12454340c38e3421',
],
[
'DATAMATRIX',
'abcdefghijklmnopq',
'a452e658e3096d8187969cbdc930909c',
],
[
'DATAMATRIX',
'abcdefghij',
'8ec27153e5d173aa2cb907845334e68c',
],
[
'DATAMATRIX',
'30Q324343430794<OQQ',
'e67808f91114fb021851098c4cc65b88',
],
[
'DATAMATRIX',
'0123456789',
'cc1fd942bc919b2d09b3c7cf508c6ae4',
],
[
'DATAMATRIX',
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'c61d8ced313e2a2e79ab56eded67f11a',
],
[
'DATAMATRIX',
'10f27ce-acb7-4e4e-a7ae-a0b98da6ed4a',
'1a56c44e3977f1ac68057230181e49a8',
],
[
'DATAMATRIX',
'Hello World',
'e72650689027fe75d1f9377ec759c710',
],
[
'DATAMATRIX',
'https://github.com/tecnickcom/tc-lib-barcode',
'efed64acfa2ca29024446fa9816be696',
],
[
'DATAMATRIX',
'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdab'
. 'cdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd'
. 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdab'
. 'cdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd',
'4dc0efb6248b3802c2ab7cf123b884d0',
],
[
'DATAMATRIX',
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\',
'1d41ee32691ff75637224e4fbe68a626',
],
[
'DATAMATRIX',
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\'
. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\'
. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\',
'0b2921466e097ff9cc1ad63719430540',
],
[
'DATAMATRIX',
"\x80\x8A\x94\x9E",
'9300000cee5a5f7b3b48145d44aa7fff',
],
[
'DATAMATRIX',
'!"£$%^&*()-+_={}[]\'#@~;:/?,.<>|',
'4993e149fd20569c8a4f0d758b6dfa76',
],
[
'DATAMATRIX',
'!"£$',
'792181edb48c6722217dc7e2e4cd4095',
],
[
'DATAMATRIX',
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\1234567890',
'7360a5a6c25476711139ae1244f56c29',
],
[
'DATAMATRIX',
"\xFE\xFD"
. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\'
. "\xFC\xFB",
'0f078e5e5735396312245740484fa6d1',
],
[
'DATAMATRIX',
'aABCDEFG',
'f074dee3f0f386d9b2f30b1ce4ad08a8',
],
[
'DATAMATRIX',
'123 45678',
'6c2e6503625e408fe9a4e392743f31a8',
],
[
'DATAMATRIX',
'DATA MATRIX',
'3ba4f4ef8449d795813b353ddcce4d23',
],
[
'DATAMATRIX',
'123ABCD89',
'7ce2f8433b82c16e80f4a4c59cad5d10',
],
[
'DATAMATRIX',
'AB/C123-X',
'703318e1964c63d5d500d14a821827cd',
],
[
'DATAMATRIX',
str_pad('', 300, "\xFE\xFD\xFC\xFB"),
'e524bb17821d0461f3db6f313d35018f',
],
[
'DATAMATRIX',
'ec:b47' . "\x7F" . '4#P d*b}gI2#DB|hl{!~[EYH*=cmR{lf'
. "\x7F" . '=gcGIa.st286. #*"!eG[.Ryr?Kn,1mIyQqC3 6\'3N>',
'57fbb9bfb7d542e2e5eadb615e6be549',
],
[
'DATAMATRIX',
'eA211101A2raJTGL/r9o93CVk4gtpEvWd2A2Qz8jvPc7l8ybD3m'
. 'Wel91ih727kldinPeHJCjhr7fIBX1KQQfsN7BFMX00nlS8FlZG+',
'b2f0d45920c7da5b298bbab5cff5d402',
],
// Square
[
'DATAMATRIX,S',
"\xFF\xFE\xFD\xFC\xFB\xFA\xF9\xF8\xF7\xF6"
. "\xF5\xF4\xF3\xF2\xF1\xF0\xEF\xEE\xED\xEC"
. "\xEB\xEA\xE9\xE8\xE7\xE6\xE5\xE4\xE3\xE2"
. "\xE1\xE0\xDF\xDE\xDD\xDC\xDB\xDA\xD9\xD8"
. "\xD7\xD6\xD5\xD4\xD3\xD2\xD1\xD0\xCF\xCE"
. "\xCD\xCC\xCB\xCA\xC9\xC8\xC7\xC6\xC5\xC4"
. "\xC3\xC2\xC1\xC0\xBF\xBE\xBD\xBC\xBB\xBA"
. "\xB9\xB8\xB7\xB6\xB5\xB4\xB3\xB2\xB1\xB0"
. "\xAF\xAE\xAD\xAC\xAB\xAA\xA9\xA8\xA7\xA6"
. "\xA5\xA4\xA3\xA2\xA1\xA0\x9F\x9E\x9D\x9C"
. "\x9B\x9A\x99\x98\x97\x96\x95\x94\x93\x92"
. "\x91\x90\x8F\x8E\x8D\x8C\x8B\x8A\x89\x88"
. "\x87\x86\x85\x84\x83\x82\x81\x80\x7F\x7E"
. "\x7D\x7C\x7B\x7A\x79\x78\x77\x76\x75\x74"
. "\x73\x72\x71\x70\x6F\x6E\x6D\x6C\x6B\x6A"
. "\x69\x68\x67\x66\x65\x64\x63\x62\x61\x60"
. "\x5F\x5E\x5D\x5C\x5B\x5A\x59\x58\x57\x56"
. "\x55\x54\x53\x52\x51\x50\x4F\x4E\x4D\x4C"
. "\x4B\x4A\x49\x48\x47\x46\x45\x44\x43\x42"
. "\x41\x40\x3F\x3E\x3D\x3C\x3B\x3A\x39\x38"
. "\x37\x36\x35\x34\x33\x32\x31\x30\x2F\x2E"
. "\x2D\x2C\x2B\x2A\x29\x28\x27\x26\x25\x24"
. "\x23\x22\x21\x20\x1F\x1E\x1D\x1C\x1B\x1A"
. "\x19\x18\x17\x16\x15\x14\x13\x12\x11\x10"
. "\x0F\x0E\x0D\x0C\x0B\x0A\x09\x08\x07\x06"
. "\x05\x04\x03\x02\x01",
'514963c4fde0cee7ff91f76dd56015cc',
],
// Rectangular shape
[
'DATAMATRIX,R',
'01234567890',
'd3811e018f960beed6d3fa5e675e290e',
],
[
'DATAMATRIX,R',
'01234567890123456789',
'fe3ecb042dabc4b40c5017e204df105b',
],
[
'DATAMATRIX,R',
'012345678901234567890123456789',
'3f8e9aa4413b90f7e1c2e85b4471fd20',
],
[
'DATAMATRIX,R',
'0123456789012345678901234567890123456789',
'b748b02c1c4cae621a84c8dbba97c710',
],
// Rectangular GS1
[
'DATAMATRIX,R,GS1',
"\xE8" . '01034531200000111719112510ABCD1234',
'f55524d239fc95072d99eafe5363cfeb',
],
[
'DATAMATRIX,R,GS1',
"\xE8" . '01095011010209171719050810ABCD1234' . "\xE8" . '2110',
'e17f2a052271a18cdc00b161908eccb9',
],
[
'DATAMATRIX,R,GS1',
"\xE8" . '01034531200000111712050810ABCD1234' . "\xE8" . '4109501101020917',
'31759950f3253805b100fedf3e536575',
],
// Square GS1
[
'DATAMATRIX,S,GS1',
"\xE8" . '01034531200000111719112510ABCD1234',
'c9efb69a62114fb6a3d2b52f139a372a',
],
[
'DATAMATRIX,S,GS1',
"\xE8" . '01095011010209171719050810ABCD1234' . "\xE8" . '2110',
'9630bdba9fc79b4a4911fc465aa08951',
],
[
'DATAMATRIX,S,GS1',
"\xE8" . '01034531200000111712050810ABCD1234' . "\xE8" . '4109501101020917',
'a29a330a01cce34a346cf7049e2259ee',
],
// Different encoding datamatrix
[
'DATAMATRIX,S,N,ASCII',
'01234567890',
'ac7dd9e1ebdb42d07fe928fb33cd307b'
],
[
'DATAMATRIX,S,N,C40',
'01234567890',
'958a7a3bcd036d7135489eb703a25633'
],
[
'DATAMATRIX,S,N,TXT',
'01234567890',
'057981dfbf527b029ae59d65fb55f61d'
],
[
'DATAMATRIX,S,N,X12',
'01234567890',
'8d75b0fcfb2d0977abd95004a6ba98dd'
],
[
'DATAMATRIX,S,N,EDF',
'01234567890',
'989eab3ca16c97e05dd2307bef32f64b'
],
[
'DATAMATRIX,S,N,BASE256',
'01234567890',
'8b4f688a774130bc654e39dfcfadb482'
],
[
'DATAMATRIX,S,GS1,C40',
"\xE8" . '01095011010209171719050810ABCD1234' . "\xE8" . '2110',
'ba117111dfa40a40e1bb968c719d2eef'
]
];
}
#[DataProvider('getStringDataProvider')]
public function testStrings(string $code): void
{
$barcode = $this->getTestObject();
$type = $barcode->getBarcodeObj('DATAMATRIX', $code);
$this->assertNotNull($type); // @phpstan-ignore method.alreadyNarrowedType
}
/**
* @return array<array{string}>
*/
public static function getStringDataProvider()
{
return \Test\TestStrings::$data;
}
}