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',
 				'&nbsp;(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',
+				'&nbsp;(etc.)',
+			],
+			'txt3' => [
 				'Supercalifragilisticexpialidocious',
 			],
-			[
+			'txt3suite' => [
+				'Supercalifragilisticexpialidocious',
+				'&nbsp;(etc.)',
+			],
+			'txt4' => [
+				"Un test du filtre |couper\n\navec deux paragraphes",
+			],
+			'txt4suite' => [
 				"Un test du filtre |couper\n\navec deux paragraphes",
+				'&nbsp;(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
@@ -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