1
0
mirror of https://github.com/danielstjules/Stringy.git synced 2025-08-06 13:26:40 +02:00

Merge branch 'trim'

This commit is contained in:
Daniel St. Jules
2015-06-29 13:03:13 -07:00
4 changed files with 83 additions and 6 deletions

View File

@@ -4,6 +4,13 @@ namespace Stringy;
class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
{
const TRIM_BOTH = 'trim';
const TRIM_LEFT = 'ltrim';
const TRIM_RIGHT = 'rtrim';
/**
* An instance's string.
*
@@ -1026,11 +1033,30 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
/**
* Returns the trimmed string. An alias for PHP's trim() function.
*
* @param string $charList list with characters to be removed
* @param int $type which function will be used to trim the string, trim, ltrim or rtrim
* @return Stringy Object with a trimmed $str
* @throws \InvalidArgumentException
*/
public function trim()
public function trim($charList = " \t\n\r\0\x0B", $type = self::TRIM_BOTH)
{
return static::create(trim($this->str), $this->encoding);
if (!is_string($charList)) {
throw new \InvalidArgumentException(
'Charset list must be a string'
);
}
if (!in_array($type, array(
self::TRIM_BOTH,
self::TRIM_LEFT,
self::TRIM_RIGHT,
))) {
throw new \InvalidArgumentException(
'Type of trim function must be trim (default), rtrim or ltrim, just as native php.'
);
}
return static::create($type($this->str, $charList), $this->encoding);
}
/**

View File

@@ -590,7 +590,7 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
);
}
public function trimProvider()
public function trimProviderWithoutParams()
{
return array(
array('foo bar', ' foo bar '),
@@ -604,6 +604,23 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
);
}
public function trimProviderWithParams()
{
return array(
array('foo bar', ' foo bar ', " \t\n\r\0\x0B", 'trim'),
array('foo bar', ' foo bar', " \t\n\r\0\x0B", 'trim'),
array('foo bar', 'foo bar ', " \t\n\r\0\x0B", 'trim'),
array('foo bar', "\n\t foo bar \n\t", " \t\n\r\0\x0B", 'trim'),
array('fòô bàř', ' fòô bàř ', " \t\n\r\0\x0B", 'trim'),
array('fòô bàř', ' fòô bàř', " \t\n\r\0\x0B", 'trim'),
array('fòô bàř', 'fòô bàř ', " \t\n\r\0\x0B", 'trim'),
array('fòô bàř', "\n\t fòô bàř \n\t", " \t\n\r\0\x0B", 'trim'),
array(' foo bar', ' foo bar ', " \t\n\r\0\x0B", 'rtrim'),
array('foo bar ', ' foo bar ', " \t\n\r\0\x0B", 'ltrim'),
array(' foo bar ', ' foo bar ', "\t\n\r\0\x0B", 'ltrim')
);
}
public function longestCommonPrefixProvider()
{
return array(

View File

@@ -382,7 +382,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider trimProvider()
* @dataProvider trimProviderWithoutParams()
*/
public function testTrim($expected, $str)
{

View File

@@ -594,9 +594,9 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider trimProvider()
* @dataProvider trimProviderWithoutParams()
*/
public function testTrim($expected, $str)
public function testTrimWithoutParams($expected, $str)
{
$stringy = S::create($str);
$result = $stringy->trim();
@@ -605,6 +605,40 @@ class StringyTestCase extends CommonTest
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider trimProviderWithParams()
*/
public function testTrimWithParams($expected, $str, $charList, $type)
{
$stringy = S::create($str);
$result = $stringy->trim($charList, $type);
$this->assertStringy($result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @expectedException InvalidArgumentException
*/
public function testTrimWithInvalidCharset()
{
$stringy = S::create('test');
$stringy->trim(array('test1', 'test2'), 'trim');
$this->fail('Expecting exception when the first argument passed is not a string');
}
/**
* @expectedException InvalidArgumentException
*/
public function testTrimWithInvalidType()
{
$stringy = S::create('test');
$stringy->trim(' test ', 'aa');
$stringy->trim('btest ', 'Trim');
$stringy->trim(' btest', 'RTrim');
$this->fail('Expecting exception when the first argument passed is not a string');
}
/**
* @dataProvider longestCommonPrefixProvider()
*/