From da244466b7cda68a98edc8abb23174d218de803c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 30 Nov 2023 21:22:20 +0100 Subject: [PATCH] Add phpunit on utf8_check and utf8_valid --- htdocs/core/lib/functions.lib.php | 8 +++---- test/phpunit/FunctionsLibTest.php | 39 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index ecbaa361dab..c71dbdfb931 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -9313,10 +9313,10 @@ function dol_sort_array(&$array, $index, $order = 'asc', $natsort = 0, $case_sen /** - * Check if a string is in UTF8 + * Check if a string is in UTF8. Seems similar to utf8_valid() but in pure PHP. * * @param string $str String to check - * @return boolean True if string is UTF8 or ISO compatible with UTF8, False if not (ISO with special char or Binary) + * @return boolean True if string is UTF8 or ISO compatible with UTF8, False if not (ISO with special non utf8 char or Binary) * @see utf8_valid() */ function utf8_check($str) @@ -9324,7 +9324,7 @@ function utf8_check($str) $str = (string) $str; // Sometimes string is an int. // We must use here a binary strlen function (so not dol_strlen) - $strLength = dol_strlen($str); + $strLength = strlen($str); for ($i = 0; $i < $strLength; $i++) { if (ord($str[$i]) < 0x80) { continue; // 0bbbbbbb @@ -9351,7 +9351,7 @@ function utf8_check($str) } /** - * Check if a string is in UTF8 + * Check if a string is in UTF8. Seems similar to utf8_check(). * * @param string $str String to check * @return boolean True if string is valid UTF8 string, false if corrupted diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php index b6f281e2143..a21830a179c 100644 --- a/test/phpunit/FunctionsLibTest.php +++ b/test/phpunit/FunctionsLibTest.php @@ -1675,6 +1675,45 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase return true; } + /** + * testUtf8Check + * + * @return boolean + */ + public function testUtf8Check() + { + global $conf, $langs; + + $chaine = 'This is an UTF8 string with a é.'; + $result = utf8_check($chaine); + $this->assertEquals(true, $result); + + $chaine = mb_convert_encoding('This is an UTF8 with a é.', 'ISO-8859-1', 'UTF-8'); + $result = utf8_check($chaine); + $this->assertEquals(false, $result); + + return true; + } + + /** + * testUtf8Valid + * + * @return boolean + */ + public function testUtf8Valid() + { + global $conf, $langs; + + $chaine = 'This is an UTF8 string with a é.'; + $result = utf8_valid($chaine); + $this->assertEquals(true, $result); + + $chaine = mb_convert_encoding('This is an UTF8 with a é.', 'ISO-8859-1', 'UTF-8'); + $result = utf8_valid($chaine); + $this->assertEquals(false, $result); + + return true; + } /** * testGetUserRemoteIP