From 07d5819cf2e9b11a5d3170fccb51742bd7b95766 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sun, 8 Jan 2023 11:54:21 +0100 Subject: [PATCH] =?UTF-8?q?tests:=20nommer=20les=20jeux=20de=20tests=20de?= =?UTF-8?q?=20`|couper`=20+=20completer=20avec=20une=20variante=20suite=20?= =?UTF-8?q?a=20chaque=20fois=20+=20un=20test=20avec=20des=20balises=20html?= =?UTF-8?q?=20+=20des=20tests=20sur=20les=20espaces=20ins=C3=A9cables?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Texte/CouperTest.php | 62 ++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/tests/Texte/CouperTest.php b/tests/Texte/CouperTest.php index 5ab354fce0..11566f59b1 100644 --- a/tests/Texte/CouperTest.php +++ b/tests/Texte/CouperTest.php @@ -21,35 +21,71 @@ class CouperTest extends TestCase /** * @dataProvider providerCouper */ - public function testCouper($expected, $exact, ...$args): void + public function testCouper($length_expected, $exact, ...$args): void { - $actual = spip_strlen(filtrer_entites(couper(...$args))); + $actual = couper(...$args); + $length_actual = spip_strlen(filtrer_entites($actual)); if ($exact) - $this->assertEquals($expected, $actual); + $this->assertEquals($length_expected, $length_actual); else - $this->assertLessThanOrEqual($expected, $actual); + $this->assertLessThanOrEqual($length_expected, $length_actual); } public function providerCouper(): array { find_in_path('inc/charsets.php', '', true); + find_in_path('inc/filtres.php', '', true); + // Phrases de test et éventuel texte de suite. $data = [ - [ + 'txt1' => [ 'Une phrase pour tester le filtre |couper bla bli blu', ], - [ + 'txt1suite' => [ 'Une phrase pour tester le filtre |couper bla bli blu', ' (etc.)', ], - [ + 'txt2' => [ 'Tést à véc plêïn d’à ççènts bla bli blu', ], - [ + 'txt2suite' => [ + 'Tést à véc plêïn d’à ççènts bla bli blu', + ' (etc.)', + ], + 'txt3' => [ 'Supercalifragilisticexpialidocious', ], - [ + 'txt3suite' => [ + 'Supercalifragilisticexpialidocious', + ' (etc.)', + ], + 'txt4' => [ + "Un test du filtre |couper\n\navec deux paragraphes", + ], + 'txt4suite' => [ "Un test du filtre |couper\n\navec deux paragraphes", + ' (etc.)', + ], + 'txt5' => [ + "<p>Un test du filtre |couper</p><p>avec deux paragraphes</p>", + ], + 'txt5suite' => [ + "<p>Un test du filtre |couper</p><p>avec deux paragraphes</p>", + ' (etc.)', + ], + 'txt6' => [ + "Articlé \"illustré\" : imagés ’céntrées’ avèc un titre long voir très long mais vraiment très long avec dés à çènts", + ], + 'txt6suite' => [ + "Articlé \"illustré\" : imagés ’céntrées’ avèc un titre long voir très long mais vraiment très long avec dés à çènts", + ' (etc.)', + ], + 'txt7' => [ + "Article : avec des espaces insecable ; challenge ?", + ], + 'txt7suite' => [ + "Article : avec des espaces insecable ; challenge ?", + ' (etc.)', ], ]; // Pour chaque phrase de test, itérer sur toutes les longueurs de coupe @@ -59,14 +95,16 @@ class CouperTest extends TestCase $texte = $args[0]; $suite = $args[1] ?? null; $taille_texte = spip_strlen($texte); + // si la phrase contient du html on aura jamais la longueur exacte d'origine après une coupe + $exact_si_pluslong = (strlen($texte) === strlen(strip_tags($texte))); for ($taille = 1; $taille <= $taille_texte + 10; $taille++) { if ($taille < $taille_texte) { - $tests[] = [ + $tests["{$i}_L$taille"] = [ $taille, false, $texte, $taille, $suite ]; } else { - $tests[] = [ - $taille_texte, true, $texte, $taille, $suite + $tests["{$i}_L{$taille}"] = [ + $taille_texte, $exact_si_pluslong, $texte, $taille, $suite ]; } } -- GitLab