diff --git a/4dev/tests/Check/CoreLibsCheckColorsTest.php b/4dev/tests/Check/CoreLibsCheckColorsTest.php
index 7386bf76..7f0bc1c2 100644
--- a/4dev/tests/Check/CoreLibsCheckColorsTest.php
+++ b/4dev/tests/Check/CoreLibsCheckColorsTest.php
@@ -321,7 +321,7 @@ final class CoreLibsCheckColorsTest extends TestCase
*/
public function testValidateColorException(int $flag): void
{
- $this->expectException(\Exception::class);
+ $this->expectException(\UnexpectedValueException::class);
\CoreLibs\Check\Colors::validateColor('#ffffff', $flag);
}
}
diff --git a/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php b/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
index 2965010a..25ade3a5 100644
--- a/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
+++ b/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
@@ -518,17 +518,20 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
return [
// error <2 arguments
'too view arguments' => [
+ 'ArgumentCountError',
'arrayMergeRecursive needs two or more array arguments',
[1]
],
// error <2 arrays
'only one array' => [
+ 'ArgumentCountError',
'arrayMergeRecursive needs two or more array arguments',
[1],
true,
],
// error element is not array
'non array between array' => [
+ 'TypeError',
'arrayMergeRecursive encountered a non array argument',
[1],
'string',
@@ -947,18 +950,20 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
*/
public function testArrayMergeRecursiveWarningA(): void
{
- set_error_handler(
- static function (int $errno, string $errstr): never {
- throw new Exception($errstr, $errno);
- },
- E_USER_WARNING
- );
+ // set_error_handler(
+ // static function (int $errno, string $errstr): never {
+ // throw new Exception($errstr, $errno);
+ // },
+ // E_USER_WARNING
+ // );
$arrays = func_get_args();
// first is expected warning
+ $exception = array_shift($arrays);
$warning = array_shift($arrays);
// phpunit 10.0 compatible
+ $this->expectException($exception);
$this->expectExceptionMessage($warning);
\CoreLibs\Combined\ArrayHandler::arrayMergeRecursive(...$arrays);
diff --git a/www/admin/class_test.check.colors.php b/www/admin/class_test.check.colors.php
index 130f6af2..595a0dda 100644
--- a/www/admin/class_test.check.colors.php
+++ b/www/admin/class_test.check.colors.php
@@ -99,7 +99,7 @@ echo "
";
try {
$check = Colors::validateColor('#ab12cd', 99);
print "No Exception";
-} catch (\Exception $e) {
+} catch (\UnexpectedValueException $e) {
print "ERROR: " . $e->getCode() . ": " . $e->getMessage() . "
";
}
diff --git a/www/lib/CoreLibs/Check/Colors.php b/www/lib/CoreLibs/Check/Colors.php
index 466ff133..cbc93f6f 100644
--- a/www/lib/CoreLibs/Check/Colors.php
+++ b/www/lib/CoreLibs/Check/Colors.php
@@ -41,6 +41,7 @@ class Colors
* @param int|false $rgb_flag flag to check for rgb
* @param int|false $hsl_flag flag to check for hsl type
* @return bool True if no error, False if error
+ * @throws \UnexpectedValueException 1: cannot extract color from string
*/
private static function rgbHslContentCheck(
string $color,
@@ -52,7 +53,7 @@ class Colors
if (
!is_array($color_list = preg_split("/,\s*/", $matches[1] ?? ''))
) {
- throw new \Exception("Could not extract color list from rgg/hsl", 3);
+ throw new \UnexpectedValueException("Could not extract color list from rgg/hsl", 1);
}
// based on rgb/hsl settings check that entries are valid
// rgb: either 0-255 OR 0-100%
@@ -124,7 +125,8 @@ class Colors
* @param int $flags defaults to ALL, else use | to combined from
* HEX_RGB, HEX_RGBA, RGB, RGBA, HSL, HSLA
* @return bool True if valid, False if not
- * @throws Exception 1: no valid flag set
+ * @throws \UnexpectedValueException 1: no valid flag set
+ * @throws \InvalidArgumentException 2: no regex block set
*/
public static function validateColor(string $color, int $flags = self::ALL): bool
{
@@ -152,10 +154,10 @@ class Colors
}
// wrong flag set
if ($flags > self::ALL) {
- throw new \Exception("Invalid flags parameter: $flags", 1);
+ throw new \UnexpectedValueException("Invalid flags parameter: $flags", 1);
}
if (!count($regex_blocks)) {
- throw new \Exception("No regex blocks set: $flags", 2);
+ throw new \InvalidArgumentException("No regex blocks set: $flags", 2);
}
// build regex
diff --git a/www/lib/CoreLibs/Check/Encoding.php b/www/lib/CoreLibs/Check/Encoding.php
index 3141e432..577cf9b9 100644
--- a/www/lib/CoreLibs/Check/Encoding.php
+++ b/www/lib/CoreLibs/Check/Encoding.php
@@ -90,27 +90,26 @@ class Encoding
$temp = mb_convert_encoding($string, $to_encoding, $from_encoding);
$compare = mb_convert_encoding($temp, $from_encoding, $to_encoding);
// if string does not match anymore we have a convert problem
- if ($string != $compare) {
- $failed = [];
- // go through each character and find the ones that do not match
- for ($i = 0, $iMax = mb_strlen($string, $from_encoding); $i < $iMax; $i++) {
- $char = mb_substr($string, $i, 1, $from_encoding);
- $r_char = mb_substr($compare, $i, 1, $from_encoding);
- // the ord 194 is a hack to fix the IE7/IE8
- // bug with line break and illegal character
- if (
- (($char != $r_char && (!self::$mb_error_char ||
- in_array(self::$mb_error_char, ['none', 'long', 'entity']))) ||
- ($char != $r_char && $r_char == self::$mb_error_char && self::$mb_error_char)) &&
- ord($char) != 194
- ) {
- $failed[] = $char;
- }
- }
- return $failed;
- } else {
+ if ($string == $compare) {
return false;
}
+ $failed = [];
+ // go through each character and find the ones that do not match
+ for ($i = 0, $iMax = mb_strlen($string, $from_encoding); $i < $iMax; $i++) {
+ $char = mb_substr($string, $i, 1, $from_encoding);
+ $r_char = mb_substr($compare, $i, 1, $from_encoding);
+ // the ord 194 is a hack to fix the IE7/IE8
+ // bug with line break and illegal character
+ if (
+ (($char != $r_char && (!self::$mb_error_char ||
+ in_array(self::$mb_error_char, ['none', 'long', 'entity']))) ||
+ ($char != $r_char && $r_char == self::$mb_error_char && self::$mb_error_char)) &&
+ ord($char) != 194
+ ) {
+ $failed[] = $char;
+ }
+ }
+ return $failed;
}
}
diff --git a/www/lib/CoreLibs/Combined/ArrayHandler.php b/www/lib/CoreLibs/Combined/ArrayHandler.php
index a7cb5f1f..d664310c 100644
--- a/www/lib/CoreLibs/Combined/ArrayHandler.php
+++ b/www/lib/CoreLibs/Combined/ArrayHandler.php
@@ -245,14 +245,13 @@ class ArrayHandler
* bool key flag: true: handle keys as string or int
* default false: all keys are string
*
- * @return array|false merged array
+ * @return array merged array
*/
- public static function arrayMergeRecursive(): array|false
+ public static function arrayMergeRecursive(): array
{
// croak on not enough arguemnts (we need at least two)
if (func_num_args() < 2) {
- trigger_error(__FUNCTION__ . ' needs two or more array arguments', E_USER_WARNING);
- return false;
+ throw new \ArgumentCountError(__FUNCTION__ . ' needs two or more array arguments');
}
// default key is not string
$key_is_string = false;
@@ -265,15 +264,13 @@ class ArrayHandler
}
// check that arrays count is at least two, else we don't have enough to do anything
if (count($arrays) < 2) {
- trigger_error(__FUNCTION__ . ' needs two or more array arguments', E_USER_WARNING);
- return false;
+ throw new \ArgumentCountError(__FUNCTION__ . ' needs two or more array arguments');
}
$merged = [];
while ($arrays) {
$array = array_shift($arrays);
if (!is_array($array)) {
- trigger_error(__FUNCTION__ . ' encountered a non array argument', E_USER_WARNING);
- return false;
+ throw new \TypeError(__FUNCTION__ . ' encountered a non array argument');
}
if (!$array) {
continue;