format('Y-m-d H:i:s'), StringUtils::stringify($date));
self::assertEquals('abc', StringUtils::stringify(new class() {
public function __toString()
{
return 'abc';
}
}));
self::assertEquals('abc', StringUtils::stringify(new class() implements RenderableInterface {
public function render(mixed ...$data) : string
{
return 'abc';
}
}));
}
/**
* @testdox Stringify/rendering a unknown data type returns null
* @covers phpOMS\Utils\StringUtils
* @group framework
*/
public function testInvalidStringify() : void
{
self::assertNull(StringUtils::stringify(new class() {}));
}
/**
* @testdox The difference between two strings can be evaluated
* @covers phpOMS\Utils\StringUtils
* @group framework
*/
public function testStringDiffHtml() : void
{
$original = 'This is a test string.';
$new = 'This is a new string.';
self::assertEquals(
'This is a tnestw string.',
StringUtils::createDiffMarkup($original, $new)
);
self::assertEquals(
'This is a testnew string.',
StringUtils::createDiffMarkup($original, $new, ' ')
);
$original = '';
$new = 'This is a new string.';
self::assertEquals(
'' . $new . '',
StringUtils::createDiffMarkup($original, $new)
);
$original = 'This is a new string.';
$new = '';
self::assertEquals(
'' . $original . '',
StringUtils::createDiffMarkup($original, $new)
);
$original = 'This is a new string';
$new = 'This is a new string!';
self::assertEquals(
$original . '!',
StringUtils::createDiffMarkup($original, $new)
);
$original = 'This is a new string.';
$new = 'This is a new string';
self::assertEquals(
$new . '.',
StringUtils::createDiffMarkup($original, $new)
);
}
/**
* @testdox A string can be validated for shell safety
* @covers phpOMS\Utils\StringUtils
* @group framework
*/
public function testIsShellSafe() : void
{
self::assertTrue(StringUtils::isShellSafe('asdf'));
self::assertFalse(StringUtils::isShellSafe('`|*?~<>^()[]{}$\\'));
self::assertFalse(StringUtils::isShellSafe('™'));
}
}