summaryrefslogtreecommitdiff
path: root/vendor/chillerlan/php-qrcode/tests
diff options
context:
space:
mode:
authorwn_ <invalid@email.com>2024-11-21 17:27:15 +0000
committerwn_ <invalid@email.com>2024-11-21 17:34:32 +0000
commit64a36970d6c4a90c1ab738e0b859b4fffa18c603 (patch)
treebf385b721be5b1c6067040ce65f0b892bb1c9225 /vendor/chillerlan/php-qrcode/tests
parent1e14fc0fd957cea2ab176d5132c3fe5329991c17 (diff)
Bump 'chillerlan/php-qrcode' to 5.0.x.
* Maintains PHP `7.4` compatibility and adds PHP `8.4` compatibility * The `4.4.x` branch does the same, but I didn't see any reason not to go to `5.0.x`. * https://github.com/chillerlan/php-qrcode/releases
Diffstat (limited to 'vendor/chillerlan/php-qrcode/tests')
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php61
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php52
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php127
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php71
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php42
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php61
-rwxr-xr-xvendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php377
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php54
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php42
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php99
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php89
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php86
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php59
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php140
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php76
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/custom45
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/fpdfbin2859 -> 0 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/gif1
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/html31
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/imagickbin348 -> 0 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/jpg1
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/json1
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/png1
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/svg1
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/samples/text29
-rwxr-xr-xvendor/chillerlan/php-qrcode/tests/QRCodeTest.php152
-rw-r--r--vendor/chillerlan/php-qrcode/tests/QROptionsTest.php144
27 files changed, 0 insertions, 1842 deletions
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php b/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php
deleted file mode 100644
index 10847633c..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/AlphaNumTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-/**
- * Class AlphaNumTest
- *
- * @filesource AlphaNumTest.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\Data\{AlphaNum, QRCodeDataException, QRDataInterface};
-use chillerlan\QRCode\QROptions;
-
-/**
- * Tests the AlphaNum class
- */
-final class AlphaNumTest extends DatainterfaceTestAbstract{
-
- /** @internal */
- protected string $testdata = '0 $%*+-./:';
-
- /** @internal */
- protected array $expected = [
- 32, 80, 36, 212, 252, 15, 175, 251,
- 176, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 112, 43, 9, 248, 200, 194, 75, 25,
- 205, 173, 154, 68, 191, 16, 128,
- 92, 112, 20, 198, 27
- ];
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getDataInterfaceInstance(QROptions $options):QRDataInterface{
- return new AlphaNum($options);
- }
-
- /**
- * Tests if an exception is thrown when an invalid character is encountered
- */
- public function testGetCharCodeException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('illegal char: "#" [35]');
-
- $this->dataInterface->setData('#');
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php b/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php
deleted file mode 100644
index 295603200..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/ByteTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Class ByteTest
- *
- * @filesource ByteTest.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\Data\Byte;
-use chillerlan\QRCode\Data\QRDataInterface;
-use chillerlan\QRCode\QROptions;
-
-/**
- * Tests the Byte class
- */
-final class ByteTest extends DatainterfaceTestAbstract{
-
- /** @internal */
- protected string $testdata = '[¯\_(ツ)_/¯]';
-
- /** @internal */
- protected array $expected = [
- 64, 245, 188, 42, 245, 197, 242, 142,
- 56, 56, 66, 149, 242, 252, 42, 245,
- 208, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 79, 89, 226, 48, 209, 89, 151, 1,
- 12, 73, 42, 163, 11, 34, 255, 205,
- 21, 47, 250, 101
- ];
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getDataInterfaceInstance(QROptions $options):QRDataInterface{
- return new Byte($options);
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php b/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
deleted file mode 100644
index d533c3f17..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/**
- * Class DatainterfaceTestAbstract
- *
- * @filesource DatainterfaceTestAbstract.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\QROptions;
-use PHPUnit\Framework\TestCase;
-use chillerlan\QRCode\Data\{QRCodeDataException, QRDataInterface, QRMatrix};
-use ReflectionClass;
-
-use function str_repeat;
-
-/**
- * The data interface test abstract
- */
-abstract class DatainterfaceTestAbstract extends TestCase{
-
- /** @internal */
- protected ReflectionClass $reflection;
- /** @internal */
- protected QRDataInterface $dataInterface;
- /** @internal */
- protected string $testdata;
- /** @internal */
- protected array $expected;
-
- /**
- * @internal
- */
- protected function setUp():void{
- $this->dataInterface = $this->getDataInterfaceInstance(new QROptions(['version' => 4]));
- $this->reflection = new ReflectionClass($this->dataInterface);
- }
-
- /**
- * Returns a data interface instance
- *
- * @internal
- */
- abstract protected function getDataInterfaceInstance(QROptions $options):QRDataInterface;
-
- /**
- * Verifies the data interface instance
- */
- public function testInstance():void{
- $this::assertInstanceOf(QRDataInterface::class, $this->dataInterface);
- }
-
- /**
- * Tests ecc masking and verifies against a sample
- */
- public function testMaskEcc():void{
- $this->dataInterface->setData($this->testdata);
-
- $maskECC = $this->reflection->getMethod('maskECC');
- $maskECC->setAccessible(true);
-
- $this::assertSame($this->expected, $maskECC->invoke($this->dataInterface));
- }
-
- /**
- * @see testInitMatrix()
- * @internal
- * @return int[][]
- */
- public function MaskPatternProvider():array{
- return [[0], [1], [2], [3], [4], [5], [6], [7]];
- }
-
- /**
- * Tests initializing the data matrix
- *
- * @dataProvider MaskPatternProvider
- */
- public function testInitMatrix(int $maskPattern):void{
- $this->dataInterface->setData($this->testdata);
-
- $matrix = $this->dataInterface->initMatrix($maskPattern);
-
- $this::assertInstanceOf(QRMatrix::class, $matrix);
- $this::assertSame($maskPattern, $matrix->maskPattern());
- }
-
- /**
- * Tests getting the minimum QR version for the given data
- */
- public function testGetMinimumVersion():void{
- $this->dataInterface->setData($this->testdata);
-
- $getMinimumVersion = $this->reflection->getMethod('getMinimumVersion');
- $getMinimumVersion->setAccessible(true);
-
- $this::assertSame(1, $getMinimumVersion->invoke($this->dataInterface));
- }
-
- /**
- * Tests if an exception is thrown when the data exceeds the maximum version while auto detecting
- */
- public function testGetMinimumVersionException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('data exceeds');
-
- $this->dataInterface = $this->getDataInterfaceInstance(new QROptions(['version' => QRCode::VERSION_AUTO]));
- $this->dataInterface->setData(str_repeat($this->testdata, 1337));
- }
-
- /**
- * Tests if an exception is thrown on data overflow
- */
- public function testCodeLengthOverflowException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('code length overflow');
-
- $this->dataInterface->setData(str_repeat($this->testdata, 1337));
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php b/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php
deleted file mode 100644
index 484f388dc..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/KanjiTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Class KanjiTest
- *
- * @filesource KanjiTest.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\QROptions;
-use chillerlan\QRCode\Data\{Kanji, QRCodeDataException, QRDataInterface};
-
-/**
- * Tests the Kanji class
- */
-final class KanjiTest extends DatainterfaceTestAbstract{
-
- /** @internal */
- protected string $testdata = '茗荷茗荷茗荷茗荷茗荷';
-
- /** @internal */
- protected array $expected = [
- 128, 173, 85, 26, 95, 85, 70, 151,
- 213, 81, 165, 245, 84, 105, 125, 85,
- 26, 92, 0, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 195, 11, 221, 91, 141, 220, 163, 46,
- 165, 37, 163, 176, 79, 0, 64, 68,
- 96, 113, 54, 191
- ];
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getDataInterfaceInstance(QROptions $options):QRDataInterface{
- return new Kanji($options);
- }
-
- /**
- * Tests if an exception is thrown when an invalid character is encountered
- */
- public function testIllegalCharException1():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('illegal char at 1 [16191]');
-
- $this->dataInterface->setData('ÃÃ');
- }
-
- /**
- * Tests if an exception is thrown when an invalid character is encountered
- */
- public function testIllegalCharException2():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('illegal char at 1');
-
- $this->dataInterface->setData('Ã');
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php b/vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php
deleted file mode 100644
index d286b41dc..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/MaskPatternTesterTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Class MaskPatternTesterTest
- *
- * @filesource MaskPatternTesterTest.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\QROptions;
-use chillerlan\QRCode\Data\{Byte, MaskPatternTester};
-use PHPUnit\Framework\TestCase;
-
-/**
- * MaskPatternTester coverage test
- */
-final class MaskPatternTesterTest extends TestCase{
-
- /**
- * Tests getting the best mask pattern
- */
- public function testMaskpattern():void{
- $dataInterface = new Byte(new QROptions(['version' => 10]), 'test');
-
- $this::assertSame(3, (new MaskPatternTester($dataInterface))->getBestMaskPattern());
- }
-
- /**
- * Tests getting the penalty value for a given mask pattern
- */
- public function testMaskpatternID():void{
- $dataInterface = new Byte(new QROptions(['version' => 10]), 'test');
-
- $this::assertSame(4243, (new MaskPatternTester($dataInterface))->testPattern(3));
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php b/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php
deleted file mode 100644
index dcd9507ab..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/NumberTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-/**
- * Class NumberTest
- *
- * @filesource NumberTest.php
- * @created 24.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\QROptions;
-use chillerlan\QRCode\Data\{Number, QRCodeDataException, QRDataInterface};
-
-/**
- * Tests the Number class
- */
-final class NumberTest extends DatainterfaceTestAbstract{
-
- /** @internal */
- protected string $testdata = '0123456789';
-
- /** @internal */
- protected array $expected = [
- 16, 40, 12, 86, 106, 105, 0, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 17, 236, 17, 236, 17, 236, 17, 236,
- 201, 141, 102, 116, 238, 162, 239, 230,
- 222, 37, 79, 192, 42, 109, 188, 72,
- 89, 63, 168, 151
- ];
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getDataInterfaceInstance(QROptions $options):QRDataInterface{
- return new Number($options);
- }
-
- /**
- * Tests if an exception is thrown when an invalid character is encountered
- */
- public function testGetCharCodeException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('illegal char: "#" [35]');
-
- $this->dataInterface->setData('#');
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php b/vendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php
deleted file mode 100755
index 68b31a5de..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Data/QRMatrixTest.php
+++ /dev/null
@@ -1,377 +0,0 @@
-<?php
-/**
- * Class QRMatrixTest
- *
- * @filesource QRMatrixTest.php
- * @created 17.11.2017
- * @package chillerlan\QRCodeTest\Data
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Data;
-
-use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\QROptions;
-use chillerlan\QRCode\Data\{QRCodeDataException, QRMatrix};
-use PHPUnit\Framework\TestCase;
-use ReflectionClass;
-
-/**
- * Tests the QRMatix class
- */
-final class QRMatrixTest extends TestCase{
-
- /** @internal */
- protected const version = 40;
- /** @internal */
- protected QRMatrix $matrix;
-
- /**
- * invokes a QRMatrix object
- *
- * @internal
- */
- protected function setUp():void{
- $this->matrix = $this->getMatrix($this::version);
- }
-
- /**
- * shortcut
- *
- * @internal
- */
- protected function getMatrix(int $version):QRMatrix{
- return new QRMatrix($version, QRCode::ECC_L);
- }
-
- /**
- * Validates the QRMatrix instance
- */
- public function testInstance():void{
- $this::assertInstanceOf(QRMatrix::class, $this->matrix);
- }
-
- /**
- * Tests if an exception is thrown when an invalid QR version was given
- */
- public function testInvalidVersionException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('invalid QR Code version');
-
- $this->matrix = new QRMatrix(42, 0);
- }
-
- /**
- * Tests if an exception is thrown when an invalid ECC level was given
- */
- public function testInvalidEccException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('invalid ecc level');
-
- $this->matrix = new QRMatrix(1, 42);
- }
-
- /**
- * Tests if size() returns the actual matrix size/count
- */
- public function testSize():void{
- $this::assertCount($this->matrix->size(), $this->matrix->matrix());
- }
-
- /**
- * Tests if version() returns the current (given) version
- */
- public function testVersion():void{
- $this::assertSame($this::version, $this->matrix->version());
- }
-
- /**
- * Tests if eccLevel() returns the current (given) ECC level
- */
- public function testECC():void{
- $this::assertSame(QRCode::ECC_L, $this->matrix->eccLevel());
- }
-
- /**
- * Tests if maskPattern() returns the current (or default) mask pattern
- */
- public function testMaskPattern():void{
- $this::assertSame(-1, $this->matrix->maskPattern()); // default
-
- // @todo: actual mask pattern after mapData()
- }
-
- /**
- * Tests the set(), get() and check() methods
- */
- public function testGetSetCheck():void{
- $this->matrix->set(10, 10, true, QRMatrix::M_TEST);
- $this::assertSame(65280, $this->matrix->get(10, 10));
- $this::assertTrue($this->matrix->check(10, 10));
-
- $this->matrix->set(20, 20, false, QRMatrix::M_TEST);
- $this::assertSame(255, $this->matrix->get(20, 20));
- $this::assertFalse($this->matrix->check(20, 20));
- }
-
- /**
- * Version data provider for several pattern tests
- *
- * @return int[][]
- * @internal
- */
- public function versionProvider():array{
- $versions = [];
-
- for($i = 1; $i <= 40; $i++){
- $versions[] = [$i];
- }
-
- return $versions;
- }
-
- /**
- * Tests setting the dark module and verifies its position
- *
- * @dataProvider versionProvider
- */
- public function testSetDarkModule(int $version):void{
- $matrix = $this->getMatrix($version)->setDarkModule();
-
- $this::assertSame(QRMatrix::M_DARKMODULE << 8, $matrix->get(8, $matrix->size() - 8));
- }
-
- /**
- * Tests setting the finder patterns and verifies their positions
- *
- * @dataProvider versionProvider
- */
- public function testSetFinderPattern(int $version):void{
- $matrix = $this->getMatrix($version)->setFinderPattern();
-
- $this::assertSame(QRMatrix::M_FINDER << 8, $matrix->get(0, 0));
- $this::assertSame(QRMatrix::M_FINDER << 8, $matrix->get(0, $matrix->size() - 1));
- $this::assertSame(QRMatrix::M_FINDER << 8, $matrix->get($matrix->size() - 1, 0));
- }
-
- /**
- * Tests the separator patterns and verifies their positions
- *
- * @dataProvider versionProvider
- */
- public function testSetSeparators(int $version):void{
- $matrix = $this->getMatrix($version)->setSeparators();
-
- $this::assertSame(QRMatrix::M_SEPARATOR, $matrix->get(7, 0));
- $this::assertSame(QRMatrix::M_SEPARATOR, $matrix->get(0, 7));
- $this::assertSame(QRMatrix::M_SEPARATOR, $matrix->get(0, $matrix->size() - 8));
- $this::assertSame(QRMatrix::M_SEPARATOR, $matrix->get($matrix->size() - 8, 0));
- }
-
- /**
- * Tests the alignment patterns and verifies their positions - version 1 (no pattern) skipped
- *
- * @dataProvider versionProvider
- */
- public function testSetAlignmentPattern(int $version):void{
-
- if($version === 1){
- $this->markTestSkipped('N/A');
-
- /** @noinspection PhpUnreachableStatementInspection */
- return;
- }
-
- $matrix = $this
- ->getMatrix($version)
- ->setFinderPattern()
- ->setAlignmentPattern()
- ;
-
- $alignmentPattern = (new ReflectionClass(QRMatrix::class))->getConstant('alignmentPattern')[$version];
-
- foreach($alignmentPattern as $py){
- foreach($alignmentPattern as $px){
-
- if($matrix->get($px, $py) === QRMatrix::M_FINDER << 8){
- $this::assertSame(QRMatrix::M_FINDER << 8, $matrix->get($px, $py), 'skipped finder pattern');
- continue;
- }
-
- $this::assertSame(QRMatrix::M_ALIGNMENT << 8, $matrix->get($px, $py));
- }
- }
-
- }
-
- /**
- * Tests the timing patterns and verifies their positions
- *
- * @dataProvider versionProvider
- */
- public function testSetTimingPattern(int $version):void{
-
- $matrix = $this
- ->getMatrix($version)
- ->setAlignmentPattern()
- ->setTimingPattern()
- ;
-
- $size = $matrix->size();
-
- for($i = 7; $i < $size - 7; $i++){
- if($i % 2 === 0){
- $p1 = $matrix->get(6, $i);
-
- if($p1 === QRMatrix::M_ALIGNMENT << 8){
- $this::assertSame(QRMatrix::M_ALIGNMENT << 8, $p1, 'skipped alignment pattern');
- continue;
- }
-
- $this::assertSame(QRMatrix::M_TIMING << 8, $p1);
- $this::assertSame(QRMatrix::M_TIMING << 8, $matrix->get($i, 6));
- }
- }
- }
-
- /**
- * Tests the version patterns and verifies their positions - version < 7 skipped
- *
- * @dataProvider versionProvider
- */
- public function testSetVersionNumber(int $version):void{
-
- if($version < 7){
- $this->markTestSkipped('N/A');
-
- /** @noinspection PhpUnreachableStatementInspection */
- return;
- }
-
- $matrix = $this->getMatrix($version)->setVersionNumber(true);
-
- $this::assertSame(QRMatrix::M_VERSION, $matrix->get($matrix->size() - 9, 0));
- $this::assertSame(QRMatrix::M_VERSION, $matrix->get($matrix->size() - 11, 5));
- $this::assertSame(QRMatrix::M_VERSION, $matrix->get(0, $matrix->size() - 9));
- $this::assertSame(QRMatrix::M_VERSION, $matrix->get(5, $matrix->size() - 11));
- }
-
- /**
- * Tests the format patterns and verifies their positions
- *
- * @dataProvider versionProvider
- */
- public function testSetFormatInfo(int $version):void{
- $matrix = $this->getMatrix($version)->setFormatInfo(0, true);
-
- $this::assertSame(QRMatrix::M_FORMAT, $matrix->get(8, 0));
- $this::assertSame(QRMatrix::M_FORMAT, $matrix->get(0, 8));
- $this::assertSame(QRMatrix::M_FORMAT, $matrix->get($matrix->size() - 1, 8));
- $this::assertSame(QRMatrix::M_FORMAT, $matrix->get($matrix->size() - 8, 8));
- }
-
- /**
- * Tests the quiet zone pattern and verifies its position
- *
- * @dataProvider versionProvider
- */
- public function testSetQuietZone(int $version):void{
- $matrix = $this->getMatrix($version);
-
- $size = $matrix->size();
- $q = 5;
-
- $matrix->set(0, 0, true, QRMatrix::M_TEST);
- $matrix->set($size - 1, $size - 1, true, QRMatrix::M_TEST);
-
- $matrix->setQuietZone($q);
-
- $this::assertCount($size + 2 * $q, $matrix->matrix());
- $this::assertCount($size + 2 * $q, $matrix->matrix()[$size - 1]);
-
- $size = $matrix->size();
- $this::assertSame(QRMatrix::M_QUIETZONE, $matrix->get(0, 0));
- $this::assertSame(QRMatrix::M_QUIETZONE, $matrix->get($size - 1, $size - 1));
-
- $this::assertSame(QRMatrix::M_TEST << 8, $matrix->get($q, $q));
- $this::assertSame(QRMatrix::M_TEST << 8, $matrix->get($size - 1 - $q, $size - 1 - $q));
- }
-
- /**
- * Tests if an exception is thrown in an attempt to create it before data was written
- */
- public function testSetQuietZoneException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('use only after writing data');
-
- $this->matrix->setQuietZone();
- }
-
- public function testSetLogoSpaceOrientation():void{
- $o = new QROptions;
- $o->version = 10;
- $o->eccLevel = QRCode::ECC_H;
- $o->addQuietzone = false;
-
- $matrix = (new QRCode($o))->getMatrix('testdata');
- // also testing size adjustment to uneven numbers
- $matrix->setLogoSpace(20, 14);
-
- // NW corner
- $this::assertNotSame(QRMatrix::M_LOGO, $matrix->get(17, 20));
- $this::assertSame(QRMatrix::M_LOGO, $matrix->get(18, 21));
-
- // SE corner
- $this::assertSame(QRMatrix::M_LOGO, $matrix->get(38, 35));
- $this::assertNotSame(QRMatrix::M_LOGO, $matrix->get(39, 36));
- }
-
- public function testSetLogoSpacePosition():void{
- $o = new QROptions;
- $o->version = 10;
- $o->eccLevel = QRCode::ECC_H;
- $o->addQuietzone = true;
- $o->quietzoneSize = 10;
-
- $m = (new QRCode($o))->getMatrix('testdata');
-
- // logo space should not overwrite quiet zone & function patterns
- $m->setLogoSpace(21, 21, -10, -10);
- $this::assertSame(QRMatrix::M_QUIETZONE, $m->get(9, 9));
- $this::assertSame(QRMatrix::M_FINDER << 8, $m->get(10, 10));
- $this::assertSame(QRMatrix::M_FINDER << 8, $m->get(16, 16));
- $this::assertSame(QRMatrix::M_SEPARATOR, $m->get(17, 17));
- $this::assertSame(QRMatrix::M_FORMAT << 8, $m->get(18, 18));
- $this::assertSame(QRMatrix::M_LOGO, $m->get(19, 19));
- $this::assertSame(QRMatrix::M_LOGO, $m->get(20, 20));
- $this::assertNotSame(QRMatrix::M_LOGO, $m->get(21, 21));
-
- // i just realized that setLogoSpace() could be called multiple times
- // on the same instance and i'm not going to do anything about it :P
- $m->setLogoSpace(21, 21, 45, 45);
- $this::assertNotSame(QRMatrix::M_LOGO, $m->get(54, 54));
- $this::assertSame(QRMatrix::M_LOGO, $m->get(55, 55));
- $this::assertSame(QRMatrix::M_QUIETZONE, $m->get(67, 67));
- }
-
- public function testSetLogoSpaceInvalidEccException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('ECC level "H" required to add logo space');
-
- (new QRCode)->getMatrix('testdata')->setLogoSpace(50, 50);
- }
-
- public function testSetLogoSpaceMaxSizeException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('logo space exceeds the maximum error correction capacity');
-
- $o = new QROptions;
- $o->version = 5;
- $o->eccLevel = QRCode::ECC_H;
-
- (new QRCode($o))->getMatrix('testdata')->setLogoSpace(50, 50);
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php b/vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php
deleted file mode 100644
index e9479a5c6..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Helpers/BitBufferTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Class BitBufferTest
- *
- * @filesource BitBufferTest.php
- * @created 08.02.2016
- * @package chillerlan\QRCodeTest\Helpers
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2015 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Helpers;
-
-use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\Helpers\BitBuffer;
-use PHPUnit\Framework\TestCase;
-
-/**
- * BitBuffer coverage test
- */
-final class BitBufferTest extends TestCase{
-
- protected BitBuffer $bitBuffer;
-
- protected function setUp():void{
- $this->bitBuffer = new BitBuffer;
- }
-
- public function bitProvider():array{
- return [
- 'number' => [QRCode::DATA_NUMBER, 16],
- 'alphanum' => [QRCode::DATA_ALPHANUM, 32],
- 'byte' => [QRCode::DATA_BYTE, 64],
- 'kanji' => [QRCode::DATA_KANJI, 128],
- ];
- }
-
- /**
- * @dataProvider bitProvider
- */
- public function testPut(int $data, int $value):void{
- $this->bitBuffer->put($data, 4);
- $this::assertSame($value, $this->bitBuffer->getBuffer()[0]);
- $this::assertSame(4, $this->bitBuffer->getLength());
- }
-
- public function testClear():void{
- $this->bitBuffer->clear();
- $this::assertSame([], $this->bitBuffer->getBuffer());
- $this::assertSame(0, $this->bitBuffer->getLength());
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php b/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php
deleted file mode 100644
index b0f3f4aa7..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Helpers/PolynomialTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Class PolynomialTest
- *
- * @filesource PolynomialTest.php
- * @created 09.02.2016
- * @package chillerlan\QRCodeTest\Helpers
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2015 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Helpers;
-
-use chillerlan\QRCode\Helpers\Polynomial;
-use chillerlan\QRCode\QRCodeException;
-use PHPUnit\Framework\TestCase;
-
-/**
- * Polynomial coverage test
- */
-final class PolynomialTest extends TestCase{
-
- protected Polynomial $polynomial;
-
- protected function setUp():void{
- $this->polynomial = new Polynomial;
- }
-
- public function testGexp():void{
- $this::assertSame(142, $this->polynomial->gexp(-1));
- $this::assertSame(133, $this->polynomial->gexp(128));
- $this::assertSame(2, $this->polynomial->gexp(256));
- }
-
- public function testGlogException():void{
- $this->expectException(QRCodeException::class);
- $this->expectExceptionMessage('log(0)');
-
- $this->polynomial->glog(0);
- }
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php
deleted file mode 100644
index a3ab0f5b9..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRFpdfTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * Class QRFpdfTest
- *
- * @filesource QRFpdfTest.php
- * @created 03.06.2020
- * @package chillerlan\QRCodeTest\Output
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2020 smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use FPDF;
-use chillerlan\QRCode\Output\{QRFpdf, QROutputInterface};
-use chillerlan\QRCode\{QRCode, QROptions};
-
-use function class_exists, substr;
-
-/**
- * Tests the QRFpdf output module
- */
-class QRFpdfTest extends QROutputTestAbstract{
-
- /**
- * @inheritDoc
- * @internal
- */
- public function setUp():void{
-
- if(!class_exists(FPDF::class)){
- $this->markTestSkipped('FPDF not available');
-
- /** @noinspection PhpUnreachableStatementInspection */
- return;
- }
-
- parent::setUp();
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getOutputInterface(QROptions $options):QROutputInterface{
- return new QRFpdf($options, $this->matrix);
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- public function types():array{
- return [
- 'fpdf' => [QRCode::OUTPUT_FPDF],
- ];
- }
-
- /**
- * @inheritDoc
- */
- public function testSetModuleValues():void{
-
- $this->options->moduleValues = [
- // data
- 1024 => [0, 0, 0],
- 4 => [255, 255, 255],
- ];
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $this->outputInterface->dump();
-
- $this::assertTrue(true); // tricking the code coverage
- }
-
- /**
- * @inheritDoc
- * @dataProvider types
- */
- public function testRenderImage(string $type):void{
- $this->options->outputType = $type;
- $this->options->imageBase64 = false;
-
- // substr() to avoid CreationDate
- $expected = substr(file_get_contents(__DIR__.'/samples/'.$type), 0, 2500);
- $actual = substr((new QRCode($this->options))->render('test'), 0, 2500);
-
- $this::assertSame($expected, $actual);
- }
-
- public function testOutputGetResource():void{
- $this->options->returnResource = true;
- $this->outputInterface = $this->getOutputInterface($this->options);
-
- $this::assertInstanceOf(FPDF::class, $this->outputInterface->dump());
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php
deleted file mode 100644
index 4da150b83..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Class QRImageTest
- *
- * @filesource QRImageTest.php
- * @created 24.12.2017
- * @package chillerlan\QRCodeTest\Output
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-use chillerlan\QRCode\Output\{QROutputInterface, QRImage};
-
-/**
- * Tests the QRImage output module
- */
-class QRImageTest extends QROutputTestAbstract{
-
- /**
- * @inheritDoc
- * @internal
- */
- public function setUp():void{
-
- if(!extension_loaded('gd')){
- $this->markTestSkipped('ext-gd not loaded');
- return;
- }
-
- parent::setUp();
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getOutputInterface(QROptions $options):QROutputInterface{
- return new QRImage($options, $this->matrix);
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- public function types():array{
- return [
- 'png' => [QRCode::OUTPUT_IMAGE_PNG],
- 'gif' => [QRCode::OUTPUT_IMAGE_GIF],
- 'jpg' => [QRCode::OUTPUT_IMAGE_JPG],
- ];
- }
-
- /**
- * @inheritDoc
- */
- public function testSetModuleValues():void{
-
- $this->options->moduleValues = [
- // data
- 1024 => [0, 0, 0],
- 4 => [255, 255, 255],
- ];
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $this->outputInterface->dump();
-
- $this::assertTrue(true); // tricking the code coverage
- }
-
- /**
- * @phan-suppress PhanUndeclaredClassReference
- */
- public function testOutputGetResource():void{
- $this->options->returnResource = true;
- $this->outputInterface = $this->getOutputInterface($this->options);
-
- $actual = $this->outputInterface->dump();
-
- /** @noinspection PhpElementIsNotAvailableInCurrentPhpVersionInspection */
- \PHP_MAJOR_VERSION >= 8
- ? $this::assertInstanceOf(\GdImage::class, $actual)
- : $this::assertIsResource($actual);
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php
deleted file mode 100644
index aeb5109d5..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRImagickTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/**
- * Class QRImagickTest
- *
- * @filesource QRImagickTest.php
- * @created 04.07.2018
- * @package chillerlan\QRCodeTest\Output
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2018 smiley
- * @license MIT
- *
- * @noinspection PhpUndefinedClassInspection
- * @noinspection PhpComposerExtensionStubsInspection
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use Imagick;
-use chillerlan\QRCode\{QRCode, QROptions};
-use chillerlan\QRCode\Output\{QROutputInterface, QRImagick};
-
-/**
- * Tests the QRImagick output module
- */
-class QRImagickTest extends QROutputTestAbstract{
-
- /**
- * @inheritDoc
- * @internal
- */
- public function setUp():void{
-
- if(!extension_loaded('imagick')){
- $this->markTestSkipped('ext-imagick not loaded');
-
- /** @noinspection PhpUnreachableStatementInspection */
- return;
- }
-
- parent::setUp();
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getOutputInterface(QROptions $options):QROutputInterface{
- return new QRImagick($options, $this->matrix);
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- public function types():array{
- return [
- 'imagick' => [QRCode::OUTPUT_IMAGICK],
- ];
- }
-
- /**
- * @inheritDoc
- */
- public function testSetModuleValues():void{
-
- $this->options->moduleValues = [
- // data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
- ];
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $this->outputInterface->dump();
-
- $this::assertTrue(true); // tricking the code coverage
- }
-
- public function testOutputGetResource():void{
- $this->options->returnResource = true;
- $this->outputInterface = $this->getOutputInterface($this->options);
-
- $this::assertInstanceOf(Imagick::class, $this->outputInterface->dump());
- }
-
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php
deleted file mode 100644
index cc18077d5..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRMarkupTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Class QRMarkupTest
- *
- * @filesource QRMarkupTest.php
- * @created 24.12.2017
- * @package chillerlan\QRCodeTest\Output
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-use chillerlan\QRCode\Output\{QROutputInterface, QRMarkup};
-
-/**
- * Tests the QRMarkup output module
- */
-class QRMarkupTest extends QROutputTestAbstract{
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getOutputInterface(QROptions $options):QROutputInterface{
- return new QRMarkup($options, $this->matrix);
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- public function types():array{
- return [
- 'html' => [QRCode::OUTPUT_MARKUP_HTML],
- 'svg' => [QRCode::OUTPUT_MARKUP_SVG],
- ];
- }
-
- /**
- * @inheritDoc
- */
- public function testSetModuleValues():void{
- $this->options->imageBase64 = false;
- $this->options->moduleValues = [
- // data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
- ];
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $data = $this->outputInterface->dump();
- $this::assertStringContainsString('#4A6000', $data);
- $this::assertStringContainsString('#ECF9BE', $data);
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php b/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php
deleted file mode 100644
index d48468bca..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QROutputTestAbstract.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/**
- * Class QROutputTestAbstract
- *
- * @filesource QROutputTestAbstract.php
- * @created 24.12.2017
- * @package chillerlan\QRCodeTest\Output
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-use chillerlan\QRCode\Data\{Byte, QRMatrix};
-use chillerlan\QRCode\Output\{QRCodeOutputException, QROutputInterface};
-use PHPUnit\Framework\TestCase;
-
-use function file_exists, in_array, mkdir;
-
-use const PHP_OS_FAMILY, PHP_VERSION_ID;
-
-/**
- * Test abstract for the several (built-in) output modules,
- * should also be used to test custom output modules
- */
-abstract class QROutputTestAbstract extends TestCase{
-
- /** @internal */
- protected string $builddir = __DIR__.'/../../.build/output_test';
- /** @internal */
- protected QROutputInterface $outputInterface;
- /** @internal */
- protected QROptions $options;
- /** @internal */
- protected QRMatrix $matrix;
-
- /**
- * Attempts to create a directory under /.build and instances several required objects
- *
- * @internal
- */
- protected function setUp():void{
-
- if(!file_exists($this->builddir)){
- mkdir($this->builddir, 0777, true);
- }
-
- $this->options = new QROptions;
- $this->matrix = (new Byte($this->options, 'testdata'))->initMatrix(0);
- $this->outputInterface = $this->getOutputInterface($this->options);
- }
-
- /**
- * Returns a QROutputInterface instance with the given options and using $this->matrix
- *
- * @internal
- */
- abstract protected function getOutputInterface(QROptions $options):QROutputInterface;
-
- /**
- * Validate the instance of the interface
- */
- public function testInstance():void{
- $this::assertInstanceOf(QROutputInterface::class, $this->outputInterface);
- }
-
- /**
- * Tests if an exception is thrown when trying to write a cache file to an invalid destination
- */
- public function testSaveException():void{
- $this->expectException(QRCodeOutputException::class);
- $this->expectExceptionMessage('Could not write data to cache file: /foo/bar.test');
-
- $this->options->cachefile = '/foo/bar.test';
- $this->outputInterface = $this->getOutputInterface($this->options);
- $this->outputInterface->dump();
- }
-
- /**
- * covers the module values settings
- */
- abstract public function testSetModuleValues():void;
-
- /*
- * additional, non-essential, potentially inaccurate coverage tests
- */
-
- /**
- * @see testStringOutput()
- * @return string[][]
- * @internal
- */
- abstract public function types():array;
-
- /**
- * coverage of the built-in output modules
- *
- * @dataProvider types
- */
- public function testStringOutput(string $type):void{
- $this->options->outputType = $type;
- $this->options->cachefile = $this->builddir.'/test.'.$type;
- $this->options->imageBase64 = false;
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $data = $this->outputInterface->dump(); // creates the cache file
-
- $this::assertSame($data, file_get_contents($this->options->cachefile));
- }
-
- /**
- * covers the built-in output modules, tests against pre-rendered data
- *
- * @dataProvider types
- */
- public function testRenderImage(string $type):void{
-
- // may fail on CI, different PHP (platform) versions produce different output
- // the samples were generated on php-7.4.3-Win32-vc15-x64
- if(
- (PHP_OS_FAMILY !== 'Windows' || PHP_VERSION_ID >= 80100)
- && in_array($type, [QRCode::OUTPUT_IMAGE_JPG, QRCode::OUTPUT_IMAGICK, QRCode::OUTPUT_MARKUP_SVG])
- ){
- $this::markTestSkipped('may fail on CI');
-
- /** @noinspection PhpUnreachableStatementInspection */
- return;
- }
-
- $this->options->outputType = $type;
-
- $this::assertSame(
- trim(file_get_contents(__DIR__.'/samples/'.$type)),
- trim((new QRCode($this->options))->render('test'))
- );
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php
deleted file mode 100644
index c41d109be..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * Class QRStringTest
- *
- * @filesource QRStringTest.php
- * @created 24.12.2017
- * @package chillerlan\QRCodeTest\Output
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest\Output;
-
-use chillerlan\QRCodeExamples\MyCustomOutput;
-use chillerlan\QRCode\{QRCode, QROptions};
-use chillerlan\QRCode\Output\{QROutputInterface, QRString};
-
-/**
- * Tests the QRString output module
- */
-class QRStringTest extends QROutputTestAbstract{
-
- /**
- * @inheritDoc
- * @internal
- */
- protected function getOutputInterface(QROptions $options):QROutputInterface{
- return new QRString($options, $this->matrix);
- }
-
- /**
- * @inheritDoc
- * @internal
- */
- public function types():array{
- return [
- 'json' => [QRCode::OUTPUT_STRING_JSON],
- 'text' => [QRCode::OUTPUT_STRING_TEXT],
- ];
- }
-
- /**
- * @inheritDoc
- */
- public function testSetModuleValues():void{
-
- $this->options->moduleValues = [
- // data
- 1024 => 'A',
- 4 => 'B',
- ];
-
- $this->outputInterface = $this->getOutputInterface($this->options);
- $data = $this->outputInterface->dump();
-
- $this::assertStringContainsString('A', $data);
- $this::assertStringContainsString('B', $data);
- }
-
- /**
- * covers the custom output functionality via an example
- */
- public function testCustomOutput():void{
- $this->options->version = 5;
- $this->options->eccLevel = QRCode::ECC_L;
- $this->options->outputType = QRCode::OUTPUT_CUSTOM;
- $this->options->outputInterface = MyCustomOutput::class;
-
- $this::assertSame(
- file_get_contents(__DIR__.'/samples/custom'),
- (new QRCode($this->options))->render('test')
- );
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/custom b/vendor/chillerlan/php-qrcode/tests/Output/samples/custom
deleted file mode 100644
index e19a64352..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/custom
+++ /dev/null
@@ -1,45 +0,0 @@
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
-000011111110111010000101111010000011111110000
-000010000010111000001101011000001010000010000
-000010111010101101011000001101011010111010000
-000010111010110100111110010100111010111010000
-000010111010000001101011000001101010111010000
-000010000010100111110010100111110010000010000
-000011111110101010101010101010101011111110000
-000000000000010010100111110010100000000000000
-000011001110000101111010000101111001011110000
-000000000000111010000101111010000111100010000
-000001011010100111110010100111110011001010000
-000010000101111101011000001101011110011110000
-000000011010100011000001101011000101110100000
-000011001100001001101011000001101010011010000
-000010110111110000001101011000001100110100000
-000010000100100010100111110010100001100100000
-000011111110111101111010000101111010100110000
-000011010000111010000101111010000111100100000
-000010101111111111110010100111110011001000000
-000010110001110101011000001101011110011010000
-000001001111100011000001101011000101110010000
-000011000100110001101011000001101010011100000
-000001000011001000001101011000001100110000000
-000011101001011010100111110010100001100000000
-000010111010001101111010000101111010100110000
-000011100000001010000101111010000111100000000
-000000001110110111110010100111110011001000000
-000000011001011101011000001101011110011100000
-000011111110101011000001101011001111110110000
-000000000000110001101011000001101000111100000
-000011111110001000001101011000011010110000000
-000010000010101010100111110010101000100100000
-000010111010111101111010000101111111100110000
-000010111010011010000101111010001101100010000
-000010111010000111110010100111100101101100000
-000010000010101101011000001101001100111100000
-000011111110101011000001101011000110010110000
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/fpdf b/vendor/chillerlan/php-qrcode/tests/Output/samples/fpdf
deleted file mode 100644
index 15b041b9f..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/fpdf
+++ /dev/null
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/gif b/vendor/chillerlan/php-qrcode/tests/Output/samples/gif
deleted file mode 100644
index aff9a0fa9..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/gif
+++ /dev/null
@@ -1 +0,0 @@
-data:image/gif;base64,R0lGODlhkQCRAIAAAAQCBP///yH5BAEAAAEALAAAAACRAJEAAAL+jI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvOpBEin1Kr1ek1gpY6qdgsOU1niMviL7Y4R5raV7I4D0NmGly13w/Nm+tu+dsDXtjcY5nfHkGhgWFY4x7GoIOlXGRmYQnmhKYg56clZEToyOjF6CuqJURrCGoE6pRaLN7vh+nH7AMsFWMuouglcIklIy9vpG0CcmlyMfJzJLGb5DFlN/dvcZ2wdre3Ija0s3T3+PR2+sgx+nd7+ng1tjg6Psk4fX36vT464JX5i3xl3+WTJE+esoDpyA+vtKodwW72ADP8RnAfxYkT+dgpVCLToUFjHBR/TaDRRsk7IZAAvJsT4yJ/Jlfh0VZw50t5NlTlfGuTHEebCc4dcSoSQ8s9ElDuV9jxqk2jDnBSlgnwa9KdMnkI9iqSQa9VXU2NblX11VkPYXgeZsgz2FsRaRWk9zCVZV2xcUXkv7QXb18LdT39FNKq5b+NhnDoXM05s1DHXqpIh0wRaObDazJaxyuM8WC9ozKQVg4bC1ilqHVNX52jt+gbs2DVm087nM/Lnrw9bh4YbR6vujEur+dacgY/wy8vxBv0tOE/zrlRPGr9KvXHw1Kanb1UNne/flw9bXu6snThu7OWtewaPXLR6jMfH9+PODT3l+eT+ed+naxVRMaVWX1vM4XedgEPtFuBkCK4nx0/hAaZggg4CyKAhEsYHXGn5YTfdYhsWZlaFEF7oXIaDjGggCejlhiFpyhHIYXQNzvedabnot6CMdRXoI4kHvpAUWY81ZaSKMRQpAZA5NvmfC0yideSNSXpIg5Pu0ceef1W22IKWxZ0In31f4tjji14itmaZYD6ipplsyukmml6daR6ZPFqI5W17vtfdbYA+mN2fUBgap5KCFtpmoGMeGiVhig4p5WhvbgmkbZVaeiWLQaIYpqV2VsfndxN2IOqo2T3J56l+jdYpjTe6akuNpL4HI5k2TNheqyB+KKQ3l1IJZlKachn+bHqoNgpsTazOwCuzvjL2rAzGRmqqtEhBtV+2JkpaVIxXHmtYU4hyu6W3w+JiLrbNqpYnuOSWqKKYKYZ777i/DtPut/M+am+os0b6763ITrppvV1aCSWdhnb7bqLwElotreIpjOe7scb4sFsYcyXxud8u2S/CjGYsbro9qtvnySBruyoM1/qLJKbuEllyy1Ma3PGd60b1sR7D9SqsqiEepiPMENc68HM1p+yz0YSKOLTSHksNtZ5Q7QwunJlVvK/BO6QKNrUqvyZq2aBanB5nak/86Nhpa0x31ovejXfeeu/Nd99+/w144IIPTnjhhh+OeOKKL854444/DnnkkhcCXgAAOw==
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/html b/vendor/chillerlan/php-qrcode/tests/Output/samples/html
deleted file mode 100644
index aa154a333..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/html
+++ /dev/null
@@ -1,31 +0,0 @@
-<div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #000;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-<div><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span><span style="background: #fff;"></span></div>
-</div>
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/imagick b/vendor/chillerlan/php-qrcode/tests/Output/samples/imagick
deleted file mode 100644
index 377725d85..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/imagick
+++ /dev/null
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/jpg b/vendor/chillerlan/php-qrcode/tests/Output/samples/jpg
deleted file mode 100644
index dd46e24a9..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/jpg
+++ /dev/null
@@ -1 +0,0 @@
-data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2OTApLCBxdWFsaXR5ID0gODUK/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAkQCRAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+y6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDxn9pr46f8KW/wCEf/4pb+3f7Z+0/wDMQ+zeT5Plf9M33Z832xt7548Z/wCG5/8Aql3/AJX/AP7no/4Kaf8ANPv+4l/7a16n4O8NfBnw1+zv4W8aeNPBnhKO0j8P6bNf382gRXEjPLFEu9tsbOzM7jJwTk5Pc0AeWf8ADc//AFS7/wAr/wD9z0f8Nz/9Uu/8r/8A9z12f/Cy/wBjb/oG+DP/AAjJP/kaum+HF9+zF8RNcm0Twd4Y8GanfwWzXUkX/CKiHbErKpbMkCj7zqMZzz9aAOA8Cftlf8JR440Hwz/wrj7J/a+pW9j9o/tvf5Xmyqm/b5A3Y3ZxkZx1FemftNfHT/hS3/CP/wDFLf27/bP2n/mIfZvJ8nyv+mb7s+b7Y2988fLPxJ0nStD/AG+NL0vRNMstMsIPEmh+Va2cCwxR7ltWO1FAAyxJOB1JNfYHx08S/Brw7/Y//C27bRZvtHn/ANm/2jozX+Nvl+btxE+z70eemeOuOADzL4JftW/8LK+J+keCv+EC/sr+0fO/0v8AtfzvL8uCSX7nkrnOzHUYzn2r6Zr4T+H3gvU/AHx4/wCF5apo8Oj/AAqF9e39nqcLRmNLK7SVLMrbRkzKrefCAnlgqG+YKAcfY3w48e+E/iJoc2t+DtW/tOwguWtZJfs8sO2VVViuJFU/ddTnGOfrQB5N+zj+0h/wuHxxeeGf+EM/sT7Npr332j+0/tG7bLEmzb5SYz5uc57dOeMX42/tW/8ACtfifq/gr/hAv7V/s7yf9L/tfyfM8yCOX7nktjG/HU5xn2rxn/gnF/yW/Wf+xbn/APSm2qH452lrf/t/QWN9bQ3Vpc+INEhngmjDxyo0VoGRlPDKQSCDwQaAO5/4bn/6pd/5X/8A7no/4bn/AOqXf+V//wC569m+JsH7OPw1/s//AITXwj4M0r+0fN+yf8Uuk3meXs3/AOqhbGN6dcZzx3rjP+Fl/sbf9A3wZ/4Rkn/yNQBxn/Dc/wD1S7/yv/8A3PXpv7OP7SH/AAuHxxeeGf8AhDP7E+zaa999o/tP7Ru2yxJs2+UmM+bnOe3TnjpvhxonwA+Imhza34O8FeDNTsILlrWSX/hGo4dsqqrFcSRKfuupzjHP1r5Z/wCCcX/Jb9Z/7Fuf/wBKbagD7/ooooAKKKKACiiigD4z/wCCmn/NPv8AuJf+2tdn8ZP+Uedj/wBi3oX/AKMtK4z/AIKaf80+/wC4l/7a16zqXgrVfiJ+xdoHg7RLiyt7/UPDejeVJeOyxL5Yt5TuKqx+6hxgHnH1oA/Nqvpn/gnF/wAlv1n/ALFuf/0ptqP+GKvin/0H/Bn/AIGXP/yPXsH7Jv7PXjT4TfEXUPEfiPU/D91aXOkSWSJYTzPIHaaFwSHiQbcRt3zkjigDx/4yf8pDLH/sZNC/9F2ldn/wU0/5p9/3Ev8A21rjPjJ/ykMsf+xk0L/0XaV9Aftg/BTxV8Yf+EW/4RnUNFtP7I+1/aP7RmlTd5vk7duyN848ps5x1HXsAdN4b8FaV8RP2VfCng7W7i9t7DUPDelebJZuqyr5ccEo2llYfeQZyDxn618//Efxrqv7JmuQ/Dn4c29lquk6jbLrc02vo01ws8jNCyq0LRKE226EAqTktzjAHM/8MVfFP/oP+DP/AAMuf/kevqD9k34X6/8ACb4dah4c8R3mmXV3c6vJeo9hI7xhGhhQAl0Q7sxt2xgjmgA+Cn7PXgv4TeKrnxH4c1PxBdXdzYvZOl/PC8YRnjckBIkO7Ma98YJ4r5f+Mn/KQyx/7GTQv/RdpX3/AF8AfGT/AJSGWP8A2Mmhf+i7SgDs/wDgpp/zT7/uJf8AtrXxnX6M/tg/BTxV8Yf+EW/4RnUNFtP7I+1/aP7RmlTd5vk7duyN848ps5x1HXt8/wD/AAxV8U/+g/4M/wDAy5/+R6APZv8AgnF/yRDWf+xkn/8ASa2rxn/gnF/yW/Wf+xbn/wDSm2r6g/ZN+F+v/Cb4dah4c8R3mmXV3c6vJeo9hI7xhGhhQAl0Q7sxt2xgjmvl/wD4Jxf8lv1n/sW5/wD0ptqAPv8AooooAKKKKACiiigD5N/4KHeE/FXij/hBv+EZ8Na1rf2b+0PtH9nWMtx5W77Nt3bFO3O1sZ64PpXkuheN/wBrrQ9DsNE0vRvGdvYafbR2trF/wh6t5cUahUXLW5JwoAyST619TftNfHT/AIUt/wAI/wD8Ut/bv9s/af8AmIfZvJ8nyv8Apm+7Pm+2NvfPHjP/AA3P/wBUu/8AK/8A/c9AHGf8LL/bJ/6BvjP/AMIyP/5Go/4WX+2T/wBA3xn/AOEZH/8AI1dn/wANz/8AVLv/ACv/AP3PX2ZQB+cHg7w18ZvEv7RHhbxp408GeLZLuTxBps1/fzaBLbxqkUsS722xqiqqIMnAGBk9zX1B+2D4l+Mvh3/hFv8AhUltrU32j7X/AGl/Z2jLf42+T5W7MT7PvSY6Z5644PGX7SH/AAjv7Q0Hwk/4Qz7V5upWFj/aX9p7MfaVhO/yvKP3fN6b+dvUZ42f2mvjp/wpb/hH/wDilv7d/tn7T/zEPs3k+T5X/TN92fN9sbe+eADmfib8an0X9mUX9h470W3+JUGm6eLu0M1s17FeGSFbpHtWB2uuZQyFBsweBjjZ/Yp8e+LPiJ8LNT1vxjq39p38Gty2scv2eKHbEsEDBcRqo+87HOM8/SvnP42/Avzvhhq/7QP/AAlO3+3PJ13+xf7Pz5H2+eNvK8/zPm2efjd5Y3bei549m/4Jxf8AJENZ/wCxkn/9JragCH9k3xf8ftf+IuoWfxUtPEEOippEksDX/h9bKP7QJoQoDiFMtsMny56ZOOOPH/2ofCPxN/4al1nxf4Q8HeJrv7Nc2F1YX9no8txF5sVtAQykIyNtdMEHIyCD3FfWf7R3xX/4U94Hs/E39g/239p1JLH7P9s+z7d0Ur792x848rGMd+vHOz8EvHX/AAsr4YaR41/sv+yv7R87/RPtHneX5c8kX39q5zsz0GM496APjP8A4WX+2T/0DfGf/hGR/wDyNR/wsv8AbJ/6BvjP/wAIyP8A+Rq+mf2mvjp/wpb/AIR//ilv7d/tn7T/AMxD7N5Pk+V/0zfdnzfbG3vnjxn/AIbn/wCqXf8Alf8A/uegDjP+Fl/tk/8AQN8Z/wDhGR//ACNXQfsDeCPGnhr4w6tfeI/CHiDRrSTw/NCk9/ps1vGzm4tyEDOoBbCscdcA+lfSf7OPxX/4XD4HvPE39g/2J9m1J7H7P9s+0btsUT792xMZ83GMduvPHGfs4/tIf8Lh8cXnhn/hDP7E+zaa999o/tP7Ru2yxJs2+UmM+bnOe3TngA9/ooooAKKKKACiiigD4z/4Kaf80+/7iX/trXqfg7w18GfDX7O/hbxp408GeEo7SPw/ps1/fzaBFcSM8sUS722xs7MzuMnBOTk9zXln/BTT/mn3/cS/9ta7P4yf8o87H/sW9C/9GWlAHkHxr+Gq/GTxVbeJ/wBnnwrpl74VtbFLC7ksIoNMjF6rySODFN5TM3lyw/OFIIIGflIHiX/C2Pin/wBFL8Z/+D25/wDi6634KftC+NPhN4VufDnhzTPD91aXN896738EzyB2SNCAUlQbcRr2zknmvp//AIYq+Fn/AEH/ABn/AOBlt/8AI9AHn/ww8efC/Xvgrb6Vqt1Zan8adQtru2sNQu9Nkl1JtReSVLEi+aM7XXNuEkMg8vC8rt49A/Zl+Fvjub/hIP8AhoHQv+Eix9m/sX/hIbuDV/I/1vn+VueTyt37nd03bV67eKWvfsv+Afhrod/8RtC1fxNc6t4VtpNbsYb25ge3kntVM0ayKkKsULIAwVlJGcEHmvJv+G1fin/0APBn/gHc/wDyRQB9J/tl2lrYfsqeJrGxtobW0torCGCCGMJHEi3luFRVHCqAAABwAK5L/gnF/wAkQ1n/ALGSf/0mtq0/2kNbuvEv7Dtx4jvo4Y7vVdI0i9nSEERq8s9q7BQSSFyxxkk47msz/gnF/wAkQ1n/ALGSf/0mtqAPAP2cfinpE3ji8X47+KL3X/DQ01za22vifVbdLzzYtjrEwkCuI/OAfaMBmGfmwfobxd+0J8DrD4TeIPD3gHxTDpN2dIvItJt9N0i6tFiuHjcoYysKrGxkbO7IwTnPevz5r6//AGd/2X/APxE+DuheMdb1fxNb3+ofaPNjs7mBYl8u4liG0NCx+6gzknnP0oA5n9mX4peBJv8AhIP+Ggdd/wCEix9m/sX/AISG0n1fyP8AW+f5W5JPK3fud3TdtXrt45/xZ+zz8TvFPirVvE/gjwXDN4V1e+mv9EkhvbS3jeymcyQFYmkVo1MbJhCqlRwQMYr6G/4Yq+Fn/Qf8Z/8AgZbf/I9Y3wU+NfiqH4/WPwIXT9FPhrRbm80S2ujDL9teCxhlWJnfzNhciBNxCAHJwF4wAH7OPinQv2dvA954K+Md9/wjOv3upPqlvaeU95vtXiiiWTfbCRBl4ZRtJDfLnGCCfMv+CcX/ACW/Wf8AsW5//Sm2o/4KO/8AJb9G/wCxbg/9KbmvqD4Kfs9eC/hN4qufEfhzU/EF1d3Ni9k6X88LxhGeNyQEiQ7sxr3xgnigD1+iiigAooooAKKKKACviD4lfsifEnxL8RfEviOx1vwlHaarq91ewJNdXAkVJZmdQwEBAbDDOCRnua9G/bn+KXjv4a/8Id/whWu/2V/aP277X/okE3meX9n2f61Gxje/TGc89q8TsPit+1/f2NvfWNv4turS5iWaCeHwhE8cqMMq6sLbDKQQQRwQaAPqb9k34X6/8Jvh1qHhzxHeaZdXdzq8l6j2EjvGEaGFACXRDuzG3bGCOa8//ZN/Z68afCb4i6h4j8R6n4furS50iSyRLCeZ5A7TQuCQ8SDbiNu+ckcV4/8A8LL/AGyf+gb4z/8ACMj/APkaj/hZf7ZP/QN8Z/8AhGR//I1AHsHj79nrxpr/AO1RbfFSz1Pw/HosWr6betBLPMLnZbLAHAURFdx8psfNjkZI7ep/HT41+Ffg9/Y//CTafrV3/a/n/Z/7Ohifb5Xl7t2+RMZ81cYz0PTv8meAvjz8fP8Ahc/hjwh4v1+9tPtOt2Nrf2F5ottby+VLLGCrAwq67kfIIwcEEdjX2Z8Tfhb4E+JX9n/8JroX9q/2d5v2T/S54fL8zZv/ANU65zsTrnGOO9AHw18b/gp4qm0DxB8d11DRR4a1q5Gt21qZpftqQX06tErp5ewOBOm4ByBg4LcZ5/4Kfs9eNPiz4VufEfhzU/D9raW189k6X88ySF1SNyQEicbcSL3zkHivrL9pW98I3v7Pet/C3wJqumaprVpFZ6fY+H9OvVu78C2uYd0YhVmlZo0iYtkEgIxPQmuf/Yp1bSvhr8LNT0L4janZeDdWn1uW7hsdfnWwuJIGggRZVjmKsULI6hgMEowzkGgC7/wUd/5Iho3/AGMkH/pNc10H7KOt2vhr9jjSPEd9HNJaaVY6nezpCAZGSK6uXYKCQC2FOMkDPcV5/wDt8+N/BfiX4PaTY+HPF/h/WbuPxBDM8FhqUNxIqC3uAXKoxIXLKM9MketeDfA74peO5NQ8LfCR9dz4K1TUotLvNN+yQfvbW6uMXEfm7PNG4SyfMHDDdwRgYAPZvib/AMZg/wBn/wDCtP8AiUf8Il5v2/8A4SH9x5n2vZ5fleR5ucfZpN27bjK4zk48s/ZR0S68Nftj6R4cvpIZLvSr7U7Kd4STGzxWtyjFSQCVypxkA47Cvbfjp4T8VfBP+x/+Gb/DWtWP9s+f/bv9nWMuq7/J8v7Pu85ZfLx5s+Nu3dk5ztGPka18ZeN/DHxRu/GSXk2neMIr65luZprOMSR3Eu9Zw0TptVvncFSowTwBjgA9s/4KO/8AJb9G/wCxbg/9Kbmvv+vk39nHwtoX7RPge88a/GOx/wCEm1+y1J9Lt7vzXs9lqkUUqx7LYxocPNKdxBb5sZwAB9ZUAFFFFABRRRQAUUUUAfGf/BTT/mn3/cS/9ta9mtvHX/Ctf2QfDXjX+y/7V/s7w3pH+ifaPJ8zzEt4vv7Wxjfnoc4x714z/wAFNP8Amn3/AHEv/bWuz+Mn/KPOx/7FvQv/AEZaUAcZ/wANz/8AVLv/ACv/AP3PXpv7OP7SH/C4fHF54Z/4Qz+xPs2mvffaP7T+0btssSbNvlJjPm5znt054/Oavpn/AIJxf8lv1n/sW5//AEptqAD4yf8AKQyx/wCxk0L/ANF2lff9fAHxk/5SGWP/AGMmhf8Aou0r03/god4s8VeF/wDhBv8AhGfEutaJ9p/tD7R/Z19Lb+bt+zbd2xhuxubGemT60AfP9z46/wCFa/tfeJfGv9l/2r/Z3iTV/wDRPtHk+Z5j3EX39rYxvz0OcY96xv2jviv/AMLh8cWfib+wf7E+zaalj9n+2faN22WV9+7YmM+bjGO3Xnjufg/8N/EXh7xbo3xg+MGgQ3HgCeJ9Q1LUtSlh1BZxdQsIZJIQzyuzSzRHlCQTuOMEj3n/AIWX+xt/0DfBn/hGSf8AyNQBxn/DDH/VUf8Aygf/AHRXjNt4F/4Vr+194a8Ff2p/av8AZ3iTSP8AS/s/k+Z5j28v3NzYxvx1OcZ9q+rP2+fEOv8Ahr4PaTfeHNc1PRruTxBDC89hdvbyMht7glCyEErlVOOmQPSrv7Jvh7QPFPwX8K+N/E+h6ZrniqWWeaTW9RtEub93iu5ViczuDIWRURVO7KhFAxgUAe818NftUfs3/wDCO6R41+Lf/CZ/avN1Jr7+zf7M2Y+03ajZ5vmn7vm9dnO3oM8dn/wUO8WeKvC//CDf8Iz4l1rRPtP9ofaP7Ovpbfzdv2bbu2MN2NzYz0yfWvP/AIV6d8VtLvNF8e/GzUNa1H4Sy2wutQOr6v8A2laTRTQkWrPaeZI7/vpICAYyVbDHG3IAOZ/Zx/aQ/wCFPeB7zwz/AMIZ/bf2nUnvvtH9p/Z9u6KJNm3ynzjys5z36cc/TP7OP7SH/C4fHF54Z/4Qz+xPs2mvffaP7T+0btssSbNvlJjPm5znt0548G+Nfw1X4yeKrbxP+zz4V0y98K2tilhdyWEUGmRi9V5JHBim8pmby5YfnCkEEDPykD7Y8N+CPBfhq+e+8OeEPD+jXckRheew02G3kZCQShZFBK5VTjpkD0oA6CiiigAooooAKKKKAPjP/gpp/wA0+/7iX/trXufhvwVpXxE/ZV8KeDtbuL23sNQ8N6V5slm6rKvlxwSjaWVh95BnIPGfrXM/tg/BTxV8Yf8AhFv+EZ1DRbT+yPtf2j+0ZpU3eb5O3bsjfOPKbOcdR17fP/8AwxV8U/8AoP8Agz/wMuf/AJHoA9m/4Yq+Fn/Qf8Z/+Blt/wDI9d18FP2evBfwm8VXPiPw5qfiC6u7mxeydL+eF4wjPG5ICRId2Y174wTxXy//AMMVfFP/AKD/AIM/8DLn/wCR6P8Ahir4p/8AQf8ABn/gZc//ACPQAfGT/lIZY/8AYyaF/wCi7Suz/wCCmn/NPv8AuJf+2tZnw1/ZE+JPhr4i+GvEd9rfhKS00rV7W9nSG6uDIyRTK7BQYAC2FOMkDPcV7B+2D8FPFXxh/wCEW/4RnUNFtP7I+1/aP7RmlTd5vk7duyN848ps5x1HXsAfI3iX9oXxpr/wai+Fd5pnh+PRYrG0slnigmFzstjGUJYyldx8pc/Ljk4A7eP19s/s7/sv+Pvh38YtC8Y63q/hm4sNP+0ebHZ3M7St5lvLENoaFR95xnJHGfpXQftZfs9eNPiz8RdP8R+HNT8P2tpbaRHZOl/PMkhdZpnJASJxtxIvfOQeKAOF+HHjXVf2s9cm+HPxGt7LStJ062bW4ZtARobhp42WFVZpmlUptuHJAUHIXnGQdTTPihr/AMG/jbov7PXhiz0y88K2mr2NlHd6jG8l+UvHjmlJdHSPcGuHC/u8ABcg8k9N+yb+z140+E3xF1DxH4j1Pw/dWlzpElkiWE8zyB2mhcEh4kG3Ebd85I4r3/4laJdeJfh14l8OWMkMd3qukXVlA8xIjV5YWRSxAJC5YZwCcdjQB8p/8FNP+aff9xL/ANta5P4OfFDX/jIvh39nrxPZ6ZZ+FbuxSyku9OjeO/CWcHnREO7vHuLW6Bv3eCC2AOCPef2Pvgp4q+D3/CU/8JNqGi3f9r/ZPs/9nTSvt8rzt27fGmM+auMZ6Hp39/oA4b4KfC/QPhN4VufDnhy81O6tLm+e9d7+RHkDskaEAoiDbiNe2ck814z+yb+0L40+LPxF1Dw54j0zw/a2ltpEl6j2EEySF1mhQAl5XG3Ejds5A5r6fooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/json b/vendor/chillerlan/php-qrcode/tests/Output/samples/json
deleted file mode 100644
index f8423f75b..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/json
+++ /dev/null
@@ -1 +0,0 @@
-[[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,1536,1536,1536,1536,1536,1536,1536,8,3584,1024,4,4,1024,8,1536,1536,1536,1536,1536,1536,1536,18,18,18,18],[18,18,18,18,1536,6,6,6,6,6,1536,8,14,1024,4,4,1024,8,1536,6,6,6,6,6,1536,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,3584,4,1024,4,1024,8,1536,6,5632,5632,5632,6,1536,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,3584,4,4,1024,4,8,1536,6,5632,5632,5632,6,1536,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,3584,1024,1024,4,4,8,1536,6,5632,5632,5632,6,1536,18,18,18,18],[18,18,18,18,1536,6,6,6,6,6,1536,8,14,4,4,4,4,8,1536,6,6,6,6,6,1536,18,18,18,18],[18,18,18,18,1536,1536,1536,1536,1536,1536,1536,8,3072,12,3072,12,3072,8,1536,1536,1536,1536,1536,1536,1536,18,18,18,18],[18,18,18,18,8,8,8,8,8,8,8,8,14,1024,1024,4,4,8,8,8,8,8,8,8,8,18,18,18,18],[18,18,18,18,3584,3584,3584,3584,14,14,3072,14,3584,4,1024,4,4,3584,14,14,3584,3584,3584,14,3584,18,18,18,18],[18,18,18,18,1024,4,4,1024,1024,1024,12,1024,4,4,1024,4,1024,4,4,1024,4,1024,1024,4,1024,18,18,18,18],[18,18,18,18,1024,4,1024,4,1024,1024,3072,4,4,4,1024,4,1024,1024,1024,1024,1024,4,4,1024,1024,18,18,18,18],[18,18,18,18,1024,4,1024,1024,4,4,12,1024,1024,4,1024,4,1024,1024,4,4,4,1024,4,1024,4,18,18,18,18],[18,18,18,18,4,1024,1024,4,1024,4,3072,4,4,1024,1024,1024,4,1024,4,4,1024,1024,4,1024,4,18,18,18,18],[18,18,18,18,8,8,8,8,8,8,8,8,512,4,1024,4,4,1024,4,1024,4,1024,4,1024,4,18,18,18,18],[18,18,18,18,1536,1536,1536,1536,1536,1536,1536,8,14,4,1024,4,4,1024,1024,4,1024,1024,1024,4,4,18,18,18,18],[18,18,18,18,1536,6,6,6,6,6,1536,8,14,1024,4,1024,1024,1024,1024,4,4,1024,1024,4,4,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,14,1024,1024,1024,4,4,1024,4,4,4,1024,1024,1024,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,3584,1024,4,4,4,1024,4,4,1024,1024,4,1024,4,18,18,18,18],[18,18,18,18,1536,6,5632,5632,5632,6,1536,8,3584,4,1024,1024,4,1024,4,4,1024,4,1024,4,4,18,18,18,18],[18,18,18,18,1536,6,6,6,6,6,1536,8,3584,1024,1024,1024,1024,4,1024,4,1024,1024,4,4,1024,18,18,18,18],[18,18,18,18,1536,1536,1536,1536,1536,1536,1536,8,3584,1024,4,1024,1024,4,4,1024,4,4,4,4,4,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18]]
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/png b/vendor/chillerlan/php-qrcode/tests/Output/samples/png
deleted file mode 100644
index 34148d735..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/png
+++ /dev/null
@@ -1 +0,0 @@
-data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJEAAACRCAIAAABMus10AAAABnRSTlMA/wD/AP83WBt9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACd0lEQVR4nO3dQW7jIABA0fFo7n/ldFnJC0sMBvu3762bJtUXMnUwHJ/P5w8pf5/+AAzTrEezHs16NOvRrEezHs16NOvRrEezHs16NOvRrEezHs16NOvRrEeznn8zLz6O467Pce20aOX6fa9XuJxeO/SbbzSzDMc469GsR7MezXqm5iAnNy5vHZplrJs4bPuLhhhnPZr1aNajWc+dc5CToavu0NV+6F7GU/OIdQ8cGWc9mvVo1qNZz8I5yFO2TUmeYpz1aNajWY9mPT9hDjKzPKTIOOvRrEezHs16Fs5B1l38n5pWvGQ6Y5z1aNajWY9mPXfOQbY9VDKzHmToq5ltf9EQ46xHsx7NejTrOV7yv/0M38Xwdpr1aNajWc9j+4PcuIvHzKO6626LrFsaa5z1aNajWY9mPfv2BzldhGd2AJm5gM9MOp7a0OzEOOvRrEezHs169u0PMnQB3/ZA7Utumgwxzno069GsR7Oefc/mzkwrtq34uHGrtJnffM0469GsR7MezXqm5iAzx7hse3pl3eKRpxhnPZr1aNajWc9j58XM3DXYtle79SDcQ7MezXo060mem7ttecg717AYZz2a9WjWo1lP8tzc6x9ed7fCfRD+k2Y9mvVo1pM8N3fmfbftALJuHa1x1qNZj2Y9mvUkz6y78fJ+4+LXbef1Gmc9mvVo1qNZT3IOcjLzeM6697UehG+a9WjWo1lP8tzck3WLR2Yez5n54WvGWY9mPZr1aNaTPDf32szK0XW3NnwX86tp1qNZj2Y9P+Hc3N/GOOvRrEezHs16NOvRrEezHs16NOvRrEezHs16NOvRrEezHs16NOvRrEezni+wifc/oOyB/wAAAABJRU5ErkJggg==
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/svg b/vendor/chillerlan/php-qrcode/tests/Output/samples/svg
deleted file mode 100644
index 54aceb9ec..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/svg
+++ /dev/null
@@ -1 +0,0 @@
-data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJxci1zdmcgIiBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsiIHZpZXdCb3g9IjAgMCAyOSAyOSI+DQo8ZGVmcz48c3R5bGU+cmVjdHtzaGFwZS1yZW5kZXJpbmc6Y3Jpc3BFZGdlc308L3N0eWxlPjwvZGVmcz4NCjxwYXRoIGNsYXNzPSJxci00ICIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0iI2ZmZiIgZmlsbC1vcGFjaXR5PSIxIiBkPSJNMTQgNCBoMiB2MSBoLTJaIE0xNCA1IGgyIHYxIGgtMlogTTEzIDYgaDEgdjEgaC0xWiBNMTUgNiBoMSB2MSBoLTFaIE0xMyA3IGgyIHYxIGgtMlogTTE2IDcgaDEgdjEgaC0xWiBNMTUgOCBoMiB2MSBoLTJaIE0xMyA5IGg0IHYxIGgtNFogTTE1IDExIGgyIHYxIGgtMlogTTEzIDEyIGgxIHYxIGgtMVogTTE1IDEyIGgyIHYxIGgtMlogTTUgMTMgaDIgdjEgaC0yWiBNMTIgMTMgaDIgdjEgaC0yWiBNMTUgMTMgaDEgdjEgaC0xWiBNMTcgMTMgaDIgdjEgaC0yWiBNMjAgMTMgaDEgdjEgaC0xWiBNMjMgMTMgaDEgdjEgaC0xWiBNNSAxNCBoMSB2MSBoLTFaIE03IDE0IGgxIHYxIGgtMVogTTExIDE0IGgzIHYxIGgtM1ogTTE1IDE0IGgxIHYxIGgtMVogTTIxIDE0IGgyIHYxIGgtMlogTTUgMTUgaDEgdjEgaC0xWiBNOCAxNSBoMiB2MSBoLTJaIE0xMyAxNSBoMSB2MSBoLTFaIE0xNSAxNSBoMSB2MSBoLTFaIE0xOCAxNSBoMyB2MSBoLTNaIE0yMiAxNSBoMSB2MSBoLTFaIE0yNCAxNSBoMSB2MSBoLTFaIE00IDE2IGgxIHYxIGgtMVogTTcgMTYgaDEgdjEgaC0xWiBNOSAxNiBoMSB2MSBoLTFaIE0xMSAxNiBoMiB2MSBoLTJaIE0xNiAxNiBoMSB2MSBoLTFaIE0xOCAxNiBoMiB2MSBoLTJaIE0yMiAxNiBoMSB2MSBoLTFaIE0yNCAxNiBoMSB2MSBoLTFaIE0xMyAxNyBoMSB2MSBoLTFaIE0xNSAxNyBoMiB2MSBoLTJaIE0xOCAxNyBoMSB2MSBoLTFaIE0yMCAxNyBoMSB2MSBoLTFaIE0yMiAxNyBoMSB2MSBoLTFaIE0yNCAxNyBoMSB2MSBoLTFaIE0xMyAxOCBoMSB2MSBoLTFaIE0xNSAxOCBoMiB2MSBoLTJaIE0xOSAxOCBoMSB2MSBoLTFaIE0yMyAxOCBoMiB2MSBoLTJaIE0xNCAxOSBoMSB2MSBoLTFaIE0xOSAxOSBoMiB2MSBoLTJaIE0yMyAxOSBoMiB2MSBoLTJaIE0xNiAyMCBoMiB2MSBoLTJaIE0xOSAyMCBoMyB2MSBoLTNaIE0xNCAyMSBoMyB2MSBoLTNaIE0xOCAyMSBoMiB2MSBoLTJaIE0yMiAyMSBoMSB2MSBoLTFaIE0yNCAyMSBoMSB2MSBoLTFaIE0xMyAyMiBoMSB2MSBoLTFaIE0xNiAyMiBoMSB2MSBoLTFaIE0xOCAyMiBoMiB2MSBoLTJaIE0yMSAyMiBoMSB2MSBoLTFaIE0yMyAyMiBoMiB2MSBoLTJaIE0xNyAyMyBoMSB2MSBoLTFaIE0xOSAyMyBoMSB2MSBoLTFaIE0yMiAyMyBoMiB2MSBoLTJaIE0xNCAyNCBoMSB2MSBoLTFaIE0xNyAyNCBoMiB2MSBoLTJaIE0yMCAyNCBoNSB2MSBoLTVaICIgLz48cGF0aCBjbGFzcz0icXItNiAiIHN0cm9rZT0idHJhbnNwYXJlbnQiIGZpbGw9IiNmZmYiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTTUgNSBoNSB2MSBoLTVaIE0xOSA1IGg1IHYxIGgtNVogTTUgNiBoMSB2MSBoLTFaIE05IDYgaDEgdjEgaC0xWiBNMTkgNiBoMSB2MSBoLTFaIE0yMyA2IGgxIHYxIGgtMVogTTUgNyBoMSB2MSBoLTFaIE05IDcgaDEgdjEgaC0xWiBNMTkgNyBoMSB2MSBoLTFaIE0yMyA3IGgxIHYxIGgtMVogTTUgOCBoMSB2MSBoLTFaIE05IDggaDEgdjEgaC0xWiBNMTkgOCBoMSB2MSBoLTFaIE0yMyA4IGgxIHYxIGgtMVogTTUgOSBoNSB2MSBoLTVaIE0xOSA5IGg1IHYxIGgtNVogTTUgMTkgaDUgdjEgaC01WiBNNSAyMCBoMSB2MSBoLTFaIE05IDIwIGgxIHYxIGgtMVogTTUgMjEgaDEgdjEgaC0xWiBNOSAyMSBoMSB2MSBoLTFaIE01IDIyIGgxIHYxIGgtMVogTTkgMjIgaDEgdjEgaC0xWiBNNSAyMyBoNSB2MSBoLTVaICIgLz48cGF0aCBjbGFzcz0icXItOCAiIHN0cm9rZT0idHJhbnNwYXJlbnQiIGZpbGw9IiNmZmYiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTTExIDQgaDEgdjEgaC0xWiBNMTcgNCBoMSB2MSBoLTFaIE0xMSA1IGgxIHYxIGgtMVogTTE3IDUgaDEgdjEgaC0xWiBNMTEgNiBoMSB2MSBoLTFaIE0xNyA2IGgxIHYxIGgtMVogTTExIDcgaDEgdjEgaC0xWiBNMTcgNyBoMSB2MSBoLTFaIE0xMSA4IGgxIHYxIGgtMVogTTE3IDggaDEgdjEgaC0xWiBNMTEgOSBoMSB2MSBoLTFaIE0xNyA5IGgxIHYxIGgtMVogTTExIDEwIGgxIHYxIGgtMVogTTE3IDEwIGgxIHYxIGgtMVogTTQgMTEgaDggdjEgaC04WiBNMTcgMTEgaDggdjEgaC04WiBNNCAxNyBoOCB2MSBoLThaIE0xMSAxOCBoMSB2MSBoLTFaIE0xMSAxOSBoMSB2MSBoLTFaIE0xMSAyMCBoMSB2MSBoLTFaIE0xMSAyMSBoMSB2MSBoLTFaIE0xMSAyMiBoMSB2MSBoLTFaIE0xMSAyMyBoMSB2MSBoLTFaIE0xMSAyNCBoMSB2MSBoLTFaICIgLz48cGF0aCBjbGFzcz0icXItMTIgIiBzdHJva2U9InRyYW5zcGFyZW50IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0xMyAxMCBoMSB2MSBoLTFaIE0xNSAxMCBoMSB2MSBoLTFaIE0xMCAxMyBoMSB2MSBoLTFaIE0xMCAxNSBoMSB2MSBoLTFaICIgLz48cGF0aCBjbGFzcz0icXItMTQgIiBzdHJva2U9InRyYW5zcGFyZW50IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0xMiA1IGgxIHYxIGgtMVogTTEyIDkgaDEgdjEgaC0xWiBNMTIgMTEgaDEgdjEgaC0xWiBNOCAxMiBoMiB2MSBoLTJaIE0xMSAxMiBoMSB2MSBoLTFaIE0xOCAxMiBoMiB2MSBoLTJaIE0yMyAxMiBoMSB2MSBoLTFaIE0xMiAxOCBoMSB2MSBoLTFaIE0xMiAxOSBoMSB2MSBoLTFaIE0xMiAyMCBoMSB2MSBoLTFaICIgLz48cGF0aCBjbGFzcz0icXItMTggIiBzdHJva2U9InRyYW5zcGFyZW50IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0wIDAgaDI5IHYxIGgtMjlaIE0wIDEgaDI5IHYxIGgtMjlaIE0wIDIgaDI5IHYxIGgtMjlaIE0wIDMgaDI5IHYxIGgtMjlaIE0wIDQgaDQgdjEgaC00WiBNMjUgNCBoNCB2MSBoLTRaIE0wIDUgaDQgdjEgaC00WiBNMjUgNSBoNCB2MSBoLTRaIE0wIDYgaDQgdjEgaC00WiBNMjUgNiBoNCB2MSBoLTRaIE0wIDcgaDQgdjEgaC00WiBNMjUgNyBoNCB2MSBoLTRaIE0wIDggaDQgdjEgaC00WiBNMjUgOCBoNCB2MSBoLTRaIE0wIDkgaDQgdjEgaC00WiBNMjUgOSBoNCB2MSBoLTRaIE0wIDEwIGg0IHYxIGgtNFogTTI1IDEwIGg0IHYxIGgtNFogTTAgMTEgaDQgdjEgaC00WiBNMjUgMTEgaDQgdjEgaC00WiBNMCAxMiBoNCB2MSBoLTRaIE0yNSAxMiBoNCB2MSBoLTRaIE0wIDEzIGg0IHYxIGgtNFogTTI1IDEzIGg0IHYxIGgtNFogTTAgMTQgaDQgdjEgaC00WiBNMjUgMTQgaDQgdjEgaC00WiBNMCAxNSBoNCB2MSBoLTRaIE0yNSAxNSBoNCB2MSBoLTRaIE0wIDE2IGg0IHYxIGgtNFogTTI1IDE2IGg0IHYxIGgtNFogTTAgMTcgaDQgdjEgaC00WiBNMjUgMTcgaDQgdjEgaC00WiBNMCAxOCBoNCB2MSBoLTRaIE0yNSAxOCBoNCB2MSBoLTRaIE0wIDE5IGg0IHYxIGgtNFogTTI1IDE5IGg0IHYxIGgtNFogTTAgMjAgaDQgdjEgaC00WiBNMjUgMjAgaDQgdjEgaC00WiBNMCAyMSBoNCB2MSBoLTRaIE0yNSAyMSBoNCB2MSBoLTRaIE0wIDIyIGg0IHYxIGgtNFogTTI1IDIyIGg0IHYxIGgtNFogTTAgMjMgaDQgdjEgaC00WiBNMjUgMjMgaDQgdjEgaC00WiBNMCAyNCBoNCB2MSBoLTRaIE0yNSAyNCBoNCB2MSBoLTRaIE0wIDI1IGgyOSB2MSBoLTI5WiBNMCAyNiBoMjkgdjEgaC0yOVogTTAgMjcgaDI5IHYxIGgtMjlaIE0wIDI4IGgyOSB2MSBoLTI5WiAiIC8+PHBhdGggY2xhc3M9InFyLTUxMiAiIHN0cm9rZT0idHJhbnNwYXJlbnQiIGZpbGw9IiMwMDAiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTTEyIDE3IGgxIHYxIGgtMVogIiAvPjxwYXRoIGNsYXNzPSJxci0xMDI0ICIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIxIiBkPSJNMTMgNCBoMSB2MSBoLTFaIE0xNiA0IGgxIHYxIGgtMVogTTEzIDUgaDEgdjEgaC0xWiBNMTYgNSBoMSB2MSBoLTFaIE0xNCA2IGgxIHYxIGgtMVogTTE2IDYgaDEgdjEgaC0xWiBNMTUgNyBoMSB2MSBoLTFaIE0xMyA4IGgyIHYxIGgtMlogTTEzIDExIGgyIHYxIGgtMlogTTE0IDEyIGgxIHYxIGgtMVogTTQgMTMgaDEgdjEgaC0xWiBNNyAxMyBoMyB2MSBoLTNaIE0xMSAxMyBoMSB2MSBoLTFaIE0xNCAxMyBoMSB2MSBoLTFaIE0xNiAxMyBoMSB2MSBoLTFaIE0xOSAxMyBoMSB2MSBoLTFaIE0yMSAxMyBoMiB2MSBoLTJaIE0yNCAxMyBoMSB2MSBoLTFaIE00IDE0IGgxIHYxIGgtMVogTTYgMTQgaDEgdjEgaC0xWiBNOCAxNCBoMiB2MSBoLTJaIE0xNCAxNCBoMSB2MSBoLTFaIE0xNiAxNCBoNSB2MSBoLTVaIE0yMyAxNCBoMiB2MSBoLTJaIE00IDE1IGgxIHYxIGgtMVogTTYgMTUgaDIgdjEgaC0yWiBNMTEgMTUgaDIgdjEgaC0yWiBNMTQgMTUgaDEgdjEgaC0xWiBNMTYgMTUgaDIgdjEgaC0yWiBNMjEgMTUgaDEgdjEgaC0xWiBNMjMgMTUgaDEgdjEgaC0xWiBNNSAxNiBoMiB2MSBoLTJaIE04IDE2IGgxIHYxIGgtMVogTTEzIDE2IGgzIHYxIGgtM1ogTTE3IDE2IGgxIHYxIGgtMVogTTIwIDE2IGgyIHYxIGgtMlogTTIzIDE2IGgxIHYxIGgtMVogTTE0IDE3IGgxIHYxIGgtMVogTTE3IDE3IGgxIHYxIGgtMVogTTE5IDE3IGgxIHYxIGgtMVogTTIxIDE3IGgxIHYxIGgtMVogTTIzIDE3IGgxIHYxIGgtMVogTTE0IDE4IGgxIHYxIGgtMVogTTE3IDE4IGgyIHYxIGgtMlogTTIwIDE4IGgzIHYxIGgtM1ogTTEzIDE5IGgxIHYxIGgtMVogTTE1IDE5IGg0IHYxIGgtNFogTTIxIDE5IGgyIHYxIGgtMlogTTEzIDIwIGgzIHYxIGgtM1ogTTE4IDIwIGgxIHYxIGgtMVogTTIyIDIwIGgzIHYxIGgtM1ogTTEzIDIxIGgxIHYxIGgtMVogTTE3IDIxIGgxIHYxIGgtMVogTTIwIDIxIGgyIHYxIGgtMlogTTIzIDIxIGgxIHYxIGgtMVogTTE0IDIyIGgyIHYxIGgtMlogTTE3IDIyIGgxIHYxIGgtMVogTTIwIDIyIGgxIHYxIGgtMVogTTIyIDIyIGgxIHYxIGgtMVogTTEzIDIzIGg0IHYxIGgtNFogTTE4IDIzIGgxIHYxIGgtMVogTTIwIDIzIGgyIHYxIGgtMlogTTI0IDIzIGgxIHYxIGgtMVogTTEzIDI0IGgxIHYxIGgtMVogTTE1IDI0IGgyIHYxIGgtMlogTTE5IDI0IGgxIHYxIGgtMVogIiAvPjxwYXRoIGNsYXNzPSJxci0xNTM2ICIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIxIiBkPSJNNCA0IGg3IHYxIGgtN1ogTTE4IDQgaDcgdjEgaC03WiBNNCA1IGgxIHYxIGgtMVogTTEwIDUgaDEgdjEgaC0xWiBNMTggNSBoMSB2MSBoLTFaIE0yNCA1IGgxIHYxIGgtMVogTTQgNiBoMSB2MSBoLTFaIE0xMCA2IGgxIHYxIGgtMVogTTE4IDYgaDEgdjEgaC0xWiBNMjQgNiBoMSB2MSBoLTFaIE00IDcgaDEgdjEgaC0xWiBNMTAgNyBoMSB2MSBoLTFaIE0xOCA3IGgxIHYxIGgtMVogTTI0IDcgaDEgdjEgaC0xWiBNNCA4IGgxIHYxIGgtMVogTTEwIDggaDEgdjEgaC0xWiBNMTggOCBoMSB2MSBoLTFaIE0yNCA4IGgxIHYxIGgtMVogTTQgOSBoMSB2MSBoLTFaIE0xMCA5IGgxIHYxIGgtMVogTTE4IDkgaDEgdjEgaC0xWiBNMjQgOSBoMSB2MSBoLTFaIE00IDEwIGg3IHYxIGgtN1ogTTE4IDEwIGg3IHYxIGgtN1ogTTQgMTggaDcgdjEgaC03WiBNNCAxOSBoMSB2MSBoLTFaIE0xMCAxOSBoMSB2MSBoLTFaIE00IDIwIGgxIHYxIGgtMVogTTEwIDIwIGgxIHYxIGgtMVogTTQgMjEgaDEgdjEgaC0xWiBNMTAgMjEgaDEgdjEgaC0xWiBNNCAyMiBoMSB2MSBoLTFaIE0xMCAyMiBoMSB2MSBoLTFaIE00IDIzIGgxIHYxIGgtMVogTTEwIDIzIGgxIHYxIGgtMVogTTQgMjQgaDcgdjEgaC03WiAiIC8+PHBhdGggY2xhc3M9InFyLTMwNzIgIiBzdHJva2U9InRyYW5zcGFyZW50IiBmaWxsPSIjMDAwIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0xMiAxMCBoMSB2MSBoLTFaIE0xNCAxMCBoMSB2MSBoLTFaIE0xNiAxMCBoMSB2MSBoLTFaIE0xMCAxMiBoMSB2MSBoLTFaIE0xMCAxNCBoMSB2MSBoLTFaIE0xMCAxNiBoMSB2MSBoLTFaICIgLz48cGF0aCBjbGFzcz0icXItMzU4NCAiIHN0cm9rZT0idHJhbnNwYXJlbnQiIGZpbGw9IiMwMDAiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTTEyIDQgaDEgdjEgaC0xWiBNMTIgNiBoMSB2MSBoLTFaIE0xMiA3IGgxIHYxIGgtMVogTTEyIDggaDEgdjEgaC0xWiBNNCAxMiBoNCB2MSBoLTRaIE0xMiAxMiBoMSB2MSBoLTFaIE0xNyAxMiBoMSB2MSBoLTFaIE0yMCAxMiBoMyB2MSBoLTNaIE0yNCAxMiBoMSB2MSBoLTFaIE0xMiAyMSBoMSB2MSBoLTFaIE0xMiAyMiBoMSB2MSBoLTFaIE0xMiAyMyBoMSB2MSBoLTFaIE0xMiAyNCBoMSB2MSBoLTFaICIgLz48cGF0aCBjbGFzcz0icXItNTYzMiAiIHN0cm9rZT0idHJhbnNwYXJlbnQiIGZpbGw9IiMwMDAiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTTYgNiBoMyB2MSBoLTNaIE0yMCA2IGgzIHYxIGgtM1ogTTYgNyBoMyB2MSBoLTNaIE0yMCA3IGgzIHYxIGgtM1ogTTYgOCBoMyB2MSBoLTNaIE0yMCA4IGgzIHYxIGgtM1ogTTYgMjAgaDMgdjEgaC0zWiBNNiAyMSBoMyB2MSBoLTNaIE02IDIyIGgzIHYxIGgtM1ogIiAvPjwvc3ZnPg0K
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/samples/text b/vendor/chillerlan/php-qrcode/tests/Output/samples/text
deleted file mode 100644
index 23a7098f9..000000000
--- a/vendor/chillerlan/php-qrcode/tests/Output/samples/text
+++ /dev/null
@@ -1,29 +0,0 @@
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴🔴🔴🔴🔴🔴🔴⭕🔴🔴⭕⭕🔴⭕🔴🔴🔴🔴🔴🔴🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕🔴⭕⭕🔴⭕⭕🔴⭕🔴⭕⭕⭕⭕⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕🔴⭕🔴⭕🔴⭕🔴⭕🔴🔴🔴⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕🔴⭕⭕🔴⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕🔴🔴🔴⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴🔴🔴🔴🔴🔴🔴⭕🔴⭕🔴⭕🔴⭕🔴🔴🔴🔴🔴🔴🔴⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕🔴🔴⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴🔴🔴🔴⭕⭕🔴⭕🔴⭕🔴⭕⭕🔴⭕⭕🔴🔴🔴⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕⭕🔴🔴🔴⭕🔴⭕⭕🔴⭕🔴⭕⭕🔴⭕🔴🔴⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴⭕🔴🔴🔴⭕⭕⭕🔴⭕🔴🔴🔴🔴🔴⭕⭕🔴🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴⭕⭕⭕🔴🔴⭕🔴⭕🔴🔴⭕⭕⭕🔴⭕🔴⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕🔴🔴⭕🔴⭕🔴⭕⭕🔴🔴🔴⭕🔴⭕⭕🔴🔴⭕🔴⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕🔴⭕🔴⭕⭕🔴⭕🔴⭕🔴⭕🔴⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴🔴🔴🔴🔴🔴🔴⭕⭕⭕🔴⭕⭕🔴🔴⭕🔴🔴🔴⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕🔴⭕⭕🔴⭕🔴🔴🔴🔴⭕⭕🔴🔴⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕⭕🔴🔴🔴⭕⭕🔴⭕⭕⭕🔴🔴🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕🔴🔴⭕⭕⭕🔴⭕⭕🔴🔴⭕🔴⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕🔴🔴🔴⭕🔴⭕🔴⭕🔴🔴⭕🔴⭕⭕🔴⭕🔴⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕🔴⭕⭕⭕⭕⭕🔴⭕🔴🔴🔴🔴🔴⭕🔴⭕🔴🔴⭕⭕🔴⭕⭕⭕⭕
-⭕⭕⭕⭕🔴🔴🔴🔴🔴🔴🔴⭕🔴🔴⭕🔴🔴⭕⭕🔴⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
-⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕
diff --git a/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php b/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php
deleted file mode 100755
index 56936a745..000000000
--- a/vendor/chillerlan/php-qrcode/tests/QRCodeTest.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/**
- * Class QRCodeTest
- *
- * @filesource QRCodeTest.php
- * @created 17.11.2017
- * @package chillerlan\QRCodeTest
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeTest;
-
-use chillerlan\QRCode\{QROptions, QRCode};
-use chillerlan\QRCode\Data\{AlphaNum, Byte, Kanji, Number, QRCodeDataException};
-use chillerlan\QRCode\Output\QRCodeOutputException;
-use PHPUnit\Framework\TestCase;
-
-use function random_bytes;
-
-/**
- * Tests basic functions of the QRCode class
- */
-class QRCodeTest extends TestCase{
-
- /** @internal */
- protected QRCode $qrcode;
- /** @internal */
- protected QROptions $options;
-
- /**
- * invoke test instances
- *
- * @internal
- */
- protected function setUp():void{
- $this->qrcode = new QRCode;
- $this->options = new QROptions;
- }
-
- /**
- * isNumber() should pass on any number and fail on anything else
- */
- public function testIsNumber():void{
- $this::assertTrue($this->qrcode->isNumber('0123456789'));
-
- $this::assertFalse($this->qrcode->isNumber('ABC123'));
- }
-
- /**
- * isAlphaNum() should pass on the 45 defined characters and fail on anything else (e.g. lowercase)
- */
- public function testIsAlphaNum():void{
- $this::assertTrue($this->qrcode->isAlphaNum('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'));
-
- $this::assertFalse($this->qrcode->isAlphaNum('abc'));
- }
-
- /**
- * isKanji() should pass on Kanji/SJIS characters and fail on everything else
- */
- public function testIsKanji():void{
- $this::assertTrue($this->qrcode->isKanji('茗荷'));
-
- $this::assertFalse($this->qrcode->isKanji('Ã'));
- $this::assertFalse($this->qrcode->isKanji('ABC'));
- $this::assertFalse($this->qrcode->isKanji('123'));
- }
-
- /**
- * isByte() passses any binary string and only fails on empty strings
- */
- public function testIsByte():void{
- $this::assertTrue($this->qrcode->isByte("\x01\x02\x03"));
- $this::assertTrue($this->qrcode->isByte(' ')); // not empty!
- $this::assertTrue($this->qrcode->isByte('0'));
-
- $this::assertFalse($this->qrcode->isByte(''));
- }
-
- /**
- * tests if an exception is thrown when an invalid (built-in) output type is specified
- */
- public function testInitDataInterfaceException():void{
- $this->expectException(QRCodeOutputException::class);
- $this->expectExceptionMessage('invalid output type');
-
- $this->options->outputType = 'foo';
-
- (new QRCode($this->options))->render('test');
- }
-
- /**
- * tests if an exception is thrown when trying to call getMatrix() without data (empty string, no data set)
- */
- public function testGetMatrixException():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('QRCode::getMatrix() No data given.');
-
- $this->qrcode->getMatrix('');
- }
-
- /**
- * test whether stings are trimmed (they are not) - i'm still torn on that (see isByte)
- */
- public function testAvoidTrimming():void{
- $m1 = $this->qrcode->getMatrix('hello')->matrix();
- $m2 = $this->qrcode->getMatrix('hello ')->matrix(); // added space
-
- $this::assertNotSame($m1, $m2);
- }
-
- /**
- * tests if the data mode is overriden if QROptions::$dataModeOverride is set to a valid value
- *
- * @see https://github.com/chillerlan/php-qrcode/issues/39
- */
- public function testDataModeOverride():void{
-
- // no (or invalid) value set - auto detection
- $this->options->dataModeOverride = 'foo';
- $this->qrcode = new QRCode;
-
- $this::assertInstanceOf(Number::class, $this->qrcode->initDataInterface('123'));
- $this::assertInstanceOf(AlphaNum::class, $this->qrcode->initDataInterface('ABC123'));
- $this::assertInstanceOf(Byte::class, $this->qrcode->initDataInterface(random_bytes(32)));
- $this::assertInstanceOf(Kanji::class, $this->qrcode->initDataInterface('茗荷'));
-
- // data mode set: force the given data mode
- $this->options->dataModeOverride = 'Byte';
- $this->qrcode = new QRCode($this->options);
-
- $this::assertInstanceOf(Byte::class, $this->qrcode->initDataInterface('123'));
- $this::assertInstanceOf(Byte::class, $this->qrcode->initDataInterface('ABC123'));
- $this::assertInstanceOf(Byte::class, $this->qrcode->initDataInterface(random_bytes(32)));
- $this::assertInstanceOf(Byte::class, $this->qrcode->initDataInterface('茗荷'));
- }
-
- /**
- * tests if an exception is thrown when an invalid character occurs when forcing a data mode other than Byte
- */
- public function testDataModeOverrideError():void{
- $this->expectException(QRCodeDataException::class);
- $this->expectExceptionMessage('illegal char:');
-
- $this->options->dataModeOverride = 'AlphaNum';
-
- (new QRCode($this->options))->initDataInterface(random_bytes(32));
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/tests/QROptionsTest.php b/vendor/chillerlan/php-qrcode/tests/QROptionsTest.php
deleted file mode 100644
index 3a0260623..000000000
--- a/vendor/chillerlan/php-qrcode/tests/QROptionsTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * Class QROptionsTest
- *
- * @filesource QROptionsTest.php
- * @created 08.11.2018
- * @package chillerlan\QRCodeTest
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2018 smiley
- * @license MIT
- *
- * @noinspection PhpUnusedLocalVariableInspection
- */
-
-namespace chillerlan\QRCodeTest;
-
-use chillerlan\QRCode\{QRCode, QRCodeException, QROptions};
-use PHPUnit\Framework\TestCase;
-
-/**
- * QROptions test
- */
-class QROptionsTest extends TestCase{
-
- /**
- * @see testVersionClamp()
- * @return int[][]
- * @internal
- */
- public function VersionProvider():array{
- return [
- 'values > 40 should be clamped to 40' => [42, 40],
- 'values < 1 should be clamped to 1' => [-42, 1],
- 'values in between shold not be touched' => [21, 21],
- 'value -1 should be treated as is (default)' => [QRCode::VERSION_AUTO, -1],
- ];
- }
-
- /**
- * Tests the $version clamping
- *
- * @dataProvider VersionProvider
- */
- public function testVersionClamp(int $version, int $expected):void{
- $o = new QROptions(['version' => $version]);
-
- $this::assertSame($expected, $o->version);
- }
-
- /**
- * @see testVersionMinMaxClamp()
- * @return int[][]
- * @internal
- */
- public function VersionMinMaxProvider():array{
- return [
- 'normal clamp' => [5, 10, 5, 10],
- 'exceeding values' => [-42, 42, 1, 40],
- 'min > max' => [10, 5, 5, 10],
- 'min > max, exceeding' => [42, -42, 1, 40],
- ];
- }
-
- /**
- * Tests the $versionMin/$versionMax clamping
- *
- * @dataProvider VersionMinMaxProvider
- */
- public function testVersionMinMaxClamp(int $versionMin, int $versionMax, int $expectedMin, int $expectedMax):void{
- $o = new QROptions(['versionMin' => $versionMin, 'versionMax' => $versionMax]);
-
- $this::assertSame($expectedMin, $o->versionMin);
- $this::assertSame($expectedMax, $o->versionMax);
- }
-
- /**
- * @see testMaskPatternClamp()
- * @return int[][]
- * @internal
- */
- public function MaskPatternProvider():array{
- return [
- 'exceed max' => [42, 7,],
- 'exceed min' => [-42, 0],
- 'default (-1)' => [QRCode::MASK_PATTERN_AUTO, -1],
- ];
- }
-
- /**
- * Tests the $maskPattern clamping
- *
- * @dataProvider MaskPatternProvider
- */
- public function testMaskPatternClamp(int $maskPattern, int $expected):void{
- $o = new QROptions(['maskPattern' => $maskPattern]);
-
- $this::assertSame($expected, $o->maskPattern);
- }
-
- /**
- * Tests if an exception is thrown on an incorrect ECC level
- */
- public function testInvalidEccLevelException():void{
- $this->expectException(QRCodeException::class);
- $this->expectExceptionMessage('Invalid error correct level: 42');
-
- $o = new QROptions(['eccLevel' => 42]);
- }
-
- /**
- * @see testClampRGBValues()
- * @return int[][][]
- * @internal
- */
- public function RGBProvider():array{
- return [
- 'exceeding values' => [[-1, 0, 999], [0, 0 ,255]],
- 'too few values' => [[1, 2], [255, 255, 255]],
- 'too many values' => [[1, 2, 3, 4, 5], [1, 2, 3]],
- ];
- }
-
- /**
- * Tests clamping of the RGB values for $imageTransparencyBG
- *
- * @dataProvider RGBProvider
- */
- public function testClampRGBValues(array $rgb, array $expected):void{
- $o = new QROptions(['imageTransparencyBG' => $rgb]);
-
- $this::assertSame($expected, $o->imageTransparencyBG);
- }
-
- /**
- * Tests if an exception is thrown when a non-numeric RGB value was encoutered
- */
- public function testInvalidRGBValueException():void{
- $this->expectException(QRCodeException::class);
- $this->expectExceptionMessage('Invalid RGB value.');
-
- $o = new QROptions(['imageTransparencyBG' => ['r', 'g', 'b']]);
- }
-
-}