fix: ISO countdown date, IntlDateFormatter and UTF-8 truncation
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Tests unitaires pour les fonctions de formatage de includes/config.php
|
||||
* Tests unitaires pour les fonctions de formatage de includes/lib/format.php
|
||||
* (formatDuration, formatViewCount, formatDate, formatVideosData)
|
||||
* et truncateText de includes/structured-data.php
|
||||
*/
|
||||
@@ -210,3 +210,39 @@ assertEquals(
|
||||
truncateText($textNoSpace, 200),
|
||||
'truncateText coupe à la limite quand il n\'y a pas d\'espace'
|
||||
);
|
||||
|
||||
// --- truncateText : UTF-8 multioctet (mb_substr) -----------------------------
|
||||
|
||||
$utf8WithSpace = str_repeat('é', 150) . ' ' . str_repeat('b', 100); // 251 caractères
|
||||
assertEquals(
|
||||
str_repeat('é', 150) . '...',
|
||||
truncateText($utf8WithSpace, 200),
|
||||
'truncateText compte les caractères UTF-8 et non les octets'
|
||||
);
|
||||
|
||||
$utf8NoSpace = str_repeat('€', 250); // 3 octets par caractère
|
||||
$truncatedUtf8 = truncateText($utf8NoSpace, 200);
|
||||
assertEquals(
|
||||
str_repeat('€', 200) . '...',
|
||||
$truncatedUtf8,
|
||||
'truncateText ne coupe pas un caractère multioctet en deux'
|
||||
);
|
||||
assertEquals(1, preg_match('//u', $truncatedUtf8), 'truncateText retourne de l\'UTF-8 valide');
|
||||
|
||||
// --- formatDateFr (includes/structured-data.php) -----------------------------
|
||||
|
||||
$dateFr = new DateTime('2025-10-11 00:00:00', new DateTimeZone('Indian/Reunion'));
|
||||
assertEquals('11 octobre 2025', formatDateFr($dateFr), 'formatDateFr formate la date longue en français');
|
||||
assertEquals(
|
||||
'11 octobre 2025 à 00:00',
|
||||
formatDateFr($dateFr, true),
|
||||
'formatDateFr ajoute l\'heure quand demandé'
|
||||
);
|
||||
|
||||
$dateFrSummer = new DateTime('2026-07-04 12:30:00', new DateTimeZone('UTC'));
|
||||
assertEquals('4 juillet 2026', formatDateFr($dateFrSummer), 'formatDateFr sans zéro initial sur le jour');
|
||||
assertEquals(
|
||||
'4 juillet 2026 à 12:30',
|
||||
formatDateFr($dateFrSummer, true),
|
||||
'formatDateFr utilise le fuseau de la date fournie'
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user