From: Christoph M. Becker Date: Thu, 22 Sep 2016 09:52:10 +0000 (+0200) Subject: Rework FreeType related tests X-Git-Tag: php-7.0.12RC1~23^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=726c5999ebe8d99da3ac9624ccaaab3ec41d6051;p=php Rework FreeType related tests Firstly, there is no fundamental difference between running the tests on freetype before and after 2.4.10, so we re-join the respective test cases. Secondly, there are some minor differences in the results depending on architecture, freetype versions and config options, so we cater to that by allowing small deviations from the expectations. --- diff --git a/ext/gd/tests/bug43073.phpt b/ext/gd/tests/bug43073.phpt index 8ddd324421..8b58e511cc 100644 --- a/ext/gd/tests/bug43073.phpt +++ b/ext/gd/tests/bug43073.phpt @@ -1,29 +1,53 @@ --TEST-- -Bug #43073 (TrueType bounding box is wrong for angle<>0) freetype < 2.4.10 +Bug #43073 (TrueType bounding box is wrong for angle<>0) --SKIPIF-- = 0) die('skip for freetype < 2.4.10'); ?> --FILE-- = $exp[$i][$j] - 1 && $bbox[$j] <= $exp[$i][$j] + 1) { + echo '.'; + } else { + echo "(expected $exp[$i][$j], got $bbox[$j])"; + } + } + echo "\n"; $temp = $cos_t * $x + $sin_t * $y; $y = $cos_t * $y - $sin_t * $x; $x = $temp; @@ -32,20 +56,20 @@ imagepng($g, "$cwd/bug43073.png"); ?> --CLEAN-- ---EXPECTF-- -(500, 40%d), (610, 40%d), (610, 376), (500, 376) -(492, 363), (591, 322), (580, 295), (480, 336) -(470, 331), (548, 254), (527, 233), (449, 310) -(439, 309), (483, 202), (461, 193), (416, 299) -(40%d, 300), (40%d, 183), (38%d, 183), (38%d, 300) -(362, 307), (316, 195), (291, 205), (337, 318) -(330, 329), (246, 244), (224, 265), (308, 350) -(308, 360), (202, 316), (190, 344), (296, 388) -(300, %d), (18%d, %d), (18%d, 425), (%d, 425) -(306, 437), (195, 483), (206, 510), (318, 464) -(328, 469), (240, 557), (260, 578), (349, 491) -(359, 491), (312, 607), (334, 616), (382, 501) -(%d, 500), (%d, 618), (41%d, 618), (41%d, 500) -(436, 493), (483, 607), (507, 597), (461, 482) -(468, 471), (555, 558), (577, 538), (490, 450) -(490, 440), (600, 485), (611, 457), (502, 412) +--EXPECT-- + 0: ........ + 1: ........ + 2: ........ + 3: ........ + 4: ........ + 5: ........ + 6: ........ + 7: ........ + 8: ........ + 9: ........ +10: ........ +11: ........ +12: ........ +13: ........ +14: ........ +15: ........ diff --git a/ext/gd/tests/bug43073_1.phpt b/ext/gd/tests/bug43073_1.phpt deleted file mode 100644 index a0682bcf63..0000000000 --- a/ext/gd/tests/bug43073_1.phpt +++ /dev/null @@ -1,53 +0,0 @@ ---TEST-- -Bug #43073 (TrueType bounding box is wrong for angle<>0) freetype >= 2.4.10 ---SKIPIF-- -= 2.4.10'); -?> ---FILE-- - ---CLEAN-- - ---EXPECTF-- -(501, 400), (611, 400), (611, 376), (501, 376) -(492, 361), (595, 319), (586, 296), (483, 338) -(470, 329), (549, 251), (531, 233), (453, 312) -(439, 307), (481, 204), (458, 195), (416, 297) -(400, 299), (400, 189), (376, 189), (376, 299) -(361, 307), (319, 204), (296, 213), (338, 316) -(329, 329), (251, 250), (233, 267), (311, 346) -(307, 360), (204, 318), (195, 341), (297, 383) -(299, 400), (189, 400), (189, 424), (299, 424) -(307, 438), (204, 480), (213, 503), (316, 461) -(329, 470), (250, 548), (267, 566), (346, 488) -(360, 492), (318, 595), (341, 604), (383, 502) -(400, 501), (400, 611), (424, 611), (424, 501) -(438, 492), (480, 595), (503, 586), (461, 483) -(470, 470), (548, 549), (566, 532), (488, 453) -(492, 439), (595, 481), (604, 458), (502, 416) diff --git a/ext/gd/tests/bug48801.phpt b/ext/gd/tests/bug48801.phpt index 773564f782..f55ed55844 100644 --- a/ext/gd/tests/bug48801.phpt +++ b/ext/gd/tests/bug48801.phpt @@ -1,12 +1,9 @@ --TEST-- -Bug #48801 (Problem with imagettfbbox) freetype < 2.4.10 +Bug #48801 (Problem with imagettfbbox) --SKIPIF-- = 0) die('skip for freetype < 2.4.10'); ?> --FILE-- ---EXPECTF-- -(-1, 15) -(15%d, 15) -(15%d, -48) -(-1, -48) +--EXPECTREGEX-- +\(4, 15\) +\(16[0-1], 15\) +\(16[0-1], -4[7-8]\) +\(4, -4[7-8]\) diff --git a/ext/gd/tests/bug48801_1.phpt b/ext/gd/tests/bug48801_1.phpt deleted file mode 100644 index f0f3f93fd4..0000000000 --- a/ext/gd/tests/bug48801_1.phpt +++ /dev/null @@ -1,25 +0,0 @@ ---TEST-- -Bug #48801 (Problem with imagettfbbox) freetype >= 2.4.10 ---SKIPIF-- -= 2.4.10'); -?> ---FILE-- - ---EXPECTF-- -(4, 15) -(161, 15) -(161, -47) -(4, -47) diff --git a/ext/gd/tests/bug53504.phpt b/ext/gd/tests/bug53504.phpt index c84ee78fdb..bb6cc7a93f 100644 --- a/ext/gd/tests/bug53504.phpt +++ b/ext/gd/tests/bug53504.phpt @@ -4,9 +4,6 @@ Bug #53504 imagettfbbox/imageftbbox gives incorrect values for bounding box --FILE-- 50, 'angle' => 0, 'x' => 20, 'y' => 70, 'text' => 'AV Teg'], - ['fontSize' => 50, 'angle' => 90, 'x' => 70, 'y' => 350, 'text' => 'AV Teg'], - ['fontSize' => 50, 'angle' => 40, 'x' => 130, 'y' => 280, 'text' => 'AV Teg'], + ['fontSize' => 50, 'angle' => 0, 'x' => 20, 'y' => 70, 'text' => 'AV Teg', 'exp' => [2,15, 208,15, 208,-48, 2,-48]], + ['fontSize' => 50, 'angle' => 90, 'x' => 70, 'y' => 350, 'text' => 'AV Teg', 'exp' => [15,-1, 15,-208, -48,-208, -48,-2]], + ['fontSize' => 50, 'angle' => 40, 'x' => 130, 'y' => 280, 'text' => 'AV Teg', 'exp' => [11,11, 169,-122, 129,-171, -30,-39]], // Shift-Test: - ['fontSize' => 100, 'angle' => 0, 'x' => 350, 'y' => 110, 'text' => 'H-Shift'], + ['fontSize' => 100, 'angle' => 0, 'x' => 350, 'y' => 110, 'text' => 'H-Shift', 'exp' => [8,2, 386,2, 386,-97, 8,-97]], // Small/single chars: - ['fontSize' => 100, 'angle' => 0, 'x' => 350, 'y' => 220, 'text' => '-'], - ['fontSize' => 100, 'angle' => 0, 'x' => 430, 'y' => 220, 'text' => ','], - ['fontSize' => 100, 'angle' => 0, 'x' => 510, 'y' => 220, 'text' => '.'], - ['fontSize' => 100, 'angle' => 0, 'x' => 590, 'y' => 220, 'text' => '|'], - ['fontSize' => 100, 'angle' => 0, 'x' => 670, 'y' => 220, 'text' => 'g'], + ['fontSize' => 100, 'angle' => 0, 'x' => 350, 'y' => 220, 'text' => '-', 'exp' => [7,-37, 51,-37, 51,-46, 7,-46]], + ['fontSize' => 100, 'angle' => 0, 'x' => 430, 'y' => 220, 'text' => ',', 'exp' => [7,15, 21,15, 21,-13, 7,-13]], + ['fontSize' => 100, 'angle' => 0, 'x' => 510, 'y' => 220, 'text' => '.', 'exp' => [7,1, 21,1, 21,-13, 7,-13]], + ['fontSize' => 100, 'angle' => 0, 'x' => 590, 'y' => 220, 'text' => '|', 'exp' => [8,0, 17,0, 17,-95, 8,-95]], + ['fontSize' => 100, 'angle' => 0, 'x' => 670, 'y' => 220, 'text' => 'g', 'exp' => [5,29, 60,29, 60,-72, 5,-72]], // Multi-Line + rotation: - ['fontSize' => 30, 'angle' => 0, 'x' => 20, 'y' => 400, 'text' => "Multi\nLine\nTest"], - ['fontSize' => 30, 'angle' => 40, 'x' => 150, 'y' => 420, 'text' => "Multi\nLine\nTest"], - ['fontSize' => 30, 'angle' => 90, 'x' => 250, 'y' => 340, 'text' => "Multi\nLine\nTest"], + ['fontSize' => 30, 'angle' => 0, 'x' => 20, 'y' => 400, 'text' => "Multi\nLine\nTest", 'exp' => [2,107, 80,107, 80,-29, 2,-29]], + ['fontSize' => 30, 'angle' => 40, 'x' => 150, 'y' => 420, 'text' => "Multi\nLine\nTest", 'exp' => [70,81, 131,31, 43,-74, -18,-24]], + ['fontSize' => 30, 'angle' => 90, 'x' => 250, 'y' => 340, 'text' => "Multi\nLine\nTest", 'exp' => [107,-1, 107,-80, -29,-80, -29,-2]], // Some edge case glyphs: - ['fontSize' => 50, 'angle' => 90, 'x' => 70, 'y' => 750, 'text' => "iiiiiiiiiiii"], - ['fontSize' => 50, 'angle' => 90, 'x' => 150, 'y' => 750, 'text' => "~~~~~~~"], - ['fontSize' => 50, 'angle' => 50, 'x' => 210, 'y' => 750, 'text' => "iiiiiiiiiiii"], - ['fontSize' => 50, 'angle' => 50, 'x' => 300, 'y' => 750, 'text' => "~~~~~~~"], - ['fontSize' => 50, 'angle' => 0, 'x' => 430, 'y' => 650, 'text' => "iiiiiiiiiiii"], - ['fontSize' => 50, 'angle' => 0, 'x' => 430, 'y' => 750, 'text' => "~~~~~~~"], + ['fontSize' => 50, 'angle' => 90, 'x' => 70, 'y' => 750, 'text' => "iiiiiiiiiiii", 'exp' => [0,-4, 0,-165, -47,-165, -47,-4]], + ['fontSize' => 50, 'angle' => 90, 'x' => 150, 'y' => 750, 'text' => "~~~~~~~", 'exp' => [-19,-2, -18,-167, -29,-167, -29,-2]], + ['fontSize' => 50, 'angle' => 50, 'x' => 210, 'y' => 750, 'text' => "iiiiiiiiiiii", 'exp' => [3,-3, 107,-127, 70,-157, -34,-33]], + ['fontSize' => 50, 'angle' => 50, 'x' => 300, 'y' => 750, 'text' => "~~~~~~~", 'exp' => [-13,-13, 93,-141, 85,-147, -21,-20]], + ['fontSize' => 50, 'angle' => 0, 'x' => 430, 'y' => 650, 'text' => "iiiiiiiiiiii", 'exp' => [4,0, 165,0, 165,-47, 4,-47]], + ['fontSize' => 50, 'angle' => 0, 'x' => 430, 'y' => 750, 'text' => "~~~~~~~", 'exp' => [2,-19, 167,-19, 167,-29, 2,-29]], // "Big" test: - ['fontSize' => 200, 'angle' => 0, 'x' => 400, 'y' => 500, 'text' => "Big"], + ['fontSize' => 200, 'angle' => 0, 'x' => 400, 'y' => 500, 'text' => "Big", 'exp' => [16,59, 329,59, 329,-190, 16,-190]], ]; -foreach ($tests as $test) { +foreach ($tests as $testnum => $test) { $bbox = imageftbbox($test['fontSize'], $test['angle'], $font, $test['text']); - vprintf("(%d, %d), (%d, %d), (%d, %d), (%d, %d)\n", $bbox); + printf('%2d: ', $testnum); + for ($i = 0; $i < 8; $i++) { + $exp = $test['exp'][$i]; + if ($bbox[$i] >= $exp - 2 && $bbox[$i] <= $exp + 2) { + echo '.'; + } else { + echo "(expected $exp, got $bbox[$i])"; + } + } + echo "\n"; $bboxDrawn = imagefttext($g, $test['fontSize'], $test['angle'], $test['x'], $test['y'], $black, $font, $test['text']); @@ -79,23 +85,23 @@ imagepng($g, "$cwd/bug53504.png"); ?> --CLEAN-- ---EXPECTF-- -(2, 15), (208, 15), (208, -48), (2, -48) -(15, -1), (15, -208), (-48, -208), (-48, -2) -(11, 11), (169, -122), (129, -171), (-30, -39) -(8, 2), (385, 2), (385, -97), (8, -97) -(7, -37), (51, -37), (51, -46), (7, -46) -(7, 15), (21, 15), (21, -13), (7, -13) -(7, 1), (21, 1), (21, -13), (7, -13) -(8, 0), (17, 0), (17, -95), (8, -95) -(5, 29), (60, 29), (60, -72), (5, -72) -(2, 107), (80, 107), (80, -29), (2, -29) -(70, 81), (131, 31), (43, -74), (-18, -24) -(107, -1), (107, -80), (-29, -80), (-29, -2) -(0, -4), (0, -165), (-47, -165), (-47, -4) -(-19, -2), (-18, -167), (-29, -167), (-29, -2) -(3, -3), (107, -127), (70, -157), (-34, -33) -(-13, -13), (93, -141), (85, -147), (-21, -20) -(4, 0), (165, 0), (165, -47), (4, -47) -(2, -19), (167, -19), (167, -29), (2, -29) -(16, 59), (330, 59), (330, -190), (16, -190) +--EXPECT-- + 0: ........ + 1: ........ + 2: ........ + 3: ........ + 4: ........ + 5: ........ + 6: ........ + 7: ........ + 8: ........ + 9: ........ +10: ........ +11: ........ +12: ........ +13: ........ +14: ........ +15: ........ +16: ........ +17: ........ +18: ........