/**
* @file tests/src/Util/StringsTest.php
*/
-namespace Friendica\Test\Util;
+namespace Friendica\Test\src\Util;
use Friendica\Util\Strings;
use PHPUnit\Framework\TestCase;
*/
class StringsTest extends TestCase
{
- /**
- * escape and unescape
- */
- public function testEscapeUnescape()
- {
- $text="<tag>I want to break\n this!11!<?hard?></tag>";
- $xml=XML::escape($text);
- $retext=XML::unescape($text);
- $this->assertEquals($text, $retext);
- }
-
/**
- * escape and put in a document
+ * randomnames should be random, even length
*/
- public function testEscapeDocument()
- {
- $tag="<tag>I want to break</tag>";
- $xml=XML::escape($tag);
- $text='<text>'.$xml.'</text>';
- $xml_parser=xml_parser_create();
- //should be possible to parse it
- $values=array();
- $index=array();
- $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index));
- $this->assertEquals(
- array('TEXT'=>array(0)),
- $index
- );
+ public function testRandomEven()
+ {
+ $randomname1 = Strings::getRandomName(10);
+ $randomname2 = Strings::getRandomName(10);
+
+ $this->assertNotEquals($randomname1, $randomname2);
+ }
+
+ /**
+ * randomnames should be random, odd length
+ */
+ public function testRandomOdd()
+ {
+ $randomname1 = Strings::getRandomName(9);
+ $randomname2 = Strings::getRandomName(9);
+
+ $this->assertNotEquals($randomname1, $randomname2);
+ }
+
+ /**
+ * try to fail ramdonnames
+ */
+ public function testRandomNameNoLength()
+ {
+ $randomname1 = Strings::getRandomName(0);
+ $this->assertEquals(0, strlen($randomname1));
+ }
+
+ /**
+ * try to fail it with invalid input
+ *
+ * @todo What's corect behaviour here? An exception?
+ */
+ public function testRandomNameNegativeLength()
+ {
+ $randomname1 = Strings::getRandomName(-23);
+ $this->assertEquals(0, strlen($randomname1));
+ }
+
+ /**
+ * test with a length, that may be too short
+ */
+ public function testRandomNameLength1()
+ {
+ $randomname1 = Strings::getRandomName(1);
+ $this->assertEquals(1, strlen($randomname1));
+
+ $randomname2 = Strings::getRandomName(1);
+ $this->assertEquals(1, strlen($randomname2));
+ }
+
+ /**
+ * test, that tags are escaped
+ */
+ public function testEscapeHtml()
+ {
+ $invalidstring='<submit type="button" onclick="alert(\'failed!\');" />';
+
+ $validstring = Strings::escapeTags($invalidstring);
+ $escapedString = Strings::escapeHtml($invalidstring);
+
+ $this->assertEquals('[submit type="button" onclick="alert(\'failed!\');" /]', $validstring);
$this->assertEquals(
- array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)),
- $values
+ '<submit type="button" onclick="alert('failed!');" />',
+ $escapedString
);
- xml_parser_free($xml_parser);
+ }
+
+ public function dataIsHex()
+ {
+ return [
+ 'validHex' => [
+ 'input' => '90913473615bf00c122ac78338492980',
+ 'valid' => true,
+ ],
+ 'invalidHex' => [
+ 'input' => '90913473615bf00c122ac7833849293',
+ 'valid' => false,
+ ],
+ 'emptyHex' => [
+ 'input' => '',
+ 'valid' => false,
+ ],
+ 'nullHex' => [
+ 'input' => null,
+ 'valid' => false,
+ ],
+ ];
+ }
+
+ /**
+ * Tests if the string is a valid hexadecimal value
+ *
+ * @param string $input
+ * @param bool $valid
+ *
+ * @dataProvider dataIsHex
+ */
+ public function testIsHex($input, $valid)
+ {
+ $this->assertEquals($valid, Strings::isHex($input));
}
}