From c5283fb1fa6be0e807d5549599ac5243e0b1ef61 Mon Sep 17 00:00:00 2001 From: smiley Date: Tue, 24 Oct 2017 16:32:28 +0200 Subject: [PATCH] :octocat: refactor/remove QRConst::class --- src/Data/AlphaNum.php | 4 +- src/Data/Byte.php | 4 +- src/Data/Kanji.php | 4 +- src/Data/Number.php | 4 +- src/Data/QRDataInterface.php | 12 +++ src/QRCode.php | 117 ++++++++++++++++++----- src/QRConst.php | 177 ----------------------------------- src/Util.php | 87 +++++++++++++++-- tests/BitBufferTest.php | 10 +- tests/Data/DataTest.php | 14 +-- tests/QRCodeTest.php | 6 +- tests/UtilTest.php | 4 +- 12 files changed, 210 insertions(+), 233 deletions(-) delete mode 100644 src/QRConst.php diff --git a/src/Data/AlphaNum.php b/src/Data/AlphaNum.php index b81ee6f69..333da7154 100644 --- a/src/Data/AlphaNum.php +++ b/src/Data/AlphaNum.php @@ -12,7 +12,7 @@ namespace chillerlan\QRCode\Data; -use chillerlan\QRCode\{BitBuffer, QRConst}; +use chillerlan\QRCode\BitBuffer; /** * @@ -34,7 +34,7 @@ class AlphaNum extends QRDataAbstract{ /** * @var int */ - public $mode = QRConst::MODE_ALPHANUM; + public $mode = self::MODE_ALPHANUM; /** * @var array diff --git a/src/Data/Byte.php b/src/Data/Byte.php index c37ebb22a..aa60f4405 100644 --- a/src/Data/Byte.php +++ b/src/Data/Byte.php @@ -12,7 +12,7 @@ namespace chillerlan\QRCode\Data; -use chillerlan\QRCode\{BitBuffer, QRConst}; +use chillerlan\QRCode\BitBuffer; /** * @@ -22,7 +22,7 @@ class Byte extends QRDataAbstract{ /** * @var int */ - public $mode = QRConst::MODE_BYTE; + public $mode = self::MODE_BYTE; /** * @var array diff --git a/src/Data/Kanji.php b/src/Data/Kanji.php index 8b4970df8..acdb10811 100644 --- a/src/Data/Kanji.php +++ b/src/Data/Kanji.php @@ -12,7 +12,7 @@ namespace chillerlan\QRCode\Data; -use chillerlan\QRCode\{BitBuffer, QRConst}; +use chillerlan\QRCode\BitBuffer; /** * @@ -22,7 +22,7 @@ class Kanji extends QRDataAbstract{ /** * @var int */ - public $mode = QRConst::MODE_KANJI; + public $mode = self::MODE_KANJI; /** * @var array diff --git a/src/Data/Number.php b/src/Data/Number.php index 1e17e445a..d8b90a16b 100644 --- a/src/Data/Number.php +++ b/src/Data/Number.php @@ -12,7 +12,7 @@ namespace chillerlan\QRCode\Data; -use chillerlan\QRCode\{BitBuffer, QRConst}; +use chillerlan\QRCode\BitBuffer; /** * @@ -22,7 +22,7 @@ class Number extends QRDataAbstract{ /** * @var int */ - public $mode = QRConst::MODE_NUMBER; + public $mode = self::MODE_NUMBER; /** * @var array diff --git a/src/Data/QRDataInterface.php b/src/Data/QRDataInterface.php index ffd1e49a8..9063e8453 100644 --- a/src/Data/QRDataInterface.php +++ b/src/Data/QRDataInterface.php @@ -21,6 +21,18 @@ use chillerlan\QRCode\BitBuffer; */ interface QRDataInterface{ + const MODE_NUMBER = 1 << 0; + const MODE_ALPHANUM = 1 << 1; + const MODE_BYTE = 1 << 2; + const MODE_KANJI = 1 << 3; + + const MODE = [ + self::MODE_NUMBER => 0, + self::MODE_ALPHANUM => 1, + self::MODE_BYTE => 2, + self::MODE_KANJI => 3, + ]; + /** * @param \chillerlan\QRCode\BitBuffer $buffer * @return void diff --git a/src/QRCode.php b/src/QRCode.php index b54ada3e8..6c4ad8abb 100644 --- a/src/QRCode.php +++ b/src/QRCode.php @@ -12,12 +12,16 @@ namespace chillerlan\QRCode; -use chillerlan\QRCode\Data\{AlphaNum, Byte, Kanji, Number}; +use chillerlan\QRCode\Data\{ + AlphaNum, Byte, Kanji, Number, QRDataInterface +}; use chillerlan\QRCode\Output\QROutputInterface; /** * @link https://github.com/kazuhikoarase/qrcode-generator/tree/master/php * @link http://www.thonky.com/qr-code-tutorial/ + * + * const ALL THE THINGS! ~John Carmack */ class QRCode{ @@ -52,6 +56,70 @@ class QRCode{ const TYPE_09 = 9; // 1856 1456 1056 800 const TYPE_10 = 10; // 2192 1728 1232 976 + + const MAX_BITS = [ + self::TYPE_01 => [ 128, 152, 72, 104], + self::TYPE_02 => [ 224, 272, 128, 176], + self::TYPE_03 => [ 352, 440, 208, 272], + self::TYPE_04 => [ 512, 640, 288, 384], + self::TYPE_05 => [ 688, 864, 368, 496], + self::TYPE_06 => [ 864, 1088, 480, 608], + self::TYPE_07 => [ 992, 1248, 528, 704], + self::TYPE_08 => [1232, 1552, 688, 880], + self::TYPE_09 => [1456, 1856, 800, 1056], + self::TYPE_10 => [1728, 2192, 976, 1232], + ]; + + const RSBLOCK = [ + self::ERROR_CORRECT_LEVEL_L => 0, + self::ERROR_CORRECT_LEVEL_M => 1, + self::ERROR_CORRECT_LEVEL_Q => 2, + self::ERROR_CORRECT_LEVEL_H => 3, + ]; + + const PATTERN_POSITION = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170], + ]; + /** * @var array */ @@ -138,7 +206,7 @@ class QRCode{ $options = new QROptions; } - if(!in_array($options->errorCorrectLevel, QRConst::RSBLOCK, true)){ + if(!in_array($options->errorCorrectLevel, self::RSBLOCK, true)){ throw new QRCodeException('Invalid error correct level: '.$options->errorCorrectLevel); } @@ -146,22 +214,21 @@ class QRCode{ switch(true){ case Util::isAlphaNum($data): - $mode = Util::isNumber($data) ? QRConst::MODE_NUMBER : QRConst::MODE_ALPHANUM; + $mode = Util::isNumber($data) ? QRDataInterface::MODE_NUMBER : QRDataInterface::MODE_ALPHANUM; break; case Util::isKanji($data): - $mode = QRConst::MODE_KANJI; + $mode = QRDataInterface::MODE_KANJI; break; default: - $mode = QRConst::MODE_BYTE; + $mode = QRDataInterface::MODE_BYTE; break; } - // see, Scrunitizer, it is concrete! :P $qrDataInterface = [ - QRConst::MODE_ALPHANUM => AlphaNum::class, - QRConst::MODE_BYTE => Byte::class, - QRConst::MODE_KANJI => Kanji::class, - QRConst::MODE_NUMBER => Number::class, + QRDataInterface::MODE_ALPHANUM => AlphaNum::class, + QRDataInterface::MODE_BYTE => Byte::class, + QRDataInterface::MODE_KANJI => Kanji::class, + QRDataInterface::MODE_NUMBER => Number::class, ][$mode]; $this->qrDataInterface = new $qrDataInterface($data); @@ -183,7 +250,7 @@ class QRCode{ protected function getTypeNumber(int $mode):int { $length = $this->qrDataInterface->dataLength; - if($this->qrDataInterface->mode === QRConst::MODE_KANJI){ + if($this->qrDataInterface->mode === QRDataInterface::MODE_KANJI){ $length = floor($length / 2); } @@ -433,7 +500,7 @@ class QRCode{ $this->bitBuffer->clear(); $this->bitBuffer->put($this->qrDataInterface->mode, 4); $this->bitBuffer->put( - $this->qrDataInterface->mode === QRConst::MODE_KANJI + $this->qrDataInterface->mode === QRDataInterface::MODE_KANJI ? floor($this->qrDataInterface->dataLength / 2) : $this->qrDataInterface->dataLength, $this->qrDataInterface->getLengthInBits($this->typeNumber) @@ -441,7 +508,7 @@ class QRCode{ $this->qrDataInterface->write($this->bitBuffer); - $MAX_BITS = QRConst::MAX_BITS[$this->typeNumber][$this->errorCorrectLevel]; + $MAX_BITS = self::MAX_BITS[$this->typeNumber][$this->errorCorrectLevel]; if($this->bitBuffer->length > $MAX_BITS){ throw new QRCodeException('code length overflow. ('.$this->bitBuffer->length.' > '.$MAX_BITS.'bit)'); @@ -458,19 +525,21 @@ class QRCode{ } // padding + $PAD0 = 0xEC; + $PAD1 = 0x11; while(true){ if($this->bitBuffer->length >= $MAX_BITS){ break; } - $this->bitBuffer->put(QRConst::PAD0, 8); + $this->bitBuffer->put($PAD0, 8); if($this->bitBuffer->length >= $MAX_BITS){ break; } - $this->bitBuffer->put(QRConst::PAD1, 8); + $this->bitBuffer->put($PAD1, 8); } } @@ -578,14 +647,14 @@ class QRCode{ $a = $row + $_col; $m = $row * $_col; $MASK_PATTERN = [ - QRConst::MASK_PATTERN000 => $a % 2, - QRConst::MASK_PATTERN001 => $row % 2, - QRConst::MASK_PATTERN010 => $_col % 3, - QRConst::MASK_PATTERN011 => $a % 3, - QRConst::MASK_PATTERN100 => (floor($row / 2) + floor($_col / 3)) % 2, - QRConst::MASK_PATTERN101 => $m % 2 + $m % 3, - QRConst::MASK_PATTERN110 => ($m % 2 + $m % 3) % 2, - QRConst::MASK_PATTERN111 => ($m % 3 + $a % 2) % 2, + 0 => $a % 2, + 1 => $row % 2, + 2 => $_col % 3, + 3 => $a % 3, + 4 => (floor($row / 2) + floor($_col / 3)) % 2, + 5 => $m % 2 + $m % 3, + 6 => ($m % 2 + $m % 3) % 2, + 7 => ($m % 3 + $a % 2) % 2, ][$pattern]; if($MASK_PATTERN === 0){ @@ -644,7 +713,7 @@ class QRCode{ * @return void */ protected function setupPositionAdjustPattern(){ - $range = QRConst::PATTERN_POSITION[$this->typeNumber - 1]; + $range = self::PATTERN_POSITION[$this->typeNumber - 1]; foreach($range as $i => $posI){ foreach($range as $j => $posJ){ diff --git a/src/QRConst.php b/src/QRConst.php deleted file mode 100644 index 77876f305..000000000 --- a/src/QRConst.php +++ /dev/null @@ -1,177 +0,0 @@ - - * @copyright 2015 Smiley - * @license MIT - */ - -namespace chillerlan\QRCode; - -/** - * const ALL THE THINGS! ~John Carmack - */ -class QRConst{ - - const RSBLOCK = [ - QRCode::ERROR_CORRECT_LEVEL_L => 0, - QRCode::ERROR_CORRECT_LEVEL_M => 1, - QRCode::ERROR_CORRECT_LEVEL_Q => 2, - QRCode::ERROR_CORRECT_LEVEL_H => 3, - ]; - - const MAX_BITS = [ - QRCode::TYPE_01 => [ 128, 152, 72, 104], - QRCode::TYPE_02 => [ 224, 272, 128, 176], - QRCode::TYPE_03 => [ 352, 440, 208, 272], - QRCode::TYPE_04 => [ 512, 640, 288, 384], - QRCode::TYPE_05 => [ 688, 864, 368, 496], - QRCode::TYPE_06 => [ 864, 1088, 480, 608], - QRCode::TYPE_07 => [ 992, 1248, 528, 704], - QRCode::TYPE_08 => [1232, 1552, 688, 880], - QRCode::TYPE_09 => [1456, 1856, 800, 1056], - QRCode::TYPE_10 => [1728, 2192, 976, 1232], - ]; - - const MODE_NUMBER = 1 << 0; - const MODE_ALPHANUM = 1 << 1; - const MODE_BYTE = 1 << 2; - const MODE_KANJI = 1 << 3; - - const MODE = [ - self::MODE_NUMBER => 0, - self::MODE_ALPHANUM => 1, - self::MODE_BYTE => 2, - self::MODE_KANJI => 3, - ]; - - const MASK_PATTERN000 = 0; - const MASK_PATTERN001 = 1; - const MASK_PATTERN010 = 2; - const MASK_PATTERN011 = 3; - const MASK_PATTERN100 = 4; - const MASK_PATTERN101 = 5; - const MASK_PATTERN110 = 6; - const MASK_PATTERN111 = 7; - - const G15_MASK = (1 << 14)|(1 << 12)|(1 << 10)|(1 << 4)|(1 << 1); - const G15 = (1 << 10)|(1 << 8)|(1 << 5)|(1 << 4)|(1 << 2)|(1 << 1)|(1 << 0); - const G18 = (1 << 12)|(1 << 11)|(1 << 10)|(1 << 9)|(1 << 8)|(1 << 5)|(1 << 2)|(1 << 0); - - const PAD0 = 0xEC; - const PAD1 = 0x11; - - const MAX_LENGTH = [ - [[ 41, 25, 17, 10], [ 34, 20, 14, 8], [ 27, 16, 11, 7], [ 17, 10, 7, 4]], - [[ 77, 47, 32, 20], [ 63, 38, 26, 16], [ 48, 29, 20, 12], [ 34, 20, 14, 8]], - [[127, 77, 53, 32], [101, 61, 42, 26], [ 77, 47, 32, 20], [ 58, 35, 24, 15]], - [[187, 114, 78, 48], [149, 90, 62, 38], [111, 67, 46, 28], [ 82, 50, 34, 21]], - [[255, 154, 106, 65], [202, 122, 84, 52], [144, 87, 60, 37], [106, 64, 44, 27]], - [[322, 195, 134, 82], [255, 154, 106, 65], [178, 108, 74, 45], [139, 84, 58, 36]], - [[370, 224, 154, 95], [293, 178, 122, 75], [207, 125, 86, 53], [154, 93, 64, 39]], - [[461, 279, 192, 118], [365, 221, 152, 93], [259, 157, 108, 66], [202, 122, 84, 52]], - [[552, 335, 230, 141], [432, 262, 180, 111], [312, 189, 130, 80], [235, 143, 98, 60]], - [[652, 395, 271, 167], [513, 311, 213, 131], [364, 221, 151, 93], [288, 174, 119, 74]], - ]; - - const BLOCK_TABLE = [ - // 1 - [1, 26, 19], // L - [1, 26, 16], // M - [1, 26, 13], // Q - [1, 26, 9], // H - // 2 - [1, 44, 34], - [1, 44, 28], - [1, 44, 22], - [1, 44, 16], - // 3 - [1, 70, 55], - [1, 70, 44], - [2, 35, 17], - [2, 35, 13], - // 4 - [1, 100, 80], - [2, 50, 32], - [2, 50, 24], - [4, 25, 9], - // 5 - [1, 134, 108], - [2, 67, 43], - [2, 33, 15, 2, 34, 16], - [2, 33, 11, 2, 34, 12], - // 6 - [2, 86, 68], - [4, 43, 27], - [4, 43, 19], - [4, 43, 15], - // 7 - [2, 98, 78], - [4, 49, 31], - [2, 32, 14, 4, 33, 15], - [4, 39, 13, 1, 40, 14], - // 8 - [2, 121, 97], - [2, 60, 38, 2, 61, 39], - [4, 40, 18, 2, 41, 19], - [4, 40, 14, 2, 41, 15], - // 9 - [2, 146, 116], - [3, 58, 36, 2, 59, 37], - [4, 36, 16, 4, 37, 17], - [4, 36, 12, 4, 37, 13], - // 10 - [2, 86, 68, 2, 87, 69], - [4, 69, 43, 1, 70, 44], - [6, 43, 19, 2, 44, 20], - [6, 43, 15, 2, 44, 16], - ]; - - const PATTERN_POSITION = [ - [], - [6, 18], - [6, 22], - [6, 26], - [6, 30], - [6, 34], - [6, 22, 38], - [6, 24, 42], - [6, 26, 46], - [6, 28, 50], - [6, 30, 54], - [6, 32, 58], - [6, 34, 62], - [6, 26, 46, 66], - [6, 26, 48, 70], - [6, 26, 50, 74], - [6, 30, 54, 78], - [6, 30, 56, 82], - [6, 30, 58, 86], - [6, 34, 62, 90], - [6, 28, 50, 72, 94], - [6, 26, 50, 74, 98], - [6, 30, 54, 78, 102], - [6, 28, 54, 80, 106], - [6, 32, 58, 84, 110], - [6, 30, 58, 86, 114], - [6, 34, 62, 90, 118], - [6, 26, 50, 74, 98, 122], - [6, 30, 54, 78, 102, 126], - [6, 26, 52, 78, 104, 130], - [6, 30, 56, 82, 108, 134], - [6, 34, 60, 86, 112, 138], - [6, 30, 58, 86, 114, 142], - [6, 34, 62, 90, 118, 146], - [6, 30, 54, 78, 102, 126, 150], - [6, 24, 50, 76, 102, 128, 154], - [6, 28, 54, 80, 106, 132, 158], - [6, 32, 58, 84, 110, 136, 162], - [6, 26, 54, 82, 110, 138, 166], - [6, 30, 58, 86, 114, 142, 170], - ]; - -} diff --git a/src/Util.php b/src/Util.php index a8834ff0e..1c3b9ab7f 100644 --- a/src/Util.php +++ b/src/Util.php @@ -12,11 +12,79 @@ namespace chillerlan\QRCode; +use chillerlan\QRCode\Data\QRDataInterface; + /** * */ class Util{ + const MAX_LENGTH = [ + [[ 41, 25, 17, 10], [ 34, 20, 14, 8], [ 27, 16, 11, 7], [ 17, 10, 7, 4]], + [[ 77, 47, 32, 20], [ 63, 38, 26, 16], [ 48, 29, 20, 12], [ 34, 20, 14, 8]], + [[127, 77, 53, 32], [101, 61, 42, 26], [ 77, 47, 32, 20], [ 58, 35, 24, 15]], + [[187, 114, 78, 48], [149, 90, 62, 38], [111, 67, 46, 28], [ 82, 50, 34, 21]], + [[255, 154, 106, 65], [202, 122, 84, 52], [144, 87, 60, 37], [106, 64, 44, 27]], + [[322, 195, 134, 82], [255, 154, 106, 65], [178, 108, 74, 45], [139, 84, 58, 36]], + [[370, 224, 154, 95], [293, 178, 122, 75], [207, 125, 86, 53], [154, 93, 64, 39]], + [[461, 279, 192, 118], [365, 221, 152, 93], [259, 157, 108, 66], [202, 122, 84, 52]], + [[552, 335, 230, 141], [432, 262, 180, 111], [312, 189, 130, 80], [235, 143, 98, 60]], + [[652, 395, 271, 167], [513, 311, 213, 131], [364, 221, 151, 93], [288, 174, 119, 74]], + ]; + + const BLOCK_TABLE = [ + // 1 + [1, 26, 19], // L + [1, 26, 16], // M + [1, 26, 13], // Q + [1, 26, 9], // H + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + ]; + /** * @param string $string * @@ -92,7 +160,10 @@ class Util{ * @return int */ public static function getBCHTypeInfo(int $data):int { - return (($data << 10)|self::getBCHT($data, 10, QRConst::G15))^QRConst::G15_MASK; + $G15_MASK = (1 << 14)|(1 << 12)|(1 << 10)|(1 << 4)|(1 << 1); + $G15 = (1 << 10)|(1 << 8)|(1 << 5)|(1 << 4)|(1 << 2)|(1 << 1)|(1 << 0); + + return (($data << 10)|self::getBCHT($data, 10, $G15))^$G15_MASK; } /** @@ -101,7 +172,9 @@ class Util{ * @return int */ public static function getBCHTypeNumber(int $data):int{ - return ($data << 12)|self::getBCHT($data, 12, QRConst::G18); + $G18 = (1 << 12)|(1 << 11)|(1 << 10)|(1 << 9)|(1 << 8)|(1 << 5)|(1 << 2)|(1 << 0); + + return ($data << 12)|self::getBCHT($data, 12, $G18); } /** @@ -146,11 +219,11 @@ class Util{ */ public static function getRSBlocks(int $typeNumber, int $errorCorrectLevel):array { - if(!array_key_exists($errorCorrectLevel, QRConst::RSBLOCK)){ + if(!array_key_exists($errorCorrectLevel, QRCode::RSBLOCK)){ throw new QRCodeException('$typeNumber: '.$typeNumber.' / $errorCorrectLevel: '.$errorCorrectLevel); } - $rsBlock = QRConst::BLOCK_TABLE[($typeNumber - 1) * 4 + QRConst::RSBLOCK[$errorCorrectLevel]]; + $rsBlock = self::BLOCK_TABLE[($typeNumber - 1) * 4 + QRCode::RSBLOCK[$errorCorrectLevel]]; $list = []; $length = count($rsBlock) / 3; @@ -173,15 +246,15 @@ class Util{ */ public static function getMaxLength(int $typeNumber, int $mode, int $errorCorrectLevel):int { - if(!array_key_exists($errorCorrectLevel, QRConst::RSBLOCK)){ + if(!array_key_exists($errorCorrectLevel, QRCode::RSBLOCK)){ throw new QRCodeException('Invalid error correct level: '.$errorCorrectLevel); } - if(!array_key_exists($mode, QRConst::MODE)){ + if(!array_key_exists($mode, QRDataInterface::MODE)){ throw new QRCodeException('Invalid mode: '.$mode); } - return QRConst::MAX_LENGTH[$typeNumber - 1][QRConst::RSBLOCK[$errorCorrectLevel]][QRConst::MODE[$mode]]; + return self::MAX_LENGTH[$typeNumber - 1][QRCode::RSBLOCK[$errorCorrectLevel]][QRDataInterface::MODE[$mode]]; } } diff --git a/tests/BitBufferTest.php b/tests/BitBufferTest.php index 017da07e8..b44e7616d 100644 --- a/tests/BitBufferTest.php +++ b/tests/BitBufferTest.php @@ -10,7 +10,7 @@ namespace chillerlan\QRCodeTest; use chillerlan\QRCode\BitBuffer; -use chillerlan\QRCode\QRConst; +use chillerlan\QRCode\Data\QRDataInterface; use PHPUnit\Framework\TestCase; class BitBufferTest extends TestCase{ @@ -26,10 +26,10 @@ class BitBufferTest extends TestCase{ public function bitProvider(){ return [ - [QRConst::MODE_NUMBER, 16], - [QRConst::MODE_ALPHANUM, 32], - [QRConst::MODE_BYTE, 64], - [QRConst::MODE_KANJI, 128], + [QRDataInterface::MODE_NUMBER, 16], + [QRDataInterface::MODE_ALPHANUM, 32], + [QRDataInterface::MODE_BYTE, 64], + [QRDataInterface::MODE_KANJI, 128], ]; } diff --git a/tests/Data/DataTest.php b/tests/Data/DataTest.php index a07fb2503..e7bae1ac1 100644 --- a/tests/Data/DataTest.php +++ b/tests/Data/DataTest.php @@ -11,11 +11,11 @@ namespace chillerlan\QRCodeTest\Data; use chillerlan\QRCode\BitBuffer; -use chillerlan\QRCode\QRConst; use chillerlan\QRCode\Data\AlphaNum; use chillerlan\QRCode\Data\Byte; use chillerlan\QRCode\Data\Kanji; use chillerlan\QRCode\Data\Number; +use chillerlan\QRCode\Data\QRDataInterface; use PHPUnit\Framework\TestCase; class DataTest extends TestCase{ @@ -32,12 +32,12 @@ class DataTest extends TestCase{ public function bitProviderMode(){ return [ - [QRConst::MODE_NUMBER, Number::class, '123456789'], - [QRConst::MODE_NUMBER, Number::class, '1234567890'], - [QRConst::MODE_NUMBER, Number::class, '12345678901'], - [QRConst::MODE_ALPHANUM, AlphaNum::class, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'], - [QRConst::MODE_BYTE, Byte::class, '#\\'], - [QRConst::MODE_KANJI, Kanji::class, '茗荷'], + [QRDataInterface::MODE_NUMBER, Number::class, '123456789'], + [QRDataInterface::MODE_NUMBER, Number::class, '1234567890'], + [QRDataInterface::MODE_NUMBER, Number::class, '12345678901'], + [QRDataInterface::MODE_ALPHANUM, AlphaNum::class, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'], + [QRDataInterface::MODE_BYTE, Byte::class, '#\\'], + [QRDataInterface::MODE_KANJI, Kanji::class, '茗荷'], ]; } diff --git a/tests/QRCodeTest.php b/tests/QRCodeTest.php index de7819baf..7c97918e5 100644 --- a/tests/QRCodeTest.php +++ b/tests/QRCodeTest.php @@ -13,7 +13,6 @@ namespace chillerlan\QRCodeTest; use chillerlan\QRCode\Output\QRString; use chillerlan\QRCode\QRCode; -use chillerlan\QRCode\QRConst; use chillerlan\QRCode\QROptions; use ReflectionClass; use PHPUnit\Framework\TestCase; @@ -68,8 +67,9 @@ class QRCodeTest extends TestCase{ * @dataProvider stringDataProvider */ public function testTypeAndErrorcorrectlevelCoverage($data){ - foreach(QRConst::MAX_BITS as $type => $x){ - foreach(QRConst::RSBLOCK as $eclevel => $y){ + + foreach(range(1, 10) as $type){ + foreach(range(0, 3) as $eclevel){ $this->options->typeNumber = $type; $this->options->errorCorrectLevel = $eclevel; $this->assertInstanceOf(QRCode::class, new QRCode($data, $this->output, $this->options)); diff --git a/tests/UtilTest.php b/tests/UtilTest.php index 2f81420fa..db243cd71 100644 --- a/tests/UtilTest.php +++ b/tests/UtilTest.php @@ -10,7 +10,7 @@ namespace chillerlan\QRCodeTest; use chillerlan\QRCode\QRCode; -use chillerlan\QRCode\QRConst; +use chillerlan\QRCode\Data\QRDataInterface; use chillerlan\QRCode\Util; use PHPUnit\Framework\TestCase; @@ -52,7 +52,7 @@ class UtilTest extends TestCase{ * @expectedExceptionMessage Invalid error correct level: 42 */ public static function testGetMaxLengthECLevelException(){ - Util::getMaxLength(QRCode::TYPE_01, QRConst::MODE_BYTE, 42); + Util::getMaxLength(QRCode::TYPE_01, QRDataInterface::MODE_BYTE, 42); } /**