Просмотр исходного кода

:shower: allow testing of specific patterns

codemasher 5 лет назад
Родитель
Сommit
a8aad88979
2 измененных файлов с 12 добавлено и 8 удалено
  1. 5 6
      src/Data/MaskPatternTester.php
  2. 7 2
      tests/Data/MaskPatternTesterTest.php

+ 5 - 6
src/Data/MaskPatternTester.php

@@ -46,10 +46,7 @@ final class MaskPatternTester{
 		$penalties = [];
 
 		for($pattern = 0; $pattern < 8; $pattern++){
-			$this->matrix = $this->dataInterface->initMatrix($pattern, true);
-			$this->moduleCount = $this->matrix->size();
-
-			$penalties[$pattern] = $this->testPattern();
+			$penalties[$pattern] = $this->testPattern($pattern);
 		}
 
 		return array_search(min($penalties), $penalties, true);
@@ -61,8 +58,10 @@ final class MaskPatternTester{
 	 * @see \chillerlan\QRCode\QROptions::$maskPattern
 	 * @see \chillerlan\QRCode\Data\QRMatrix::$maskPattern
 	 */
-	protected function testPattern():int{
-		$penalty  = 0;
+	public function testPattern(int $pattern):int{
+		$this->matrix      = $this->dataInterface->initMatrix($pattern, true);
+		$this->moduleCount = $this->matrix->size();
+		$penalty           = 0;
 
 		for($level = 1; $level <= 4; $level++){
 			$penalty += call_user_func([$this, 'testLevel'.$level]);

+ 7 - 2
tests/Data/MaskPatternTesterTest.php

@@ -21,10 +21,15 @@ class MaskPatternTesterTest extends QRTestAbstract{
 
 	// coverage
 	public function testMaskpattern():void{
-		$matrix = (new Byte(new QROptions(['version' => 10]), 'test'))->initMatrix(0, true);
+		$dataInterface = new Byte(new QROptions(['version' => 10]), 'test');
 
-		$this::assertSame(6178, (new MaskPatternTester($matrix))->testPattern());
+		$this::assertSame(4, (new MaskPatternTester($dataInterface))->getBestMaskPattern());
 	}
 
+	public function testMaskpatternID():void{
+		$dataInterface = new Byte(new QROptions(['version' => 10]), 'test');
+
+		$this::assertSame(6178, (new MaskPatternTester($dataInterface))->testPattern(0));
+	}
 
 }