summaryrefslogtreecommitdiff
path: root/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php')
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php110
1 files changed, 86 insertions, 24 deletions
diff --git a/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php b/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
index 19d74617a..d533c3f17 100644
--- a/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
+++ b/vendor/chillerlan/php-qrcode/tests/Data/DatainterfaceTestAbstract.php
@@ -12,54 +12,116 @@
namespace chillerlan\QRCodeTest\Data;
+use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;
+use PHPUnit\Framework\TestCase;
use chillerlan\QRCode\Data\{QRCodeDataException, QRDataInterface, QRMatrix};
-use chillerlan\QRCodeTest\QRTestAbstract;
+use ReflectionClass;
-abstract class DatainterfaceTestAbstract extends QRTestAbstract{
+use function str_repeat;
- /**
- * @var \chillerlan\QRCode\Data\QRDataAbstract
- */
- protected $dataInterface;
+/**
+ * The data interface test abstract
+ */
+abstract class DatainterfaceTestAbstract extends TestCase{
- protected $testdata;
- protected $expected;
+ /** @internal */
+ protected ReflectionClass $reflection;
+ /** @internal */
+ protected QRDataInterface $dataInterface;
+ /** @internal */
+ protected string $testdata;
+ /** @internal */
+ protected array $expected;
+ /**
+ * @internal
+ */
protected function setUp():void{
- parent::setUp();
-
- $this->dataInterface = $this->reflection->newInstanceArgs([new QROptions(['version' => 4])]);
+ $this->dataInterface = $this->getDataInterfaceInstance(new QROptions(['version' => 4]));
+ $this->reflection = new ReflectionClass($this->dataInterface);
}
- public function testInstance(){
- $this->dataInterface = $this->reflection->newInstanceArgs([new QROptions, $this->testdata]);
+ /**
+ * Returns a data interface instance
+ *
+ * @internal
+ */
+ abstract protected function getDataInterfaceInstance(QROptions $options):QRDataInterface;
- $this->assertInstanceOf(QRDataInterface::class, $this->dataInterface);
+ /**
+ * Verifies the data interface instance
+ */
+ public function testInstance():void{
+ $this::assertInstanceOf(QRDataInterface::class, $this->dataInterface);
}
- public function testSetData(){
+ /**
+ * Tests ecc masking and verifies against a sample
+ */
+ public function testMaskEcc():void{
$this->dataInterface->setData($this->testdata);
- $this->assertSame($this->expected, $this->getProperty('matrixdata')->getValue($this->dataInterface));
+ $maskECC = $this->reflection->getMethod('maskECC');
+ $maskECC->setAccessible(true);
+
+ $this::assertSame($this->expected, $maskECC->invoke($this->dataInterface));
}
- public function testInitMatrix(){
- $m = $this->dataInterface->setData($this->testdata)->initMatrix(0);
+ /**
+ * @see testInitMatrix()
+ * @internal
+ * @return int[][]
+ */
+ public function MaskPatternProvider():array{
+ return [[0], [1], [2], [3], [4], [5], [6], [7]];
+ }
- $this->assertInstanceOf(QRMatrix::class, $m);
+ /**
+ * 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());
}
- public function testGetMinimumVersion(){
- $this->assertSame(1, $this->getMethod('getMinimumVersion')->invoke($this->dataInterface));
+ /**
+ * 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));
}
- public function testGetMinimumVersionException(){
+ /**
+ * 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->getProperty('strlen')->setValue($this->dataInterface, 13370);
- $this->getMethod('getMinimumVersion')->invoke($this->dataInterface);
+ $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));
}
}