Skip to content
Extraits de code Groupes Projets
Valider 07d5819c rédigé par cerdic's avatar cerdic
Parcourir les fichiers

tests: nommer les jeux de tests de `|couper`

+ completer avec une variante suite a chaque fois + un test avec des balises html + des tests sur les espaces insécables
parent 7ef28838
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -21,35 +21,71 @@ class CouperTest extends TestCase ...@@ -21,35 +21,71 @@ class CouperTest extends TestCase
/** /**
* @dataProvider providerCouper * @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) if ($exact)
$this->assertEquals($expected, $actual); $this->assertEquals($length_expected, $length_actual);
else else
$this->assertLessThanOrEqual($expected, $actual); $this->assertLessThanOrEqual($length_expected, $length_actual);
} }
public function providerCouper(): array public function providerCouper(): array
{ {
find_in_path('inc/charsets.php', '', true); find_in_path('inc/charsets.php', '', true);
find_in_path('inc/filtres.php', '', true);
// Phrases de test et éventuel texte de suite. // Phrases de test et éventuel texte de suite.
$data = [ $data = [
[ 'txt1' => [
'Une phrase pour tester le filtre |couper bla bli blu', 'Une phrase pour tester le filtre |couper bla bli blu',
], ],
[ 'txt1suite' => [
'Une phrase pour tester le filtre |couper bla bli blu', 'Une phrase pour tester le filtre |couper bla bli blu',
' (etc.)', ' (etc.)',
], ],
[ 'txt2' => [
'Tést àvéc plêïn d’àççènts bla bli blu', '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', 'Supercalifragilisticexpialidocious',
], ],
[ 'txt3suite' => [
'Supercalifragilisticexpialidocious',
' (etc.)',
],
'txt4' => [
"Un test du filtre |couper\n\navec deux paragraphes",
],
'txt4suite' => [
"Un test du filtre |couper\n\navec deux paragraphes", "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>",
'&nbsp;(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",
'&nbsp;(etc.)',
],
'txt7' => [
"Article : avec des espaces insecable ; challenge ?",
],
'txt7suite' => [
"Article : avec des espaces insecable ; challenge ?",
'&nbsp;(etc.)',
], ],
]; ];
// Pour chaque phrase de test, itérer sur toutes les longueurs de coupe // Pour chaque phrase de test, itérer sur toutes les longueurs de coupe
...@@ -59,14 +95,16 @@ class CouperTest extends TestCase ...@@ -59,14 +95,16 @@ class CouperTest extends TestCase
$texte = $args[0]; $texte = $args[0];
$suite = $args[1] ?? null; $suite = $args[1] ?? null;
$taille_texte = spip_strlen($texte); $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++) { for ($taille = 1; $taille <= $taille_texte + 10; $taille++) {
if ($taille < $taille_texte) { if ($taille < $taille_texte) {
$tests[] = [ $tests["{$i}_L$taille"] = [
$taille, false, $texte, $taille, $suite $taille, false, $texte, $taille, $suite
]; ];
} else { } else {
$tests[] = [ $tests["{$i}_L{$taille}"] = [
$taille_texte, true, $texte, $taille, $suite $taille_texte, $exact_si_pluslong, $texte, $taille, $suite
]; ];
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter