mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-10 14:08:40 +00:00
improved tests and test docs
This commit is contained in:
parent
bd97cee551
commit
b084791809
|
|
@ -283,44 +283,43 @@ final class MbStringUtils
|
||||||
/**
|
/**
|
||||||
* Get the utf-8 boundary of a string
|
* Get the utf-8 boundary of a string
|
||||||
*
|
*
|
||||||
* @param string $text To search for utf-8 boundary
|
* @param string $text QP text to search for utf-8 boundary
|
||||||
* @param int $offset Search offset
|
* @param int $length Last character boundary prior to this length
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public static function utf8CharBoundary(string $text, int $offset = 0) : int
|
public static function utf8CharBoundary(string $text, int $length = 0) : int
|
||||||
{
|
{
|
||||||
$reset = 3;
|
$reset = 3;
|
||||||
$pos = $offset;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$lastChunk = \substr($text, $pos - $reset, $reset);
|
$lastChunk = \substr($text, $length - $reset, $reset);
|
||||||
$encodedPos = \strpos($lastChunk, '=');
|
$encodedPos = \strpos($lastChunk, '=');
|
||||||
|
|
||||||
if ($encodedPos === false) {
|
if ($encodedPos === false) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hex = \substr($text, $pos - $reset + $encodedPos + 1, 2);
|
$hex = \substr($text, $length - $reset + $encodedPos + 1, 2);
|
||||||
$dec = \hexdec($hex);
|
$dec = \hexdec($hex);
|
||||||
|
|
||||||
if ($dec < 128) {
|
if ($dec < 128) {
|
||||||
if ($encodedPos > 0) {
|
if ($encodedPos > 0) {
|
||||||
$pos -= $reset - $encodedPos;
|
$length -= $reset - $encodedPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} elseif ($dec >= 192) {
|
} elseif ($dec >= 192) {
|
||||||
$pos -= $reset - $encodedPos;
|
$length -= $reset - $encodedPos;
|
||||||
break;
|
break;
|
||||||
} elseif ($dec < 192) {
|
} else { /* $dec < 192 */
|
||||||
$reset += 3;
|
$reset += 3;
|
||||||
}
|
}
|
||||||
} while (true);
|
} while (true);
|
||||||
|
|
||||||
return $pos;
|
return $length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\tests\Algorithm\PathFinding;
|
namespace phpOMS\tests\Algorithm\Maze;
|
||||||
|
|
||||||
use phpOMS\Algorithm\Maze\MazeGenerator;
|
use phpOMS\Algorithm\Maze\MazeGenerator;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,8 +140,12 @@ class L11nManagerTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals('USD 1.235', $this->l11nManager->getCurrency($l11n, 1.2345, 'long'));
|
self::assertEquals('USD 1.235', $this->l11nManager->getCurrency($l11n, 1.2345, 'long'));
|
||||||
|
|
||||||
$this->l11nManager->loadLanguage('en', '0', ['0' => ['CurrencyK' => 'K']]);
|
$this->l11nManager->loadLanguage('en', '0', ['0' => ['CurrencyK' => 'K']]);
|
||||||
|
$this->l11nManager->loadLanguage('en', '0', ['0' => ['CurrencyM' => 'M']]);
|
||||||
|
$this->l11nManager->loadLanguage('en', '0', ['0' => ['CurrencyB' => 'B']]);
|
||||||
self::assertEquals('K$ 12.345', $this->l11nManager->getCurrency($l11n, 12345.0, 'long', '$', 1000));
|
self::assertEquals('K$ 12.345', $this->l11nManager->getCurrency($l11n, 12345.0, 'long', '$', 1000));
|
||||||
self::assertEquals('KUSD 12.345', $this->l11nManager->getCurrency($l11n, 12345.0, 'long', null, 1000));
|
self::assertEquals('KUSD 12.345', $this->l11nManager->getCurrency($l11n, 12345.0, 'long', null, 1000));
|
||||||
|
self::assertEquals('M$ 123.5', $this->l11nManager->getCurrency($l11n, 123456789.0, 'short', '$', 1000000));
|
||||||
|
self::assertEquals('B$ 1.2', $this->l11nManager->getCurrency($l11n, 1234567890.0, 'short', '$', 1000000000));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\tests\Math\Number;
|
namespace phpOMS\tests\Math\Topology;
|
||||||
|
|
||||||
use phpOMS\Math\Topology\Metrics2D;
|
use phpOMS\Math\Topology\Metrics2D;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\tests\Math\Number;
|
namespace phpOMS\tests\Math\Topology;
|
||||||
|
|
||||||
use phpOMS\Math\Topology\Metrics2D;
|
use phpOMS\Math\Topology\Metrics2D;
|
||||||
use phpOMS\Math\Topology\MetricsND;
|
use phpOMS\Math\Topology\MetricsND;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,32 @@ class ArrayUtilsTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals('ab0', ArrayUtils::getArray('a/ab/1', $expected));
|
self::assertEquals('ab0', ArrayUtils::getArray('a/ab/1', $expected));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox A invalid array path returns null
|
||||||
|
* @covers phpOMS\Utils\ArrayUtils
|
||||||
|
* @group framework
|
||||||
|
*/
|
||||||
|
public function testArrayInvalidArrayPath() : void
|
||||||
|
{
|
||||||
|
$expected = [
|
||||||
|
'a' => [
|
||||||
|
'aa' => 1,
|
||||||
|
'ab' => [
|
||||||
|
'aba',
|
||||||
|
'ab0',
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
'c',
|
||||||
|
],
|
||||||
|
4,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
2 => '2a',
|
||||||
|
];
|
||||||
|
|
||||||
|
self::assertEquals(null, ArrayUtils::getArray('a/zzz/1', $expected));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @testdox Test recursively if a value is in an array
|
* @testdox Test recursively if a value is in an array
|
||||||
* @covers phpOMS\Utils\ArrayUtils
|
* @covers phpOMS\Utils\ArrayUtils
|
||||||
|
|
@ -106,6 +132,27 @@ class ArrayUtilsTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertFalse(ArrayUtils::inArrayRecursive('aba', ArrayUtils::unsetArray('a/ab', $expected, '/')));
|
self::assertFalse(ArrayUtils::inArrayRecursive('aba', ArrayUtils::unsetArray('a/ab', $expected, '/')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox Deleting an invalid array path returns the original array
|
||||||
|
* @covers phpOMS\Utils\ArrayUtils
|
||||||
|
* @group framework
|
||||||
|
*/
|
||||||
|
public function testInvalidArrayDelete() : void
|
||||||
|
{
|
||||||
|
$expected = [
|
||||||
|
'a' => [
|
||||||
|
'aa' => 1,
|
||||||
|
'ab' => [
|
||||||
|
'aba',
|
||||||
|
'ab0',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
2 => '2a',
|
||||||
|
];
|
||||||
|
|
||||||
|
self::assertEquals($expected, ArrayUtils::unsetArray('a/zzz', $expected, '/'));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @testdox The recursive sum of all values in an array can be calculated
|
* @testdox The recursive sum of all values in an array can be calculated
|
||||||
* @covers phpOMS\Utils\ArrayUtils
|
* @covers phpOMS\Utils\ArrayUtils
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ use phpOMS\Utils\MbStringUtils;
|
||||||
require_once __DIR__ . '/../Autoloader.php';
|
require_once __DIR__ . '/../Autoloader.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @testdox phpOMS\tests\Utils\MbStringUtilsTest: String utilities
|
* @testdox phpOMS\tests\Utils\MbStringUtilsTest: Multi-Byte string utilities
|
||||||
*
|
*
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
|
|
@ -152,8 +152,13 @@ class MbStringUtilsTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals(5, MbStringUtils::mb_count_chars('αααααΕεΙιΜμΨψ')['α']);
|
self::assertEquals(5, MbStringUtils::mb_count_chars('αααααΕεΙιΜμΨψ')['α']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox The previous boundary of a utf-8 encoded quoted printable is identified correctly
|
||||||
|
* @covers phpOMS\Utils\MbStringUtils
|
||||||
|
* @group framework
|
||||||
|
*/
|
||||||
public function testUtf8CharBoundary() : void
|
public function testUtf8CharBoundary() : void
|
||||||
{
|
{
|
||||||
self::markTestIncomplete();
|
self::assertEquals(10, MbStringUtils::utf8CharBoundary('H=E4tten H=FCte ein =DF im Namen, w=E4ren sie m=F6glicherweise k', 12));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -166,6 +166,16 @@ class StringUtilsTest extends \PHPUnit\Framework\TestCase
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox Stringify/rendering a unknown data type returns null
|
||||||
|
* @covers phpOMS\Utils\StringUtils
|
||||||
|
* @group framework
|
||||||
|
*/
|
||||||
|
public function testInvalidStringify() : void
|
||||||
|
{
|
||||||
|
self::assertEquals(null, StringUtils::stringify(new class() {}));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @testdox The difference between two strings can be evaluated
|
* @testdox The difference between two strings can be evaluated
|
||||||
* @covers phpOMS\Utils\StringUtils
|
* @covers phpOMS\Utils\StringUtils
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user