| @@ -31,6 +31,23 @@ final class MDPuqiTest extends TestCase { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Provider for image sizes. 0: width, 1: height, 2: expected status, 3: expected score. | ||||
|      * | ||||
|      * @return Generator<array{0: int, 1: int, 2: MDPuqiMessageStatus, 3:}> | ||||
|      */ | ||||
|     public static function imgSizesProvider():Generator { | ||||
| 
 | ||||
|         yield 'Both too small' => [MDPuqi::THRESHOLD_IMG_TOO_SMALL - 1, MDPuqi::THRESHOLD_IMG_TOO_SMALL - 1, MDPuqiMessageStatus::warning, MDPuqi::QI_PENALTY_IMAGE_TOO_SMALL]; | ||||
|         yield 'Width too small' => [MDPuqi::THRESHOLD_IMG_TOO_SMALL - 1, MDPuqi::THRESHOLD_IMG_TOO_SMALL, MDPuqiMessageStatus::warning, MDPuqi::QI_PENALTY_IMAGE_SMALL]; | ||||
|         yield 'Height too small' => [MDPuqi::THRESHOLD_IMG_TOO_SMALL, MDPuqi::THRESHOLD_IMG_TOO_SMALL - 1, MDPuqiMessageStatus::warning, MDPuqi::QI_PENALTY_IMAGE_SMALL]; | ||||
| 
 | ||||
|         yield 'Both small' => [MDPuqi::THRESHOLD_IMG_SMALL - 1, MDPuqi::THRESHOLD_IMG_SMALL - 1, MDPuqiMessageStatus::warning, MDPuqi::QI_PENALTY_IMAGE_SMALL]; | ||||
| 
 | ||||
|         yield 'Both good sized' => [MDPuqi::THRESHOLD_IMG_GOOD_SIZE_SHORTER + 1, MDPuqi::THRESHOLD_IMG_GOOD_SIZE_LONGER + 1, MDPuqiMessageStatus::praise, MDPuqi::QI_REWARD_IMAGE_SIZE_LARGE]; | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Test for license. | ||||
|      * | ||||
| @@ -69,8 +86,7 @@ final class MDPuqiTest extends TestCase { | ||||
|     #[DataProvider('licenseProvider')]
 | ||||
|     public function testImageLicensesResultInExpectedAccessment(string $input, MDPuqiMessageStatus $warningStatus, bool $positive):void { | ||||
| 
 | ||||
|         $tlLoader = new MDTlLoader("abc", "en"); | ||||
|         $puqi = new MDPuqi($tlLoader); | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
|         $puqi->checkImageLicenses([['license' => $input, 'rightsholder' => 'Somebody']]); | ||||
|         $msgs = $puqi->getMessages(); | ||||
| 
 | ||||
| @@ -81,6 +97,71 @@ final class MDPuqiTest extends TestCase { | ||||
|         $score = $puqi->getScore(); | ||||
|         self::assertEquals($positive, $score > 0, "Expected score to be positive or negative, got the oppite result. Score is: " . $score); | ||||
| 
 | ||||
|         // Get score. Having the same 100 times should not inflate the score.
 | ||||
|         $expectedMaxScore = $score * MDPuqi::THRESHOLD_MANY_IMAGES; | ||||
| 
 | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
| 
 | ||||
|         $inp = []; | ||||
|         for ($i = 0; $i < MDPuqi::THRESHOLD_MANY_IMAGES * 10; $i++) { | ||||
|             $inp[] = ['license' => $input, 'rightsholder' => 'Somebody']; | ||||
|         } | ||||
|         $puqi->checkImageLicenses($inp); | ||||
|         self::assertEquals($expectedMaxScore, $puqi->getScore(), "Expected max. score to be stopped from increasing by threshold. It was not."); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Test for image sizes. | ||||
|      * | ||||
|      * @param integer             $width          Width. | ||||
|      * @param integer             $height         Height. | ||||
|      * @param MDPuqiMessageStatus $expectedStatus Expected message status. | ||||
|      * @param integer             $expectedScore  Expected score. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     #[DataProvider('imgSizesProvider')]
 | ||||
|     public function testImageSizesResultInExpectedAccessment(int $width, int $height, MDPuqiMessageStatus $expectedStatus, int $expectedScore):void { | ||||
| 
 | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
|         $puqi->checkImageSizes([['width' => $width, 'height' => $height]]); | ||||
|         $msgs = $puqi->getMessages(); | ||||
| 
 | ||||
|         self::assertEquals(1, count($msgs)); | ||||
|         $msg = $msgs[0]; | ||||
| 
 | ||||
|         self::assertEquals($expectedStatus, $msg->status); | ||||
|         self::assertEquals($expectedScore, $puqi->getScore()); | ||||
| 
 | ||||
|         // Get score. Having the same 100 times should not inflate the score.
 | ||||
|         $expectedMaxScore = $expectedScore * MDPuqi::THRESHOLD_MANY_IMAGES; | ||||
| 
 | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
|         $inp = []; | ||||
|         for ($i = 0; $i < MDPuqi::THRESHOLD_MANY_IMAGES * 10; $i++) { | ||||
|             $inp[] = ['width' => $width, 'height' => $height]; | ||||
|         } | ||||
|         $puqi->checkImageSizes($inp); | ||||
|         self::assertEquals($expectedMaxScore, $puqi->getScore(), "Expected max. score to be stopped from increasing by threshold. It was not."); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Test that more than ten images do not result in inflated score. | ||||
|      * Case: checkImageCount. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function testManyImagesDoesNotInflateScoreByCount():void { | ||||
| 
 | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
|         $puqi->checkImageCount(500); | ||||
|         $msgs = $puqi->getMessages(); | ||||
| 
 | ||||
|         $score = $puqi->getScore(); | ||||
|         self::assertEquals(MDPuqi::THRESHOLD_MANY_IMAGES * MDPuqi::QI_REWARD_IMGS_RESOURCES_MULTIPLIER, $score, "Image count eval: Score differs from expected. Messages: " . var_export($puqi->getMessages(), true)); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -113,7 +194,6 @@ final class MDPuqiTest extends TestCase { | ||||
| 
 | ||||
|         $puqi = new MDPuqi(new MDTlLoader("abc", "en")); | ||||
|         $puqi->checkEvents([], [], [], [], $noOfTags); | ||||
|         $msgs = $puqi->getMessages(); | ||||
| 
 | ||||
|         $score = $puqi->getScore(); | ||||
|         self::assertEquals(MDPuqi::QI_PENALTY_NO_EVENTS + $expectedScore, $score, "Tag eval: Score differs from expected. Messages: " . var_export($puqi->getMessages(), true)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user