<?php
namespace GDM\Framework\Types;
/**
* Generated by PHPUnit_SkeletonGenerator on 2014-07-03 at 22:23:09.
*/
class StringTest extends \PHPUnit_Framework_TestCase
{
/**
* @var String
*/
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
$this->object = new String;
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
}
/**
* @covers GDM\Framework\Types\String::clean
*/
public function testClean()
{
$string = 'a!b@c#d$e/f%g^h&i*j(k)l-m_n+o=p[q{r]s}t;u:v"w\'x,y>z';
$aToZRange = range("a", "z");
$expected1 = implode('', $aToZRange);
$stringObg1 = \GDM\Framework\Types\String::create($string)->clean('');
$this->assertEquals($expected1, (string) $stringObg1, "Clean with empty seperator failed");
$seperator = "_";
$expected2 = implode($seperator, $aToZRange);
$stringObg2 = \GDM\Framework\Types\String::create($string)->clean($seperator);
$this->assertEquals($expected2, (string) $stringObg2, "Clean with seperator " + $seperator + " failed");
$expected3 = 'abc';
$stringObg3 = \GDM\Framework\Types\String::create($string)->clean('', 3);
$this->assertEquals($expected3, (string) $stringObg3, "Clean with empty seperator and length failed");
$expected4 = 'a_b';
$stringObg4 = \GDM\Framework\Types\String::create($string)->clean('_', 3);
$this->assertEquals($expected4, (string) $stringObg4, "Clean with seperator and length failed");
}
/**
* @covers GDM\Framework\Types\String::compareTo
*/
public function testCompareTo()
{
$string = "string";
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertTrue($stringObg->compareTo($string));
$this->assertTrue($stringObg->compareTo(strtoupper($string), false));
$this->assertFalse($stringObg->compareTo('foo'));
$this->assertFalse($stringObg->compareTo(strtoupper('FOO'), false));
}
/**
* @covers GDM\Framework\Types\String::contains
*/
public function testContains()
{
$string = "string";
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertTrue($stringObg->contains($string));
$this->assertTrue($stringObg->contains("tri"));
$this->assertTrue($stringObg->contains(strtoupper($string), false));
$this->assertTrue($stringObg->contains(strtoupper("TRI"), false));
$this->assertFalse($stringObg->contains("foo"));
$this->assertFalse($stringObg->contains(strtoupper("foo"), false));
}
/**
* @covers GDM\Framework\Types\String::toLowerCase
*/
public function testToLowerCase()
{
$string = "STRING";
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertEquals(strtolower($string), (string) $stringObg->toLowerCase());
$stringObg1 = \GDM\Framework\Types\String::create($string);
$this->assertNotEquals($string, (string) $stringObg1->toLowerCase());
}
/**
* @covers GDM\Framework\Types\String::isInt
*/
public function testIsInt()
{
$this->assertTrue(\GDM\Framework\Types\String::create("1")->isInt());
$this->assertTrue(\GDM\Framework\Types\String::create(1235)->isInt());
$this->assertFalse(\GDM\Framework\Types\String::create("string")->isInt());
$this->assertFalse(\GDM\Framework\Types\String::create(1.2345)->isInt());
}
/**
* @covers GDM\Framework\Types\String::stripLineBreak
*/
public function testStripLineBreak()
{
$string = "Foo".PHP_EOL."Bar\r\nFoo\nBar";
$expected = 'FooBarFooBar';
$stringObg = \GDM\Framework\Types\String::create($string)->stripLineBreak('');
$this->assertEquals($expected, (string) $stringObg);
$this->assertNotEquals($string, (string) $stringObg);
$expected1 = 'Foo_Bar_Foo_Bar';
$stringObg1 = \GDM\Framework\Types\String::create($string)->stripLineBreak('_');
$this->assertEquals($expected1, (string) $stringObg1);
$this->assertNotEquals($string, (string) $stringObg1);
}
/**
* @covers GDM\Framework\Types\String::trim
*/
public function testTrim()
{
$string = ' Foo ';
$expected = trim($string);
$stringObg = \GDM\Framework\Types\String::create($string)->trim();
$this->assertEquals("s".$expected."e", "s".$stringObg."e");
$this->assertNotEquals("s".$string."e", "s".$stringObg."e");
$string1 = '____Foo____';
$expected1 = trim($string1, '_');
$stringObg1 = \GDM\Framework\Types\String::create($string1)->trim('_');
$this->assertEquals("s".$expected1."e", "s".$stringObg1."e");
$this->assertNotEquals("s".$string1."e", "s".$stringObg1."e");
}
/**
* @covers GDM\Framework\Types\String::leftTrim
*/
public function testLeftTrim()
{
$string = ' Foo ';
$expected = ltrim($string);
$stringObg = \GDM\Framework\Types\String::create($string)->leftTrim();
$this->assertEquals("s".$expected."e", "s".$stringObg."e");
$this->assertNotEquals("s".$string."e", "s".$stringObg."e");
$string1 = '____Foo____';
$expected1 = ltrim($string1, '_');
$stringObg1 = \GDM\Framework\Types\String::create($string1)->leftTrim('_');
$this->assertEquals("s".$expected1."e", "s".$stringObg1."e");
$this->assertNotEquals("s".$string1."e", "s".$stringObg1."e");
}
/**
* @covers GDM\Framework\Types\String::rightTrim
*/
public function testRightTrim()
{
$string = ' Foo ';
$expected = rtrim($string);
$stringObg = \GDM\Framework\Types\String::create($string)->rightTrim();
$this->assertEquals("s".$expected."e", "s".$stringObg."e");
$this->assertNotEquals("s".$string."e", "s".$stringObg."e");
$string1 = '____Foo____';
$expected1 = rtrim($string1, '_');
$stringObg1 = \GDM\Framework\Types\String::create($string1)->rightTrim('_');
$this->assertEquals("s".$expected1."e", "s".$stringObg1."e");
$this->assertNotEquals("s".$string1."e", "s".$stringObg1."e");
}
/**
* @covers GDM\Framework\Types\String::splitByCaps
*/
public function testSplitByCaps()
{
$string = 'FooBarFOOBar';
$expected = 'Foo Bar FOO Bar';
$stringObg = \GDM\Framework\Types\String::create($string)->splitByCaps();
$this->assertEquals($expected, $stringObg);
$this->assertNotEquals($string, $stringObg);
$string1 = 'FooBarFOOBar';
$expected1 = 'Foo_Bar_FOO_Bar';
$stringObg1 = \GDM\Framework\Types\String::create($string1)->splitByCaps('_');
$this->assertEquals($expected1, $stringObg1);
$this->assertNotEquals($string1, $stringObg1);
}
/**
* @covers GDM\Framework\Types\String::upperCaseWords
*/
public function testUpperCaseWords()
{
$string = 'foo bar foo bar';
$expected = 'Foo Bar Foo Bar';
$stringObg = \GDM\Framework\Types\String::create($string)->upperCaseWords();
$this->assertEquals($expected, $stringObg);
$this->assertNotEquals($string, $stringObg);
}
/**
* @covers GDM\Framework\Types\String::startsWith
*/
public function testStartsWith()
{
$string = 'foo bar foo bar';
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertTrue($stringObg->startsWith("foo"));
$this->assertFalse($stringObg->startsWith("bar"));
}
/**
* @covers GDM\Framework\Types\String::endsWith
*/
public function testEndsWith()
{
$stringObg = \GDM\Framework\Types\String::create('foo bar foo bar');
$this->assertTrue($stringObg->endsWith("bar"));
$this->assertFalse($stringObg->endsWith("foo"));
}
/**
* @covers GDM\Framework\Types\String::isEmail
*/
public function testIsEmail()
{
$this->assertTrue(\GDM\Framework\Types\String::create('foo@gmail.com')->isEmail(false));
$this->assertTrue(\GDM\Framework\Types\String::create('foo@gmail.com')->isEmail(true));
$this->assertFalse(\GDM\Framework\Types\String::create('foobar')->isEmail(false));
$this->assertFalse(\GDM\Framework\Types\String::create('foo@somenonexistantdomain_atkvdy843.com')->isEmail(true));
}
/**
* @covers GDM\Framework\Types\String::neatTruncate
* @todo Implement testNeatTruncate().
*/
public function testNeatTruncate()
{
$string = 'foo bar foo bar';
$expected = 'foo bar...';
$stringObg = \GDM\Framework\Types\String::create($string)->neatTruncate(10);
$this->assertEquals($expected, (string) $stringObg);
$this->assertNotEquals($string, (string) $stringObg);
$string1 = 'foo bar foo bar';
$expected1 = 'foo bar foo';
$stringObg1 = \GDM\Framework\Types\String::create($string1)->neatTruncate(10, '');
$this->assertEquals($expected1, (string) $stringObg1);
$this->assertNotEquals($string, (string) $stringObg1);
}
/**
* @covers GDM\Framework\Types\String::truncate
* @todo Implement testTruncate().
*/
public function testTruncate()
{
$string = 'foo bar foo bar';
$expected = 'fo...';
$stringObg = \GDM\Framework\Types\String::create($string)->truncate(5);
$this->assertEquals($expected, (string) $stringObg);
$this->assertNotEquals($string, (string) $stringObg);
}
/**
* @covers GDM\Framework\Types\String::length
*/
public function testLength()
{
$string = '12345';
$expected = 5;
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertEquals($expected, (string) $stringObg->length());
}
/**
* @covers GDM\Framework\Types\String::subString
*/
public function testSubString()
{
$string = 'abcdef';
$this->assertEquals("f", (string) (new String($string))->subString(-1)); // returns "f"
$this->assertEquals("ef", (string) (new String($string))->subString(-2)); // returns "ef"
$this->assertEquals("d", (string) (new String($string))->subString(-3, 1)); // returns "d"
$this->assertEquals("abcde", (string) (new String($string))->subString(0, -1)); // returns "abcde"
$this->assertEquals("cde", (string) (new String($string))->subString(2, -1)); // returns "cde"
$this->assertFalse((new String($string))->subString(4, -4)->get()); // returns false
$this->assertEquals("de", (string) (new String($string))->subString(-3, -1)); // returns "de"
}
/**
* @covers GDM\Framework\Types\String::indexOf
* @todo Implement testIndexOf().
*/
public function testIndexOf()
{
$string = 'foobar';
$this->assertEquals(3, (new String($string))->indexOf("b"));
$this->assertEquals(1, (new String($string))->indexOf("o"));
$this->assertEquals(false, (new String($string))->indexOf("t"));
$this->assertEquals(4, (new String($string))->indexOf("a", 2));
}
/**
* @covers GDM\Framework\Types\String::escapeDblQuotes
* @todo Implement testEscapeDblQuotes().
*/
public function testEscapeDblQuotes()
{
$string = 'foo"bar';
$this->assertEquals('foo\\"bar', (string) (new String($string))->escapeDblQuotes());
}
/**
* @covers GDM\Framework\Types\String::stripNonNums
* @todo Implement testStripNonNums().
*/
public function testStripNonNums()
{
$string = '1foo2bar3';
$this->assertEquals('123', (string) (new String($string))->stripNonNums());
}
/**
* @covers GDM\Framework\Types\String::replace
*/
public function testReplace()
{
$string = 'foo bar foo';
$this->assertEquals('bar', (string) (new String($string))->replace('/foo.*/', 'bar'));
}
/**
* @covers GDM\Framework\Types\String::simpleReplace
*/
public function testSimpleReplace()
{
$string = 'foo bar foo';
$this->assertEquals('bar bar bar', (string) (new String($string))->simpleReplace('foo', 'bar'));
}
/**
* @covers GDM\Framework\Types\String::stripSpecialChars
*/
public function testStripSpecialChars()
{
$string = 'a!b@c#d$e/f%g^h&i*j(k)l-m_n+o=p[q{r]s}t;u:v"w\'x,y>z';
$aToZRange = range("a", "z");
$expected1 = implode('', $aToZRange);
$stringObg1 = \GDM\Framework\Types\String::create($string)->stripSpecialChars('');
$this->assertEquals($expected1, (string) $stringObg1, "Clean with empty seperator failed");
$seperator = "_";
$expected2 = implode($seperator, $aToZRange);
$stringObg2 = \GDM\Framework\Types\String::create($string)->stripSpecialChars($seperator);
$this->assertEquals($expected2, (string) $stringObg2, "Clean with seperator " + $seperator + " failed");
}
/**
* @covers GDM\Framework\Types\String::split
* @todo Implement testSplit().
*/
public function testSplit()
{
$string = 'foo bar foo';
$this->assertEquals(explode(' ', $string), (new String($string))->split(' '));
$this->assertEquals(explode(' ', $string, 2), (new String($string))->split(' ', 2));
}
/**
* @covers GDM\Framework\Types\String::toUpperCase
*/
public function testToUpperCase()
{
$string = "string";
$stringObg = \GDM\Framework\Types\String::create($string);
$this->assertEquals(strtoupper($string), (string) $stringObg->toUpperCase());
$stringObg1 = \GDM\Framework\Types\String::create($string);
$this->assertNotEquals($string, (string) $stringObg1->toUpperCase());
}
/**
* @covers GDM\Framework\Types\String::toBool
*/
public function testToBool()
{
foreach (["off", "false", "no", "0", "zero"] as $falseString) {
$this->assertFalse((new String($falseString))->toBool());
}
$this->assertTrue((new String('yes'))->toBool());
$this->assertTrue((new String('yup'))->toBool());
$this->assertTrue((new String('chur'))->toBool());
$this->assertTrue((new String('ok'))->toBool());
}
/**
* @covers GDM\Framework\Types\String::reverse
*/
public function testReverse()
{
$this->assertEquals('foobar', (new String('raboof'))->reverse());
}
/**
* @covers GDM\Framework\Types\String::md5
* @todo Implement testMd5().
*/
public function testMd5()
{
$string = "foobar";
$this->assertEquals(md5($string), (new String($string))->md5());
}
/**
* @covers GDM\Framework\Types\String::toComment
* @todo Implement testToComment().
*/
public function testToComment()
{
$string = "foobar";
$this->assertEquals("<!-- ".$string." -->", (string) (new String($string))->toComment('text/html'));
$this->assertEquals("/** ".$string." **/", (string) (new String($string))->toComment('text/javascript'));
$this->assertEquals("/** ".$string." **/", (string) (new String($string))->toComment('text/css'));
$this->assertEquals("/** ".$string." **/", (string) (new String($string))->toComment('application/x-javascript'));
}
/**
* @covers GDM\Framework\Types\String::createUUID
*/
public function testCreateUUID()
{
$this->assertTrue(preg_match('/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/', (string) String::createUUID()) !== false);
}
/**
* @covers GDM\Framework\Types\String::createRandomAlphaNumeric
*/
public function testCreateRandomAlphaNumeric()
{
$this->assertTrue(strlen((string) String::createRandomAlphaNumeric()) === 8);
$this->assertTrue(strlen((string) String::createRandomAlphaNumeric(3)) === 3);
$this->assertTrue(strlen((string) String::createRandomAlphaNumeric(20)) === 20);
}
/**
* @covers GDM\Framework\Types\String::fromObject
* @covers GDM\Framework\Types\Type::fromObject
*/
public function testFromObject()
{
$stringableClass = new stringableClass();
$this->assertEquals((string) $stringableClass, (string) String::create()->fromObject($stringableClass));
$this->assertEquals('GDM\Framework\Types\nonStringableClass', (string) String::create()->fromObject(new nonStringableClass()));
}
/**
* @covers GDM\Framework\Types\String::fromBool
* @covers GDM\Framework\Types\Type::fromBool
*/
public function testFromBool()
{
$this->assertEquals('true', (string) String::create()->fromBool(true));
$this->assertEquals('false', (string) String::create()->fromBool(false));
}
/**
* @covers GDM\Framework\Types\String::fromInt
* @covers GDM\Framework\Types\Type::fromInt
*/
public function testFromInt()
{
$this->assertEquals('1234', (string) String::create()->fromInt(1234));
}
/**
* @covers GDM\Framework\Types\String::fromDouble
* @covers GDM\Framework\Types\Type::fromDouble
*/
public function testFromDouble()
{
$this->assertEquals('1.23', (string) String::create()->fromDouble(1.23));
}
/**
* @covers GDM\Framework\Types\String::fromString
* @covers GDM\Framework\Types\Type::fromString
*/
public function testFromString()
{
$this->assertEquals("foo bar", (string) String::create()->fromString("foo bar"));
}
/**
* @covers GDM\Framework\Types\String::fromResource
* @covers GDM\Framework\Types\Type::fromResource
*/
public function testFromResource()
{
$fh = tmpfile();
fwrite($fh, "foo bar");
fseek($fh, 0);
$this->assertEquals("foo bar", (string) String::create()->fromResource($fh));
fclose($fh);
}
/**
* @covers GDM\Framework\Types\String::get
*/
public function testGet()
{
$this->assertEquals("foo bar", (string) String::create()->fromString("foo bar")->get());
}
/**
* @covers GDM\Framework\Types\String::clear
*/
public function testClear()
{
$string = "foo bar";
$strObg = String::create()->fromString($string);
$this->assertEquals($string, (string) $strObg);
$method = new \ReflectionMethod($strObg, 'clear');
$method->setAccessible(true);
$this->assertEmpty((string) $method->invoke($strObg));
}
/**
* @covers GDM\Framework\Types\String::create
* @covers GDM\Framework\Types\Type::create
* @covers GDM\Framework\Types\Type::__construct
*/
public function testCreate()
{
$this->assertEquals("foo bar", (string) String::create("foo bar"));
}
/**
* @covers GDM\Framework\Types\Type::set
*/
public function testSet()
{
$this->assertEquals("true", (string) String::create()->set(true));
$this->assertEquals("1234", (string) String::create()->set(1234));
$this->assertEquals("1.23", (string) String::create()->set(1.23));
$this->assertEquals("foo bar", (string) String::create()->set("foo bar"));
$fh = tmpfile();
fwrite($fh, "foo bar");
fseek($fh, 0);
$this->assertEquals("foo bar", (string) String::create()->set($fh));
fclose($fh);
$this->setExpectedException('InvalidArgumentException');
String::create()->set(new stringableClass());
$this->setExpectedException('UnexpectedValueException');
String::create()->set([]);
}
}
if (!class_exists('\GDM\Framework\Types\stringableClass')) {
class stringableClass
{
public function __toString()
{
return "http://www.example.com/foo/bar";
}
}
}
if (!class_exists('\GDM\Framework\Types\nonStringableClass')) {
class nonStringableClass
{
}
}
|