1027 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1027 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | ||
| 
 | ||
| use Stringy\Stringy;
 | ||
| 
 | ||
| abstract class CommonTest extends PHPUnit_Framework_TestCase
 | ||
| {
 | ||
|     /**
 | ||
|      * Asserts that a variable is of a Stringy instance.
 | ||
|      *
 | ||
|      * @param mixed $actual
 | ||
|      */
 | ||
|     public function assertStringy($actual)
 | ||
|     {
 | ||
|         $this->assertInstanceOf('Stringy\Stringy', $actual);
 | ||
|     }
 | ||
| 
 | ||
|     public function charsProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(array(), ''),
 | ||
|             array(array('T', 'e', 's', 't'), 'Test'),
 | ||
|             array(array('F', 'ò', 'ô', ' ', 'B', 'à', 'ř'), 'Fòô Bàř', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function upperCaseFirstProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('Test', 'Test'),
 | ||
|             array('Test', 'test'),
 | ||
|             array('1a', '1a'),
 | ||
|             array('Σ test', 'σ test', 'UTF-8'),
 | ||
|             array(' σ test', ' σ test', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function lowerCaseFirstProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('test', 'Test'),
 | ||
|             array('test', 'test'),
 | ||
|             array('1a', '1a'),
 | ||
|             array('σ test', 'Σ test', 'UTF-8'),
 | ||
|             array(' Σ test', ' Σ test', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function camelizeProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('camelCase', 'CamelCase'),
 | ||
|             array('camelCase', 'Camel-Case'),
 | ||
|             array('camelCase', 'camel case'),
 | ||
|             array('camelCase', 'camel -case'),
 | ||
|             array('camelCase', 'camel - case'),
 | ||
|             array('camelCase', 'camel_case'),
 | ||
|             array('camelCTest', 'camel c test'),
 | ||
|             array('stringWith1Number', 'string_with1number'),
 | ||
|             array('stringWith22Numbers', 'string-with-2-2 numbers'),
 | ||
|             array('1Camel2Case', '1camel2case'),
 | ||
|             array('camelΣase', 'camel σase', 'UTF-8'),
 | ||
|             array('στανιλCase', 'Στανιλ case', 'UTF-8'),
 | ||
|             array('σamelCase', 'σamel  Case', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function upperCamelizeProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('CamelCase', 'camelCase'),
 | ||
|             array('CamelCase', 'Camel-Case'),
 | ||
|             array('CamelCase', 'camel case'),
 | ||
|             array('CamelCase', 'camel -case'),
 | ||
|             array('CamelCase', 'camel - case'),
 | ||
|             array('CamelCase', 'camel_case'),
 | ||
|             array('CamelCTest', 'camel c test'),
 | ||
|             array('StringWith1Number', 'string_with1number'),
 | ||
|             array('StringWith22Numbers', 'string-with-2-2 numbers'),
 | ||
|             array('1Camel2Case', '1camel2case'),
 | ||
|             array('CamelΣase', 'camel σase', 'UTF-8'),
 | ||
|             array('ΣτανιλCase', 'στανιλ case', 'UTF-8'),
 | ||
|             array('ΣamelCase', 'Σamel  Case', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function dasherizeProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('test-case', 'testCase'),
 | ||
|             array('test-case', 'Test-Case'),
 | ||
|             array('test-case', 'test case'),
 | ||
|             array('-test-case', '-test -case'),
 | ||
|             array('test-case', 'test - case'),
 | ||
|             array('test-case', 'test_case'),
 | ||
|             array('test-c-test', 'test c test'),
 | ||
|             array('test-d-case', 'TestDCase'),
 | ||
|             array('test-c-c-test', 'TestCCTest'),
 | ||
|             array('string-with1number', 'string_with1number'),
 | ||
|             array('string-with-2-2-numbers', 'String-with_2_2 numbers'),
 | ||
|             array('1test2case', '1test2case'),
 | ||
|             array('dash-σase', 'dash Σase', 'UTF-8'),
 | ||
|             array('στανιλ-case', 'Στανιλ case', 'UTF-8'),
 | ||
|             array('σash-case', 'Σash  Case', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function underscoredProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('test_case', 'testCase'),
 | ||
|             array('test_case', 'Test-Case'),
 | ||
|             array('test_case', 'test case'),
 | ||
|             array('test_case', 'test -case'),
 | ||
|             array('_test_case', '-test - case'),
 | ||
|             array('test_case', 'test_case'),
 | ||
|             array('test_c_test', '  test c test'),
 | ||
|             array('test_u_case', 'TestUCase'),
 | ||
|             array('test_c_c_test', 'TestCCTest'),
 | ||
|             array('string_with1number', 'string_with1number'),
 | ||
|             array('string_with_2_2_numbers', 'String-with_2_2 numbers'),
 | ||
|             array('1test2case', '1test2case'),
 | ||
|             array('test_σase', 'test Σase', 'UTF-8'),
 | ||
|             array('στανιλ_case', 'Στανιλ case', 'UTF-8'),
 | ||
|             array('σash_case', 'Σash  Case', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function swapCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('TESTcASE', 'testCase'),
 | ||
|             array('tEST-cASE', 'Test-Case'),
 | ||
|             array(' - σASH  cASE', ' - Σash  Case', 'UTF-8'),
 | ||
|             array('νΤΑΝΙΛ', 'Ντανιλ', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function titleizeProvider()
 | ||
|     {
 | ||
|         $ignore = array('at', 'by', 'for', 'in', 'of', 'on', 'out', 'to', 'the');
 | ||
| 
 | ||
|         return array(
 | ||
|             array('Testing The Method', 'testing the method'),
 | ||
|             array('Testing the Method', 'testing the method', $ignore, 'UTF-8'),
 | ||
|             array('I Like to Watch DVDs at Home', 'i like to watch DVDs at home',
 | ||
|                 $ignore, 'UTF-8'),
 | ||
|             array('Θα Ήθελα Να Φύγει', '  Θα ήθελα να φύγει  ', null, 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function humanizeProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('Author', 'author_id'),
 | ||
|             array('Test user', ' _test_user_'),
 | ||
|             array('Συγγραφέας', ' συγγραφέας_id ', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function tidyProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('"I see..."', '“I see…”'),
 | ||
|             array("'This too'", "‘This too’"),
 | ||
|             array('test-dash', 'test—dash'),
 | ||
|             array('Ο συγγραφέας είπε...', 'Ο συγγραφέας είπε…')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function collapseWhitespaceProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', '  foo   bar  '),
 | ||
|             array('test string', 'test string'),
 | ||
|             array('Ο συγγραφέας', '   Ο     συγγραφέας  '),
 | ||
|             array('123', ' 123 '),
 | ||
|             array('', ' ', 'UTF-8'), // no-break space (U+00A0)
 | ||
|             array('', '           ', 'UTF-8'), // spaces U+2000 to U+200A
 | ||
|             array('', ' ', 'UTF-8'), // narrow no-break space (U+202F)
 | ||
|             array('', ' ', 'UTF-8'), // medium mathematical space (U+205F)
 | ||
|             array('', ' ', 'UTF-8'), // ideographic space (U+3000)
 | ||
|             array('1 2 3', '  1  2  3  ', 'UTF-8'),
 | ||
|             array('', ' '),
 | ||
|             array('', ''),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toAsciiProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'fòô bàř'),
 | ||
|             array(' TEST ', ' ŤÉŚŢ '),
 | ||
|             array('f = z = 3', 'φ = ź = 3'),
 | ||
|             array('perevirka', 'перевірка'),
 | ||
|             array('lysaya gora', 'лысая гора'),
 | ||
|             array('shchuka', 'щука'),
 | ||
|             array('', '漢字'),
 | ||
|             array('xin chao the gioi', 'xin chào thế giới'),
 | ||
|             array('XIN CHAO THE GIOI', 'XIN CHÀO THẾ GIỚI'),
 | ||
|             array('dam phat chet luon', 'đấm phát chết luôn'),
 | ||
|             array(' ', ' '), // no-break space (U+00A0)
 | ||
|             array('           ', '           '), // spaces U+2000 to U+200A
 | ||
|             array(' ', ' '), // narrow no-break space (U+202F)
 | ||
|             array(' ', ' '), // medium mathematical space (U+205F)
 | ||
|             array(' ', ' '), // ideographic space (U+3000)
 | ||
|             array('', '𐍉'), // some uncommon, unsupported character (U+10349)
 | ||
|             array('𐍉', '𐍉', false),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function padProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             // length <= str
 | ||
|             array('foo bar', 'foo bar', -1),
 | ||
|             array('foo bar', 'foo bar', 7),
 | ||
|             array('fòô bàř', 'fòô bàř', 7, ' ', 'right', 'UTF-8'),
 | ||
| 
 | ||
|             // right
 | ||
|             array('foo bar  ', 'foo bar', 9),
 | ||
|             array('foo bar_*', 'foo bar', 9, '_*', 'right'),
 | ||
|             array('fòô bàř¬ø¬', 'fòô bàř', 10, '¬ø', 'right', 'UTF-8'),
 | ||
| 
 | ||
|             // left
 | ||
|             array('  foo bar', 'foo bar', 9, ' ', 'left'),
 | ||
|             array('_*foo bar', 'foo bar', 9, '_*', 'left'),
 | ||
|             array('¬ø¬fòô bàř', 'fòô bàř', 10, '¬ø', 'left', 'UTF-8'),
 | ||
| 
 | ||
|             // both
 | ||
|             array('foo bar ', 'foo bar', 8, ' ', 'both'),
 | ||
|             array('¬fòô bàř¬ø', 'fòô bàř', 10, '¬ø', 'both', 'UTF-8'),
 | ||
|             array('¬øfòô bàř¬øÿ', 'fòô bàř', 12, '¬øÿ', 'both', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function padLeftProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('  foo bar', 'foo bar', 9),
 | ||
|             array('_*foo bar', 'foo bar', 9, '_*'),
 | ||
|             array('_*_foo bar', 'foo bar', 10, '_*'),
 | ||
|             array('  fòô bàř', 'fòô bàř', 9, ' ', 'UTF-8'),
 | ||
|             array('¬øfòô bàř', 'fòô bàř', 9, '¬ø', 'UTF-8'),
 | ||
|             array('¬ø¬fòô bàř', 'fòô bàř', 10, '¬ø', 'UTF-8'),
 | ||
|             array('¬ø¬øfòô bàř', 'fòô bàř', 11, '¬ø', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function padRightProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar  ', 'foo bar', 9),
 | ||
|             array('foo bar_*', 'foo bar', 9, '_*'),
 | ||
|             array('foo bar_*_', 'foo bar', 10, '_*'),
 | ||
|             array('fòô bàř  ', 'fòô bàř', 9, ' ', 'UTF-8'),
 | ||
|             array('fòô bàř¬ø', 'fòô bàř', 9, '¬ø', 'UTF-8'),
 | ||
|             array('fòô bàř¬ø¬', 'fòô bàř', 10, '¬ø', 'UTF-8'),
 | ||
|             array('fòô bàř¬ø¬ø', 'fòô bàř', 11, '¬ø', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function padBothProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar ', 'foo bar', 8),
 | ||
|             array(' foo bar ', 'foo bar', 9, ' '),
 | ||
|             array('fòô bàř ', 'fòô bàř', 8, ' ', 'UTF-8'),
 | ||
|             array(' fòô bàř ', 'fòô bàř', 9, ' ', 'UTF-8'),
 | ||
|             array('fòô bàř¬', 'fòô bàř', 8, '¬ø', 'UTF-8'),
 | ||
|             array('¬fòô bàř¬', 'fòô bàř', 9, '¬ø', 'UTF-8'),
 | ||
|             array('¬fòô bàř¬ø', 'fòô bàř', 10, '¬ø', 'UTF-8'),
 | ||
|             array('¬øfòô bàř¬ø', 'fòô bàř', 11, '¬ø', 'UTF-8'),
 | ||
|             array('¬fòô bàř¬ø', 'fòô bàř', 10, '¬øÿ', 'UTF-8'),
 | ||
|             array('¬øfòô bàř¬ø', 'fòô bàř', 11, '¬øÿ', 'UTF-8'),
 | ||
|             array('¬øfòô bàř¬øÿ', 'fòô bàř', 12, '¬øÿ', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function startsWithProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, 'foo bars', 'foo bar'),
 | ||
|             array(true, 'FOO bars', 'foo bar', false),
 | ||
|             array(true, 'FOO bars', 'foo BAR', false),
 | ||
|             array(true, 'FÒÔ bàřs', 'fòô bàř', false, 'UTF-8'),
 | ||
|             array(true, 'fòô bàřs', 'fòô BÀŘ', false, 'UTF-8'),
 | ||
|             array(false, 'foo bar', 'bar'),
 | ||
|             array(false, 'foo bar', 'foo bars'),
 | ||
|             array(false, 'FOO bar', 'foo bars'),
 | ||
|             array(false, 'FOO bars', 'foo BAR'),
 | ||
|             array(false, 'FÒÔ bàřs', 'fòô bàř', true, 'UTF-8'),
 | ||
|             array(false, 'fòô bàřs', 'fòô BÀŘ', true, 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function endsWithProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, 'foo bars', 'o bars'),
 | ||
|             array(true, 'FOO bars', 'o bars', false),
 | ||
|             array(true, 'FOO bars', 'o BARs', false),
 | ||
|             array(true, 'FÒÔ bàřs', 'ô bàřs', false, 'UTF-8'),
 | ||
|             array(true, 'fòô bàřs', 'ô BÀŘs', false, 'UTF-8'),
 | ||
|             array(false, 'foo bar', 'foo'),
 | ||
|             array(false, 'foo bar', 'foo bars'),
 | ||
|             array(false, 'FOO bar', 'foo bars'),
 | ||
|             array(false, 'FOO bars', 'foo BARS'),
 | ||
|             array(false, 'FÒÔ bàřs', 'fòô bàřs', true, 'UTF-8'),
 | ||
|             array(false, 'fòô bàřs', 'fòô BÀŘS', true, 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toSpacesProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('    foo    bar    ', '	foo	bar	'),
 | ||
|             array('     foo     bar     ', '	foo	bar	', 5),
 | ||
|             array('    foo  bar  ', '		foo	bar	', 2),
 | ||
|             array('foobar', '	foo	bar	', 0),
 | ||
|             array("    foo\n    bar", "	foo\n	bar"),
 | ||
|             array("    fòô\n    bàř", "	fòô\n	bàř")
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toTabsProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('	foo	bar	', '    foo    bar    '),
 | ||
|             array('	foo	bar	', '     foo     bar     ', 5),
 | ||
|             array('		foo	bar	', '    foo  bar  ', 2),
 | ||
|             array("	foo\n	bar", "    foo\n    bar"),
 | ||
|             array("	fòô\n	bàř", "    fòô\n    bàř")
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toLowerCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'FOO BAR'),
 | ||
|             array(' foo_bar ', ' FOO_bar '),
 | ||
|             array('fòô bàř', 'FÒÔ BÀŘ', 'UTF-8'),
 | ||
|             array(' fòô_bàř ', ' FÒÔ_bàř ', 'UTF-8'),
 | ||
|             array('αυτοκίνητο', 'ΑΥΤΟΚΊΝΗΤΟ', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toTitleCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('Foo Bar', 'foo bar'),
 | ||
|             array(' Foo_Bar ', ' foo_bar '),
 | ||
|             array('Fòô Bàř', 'fòô bàř', 'UTF-8'),
 | ||
|             array(' Fòô_Bàř ', ' fòô_bàř ', 'UTF-8'),
 | ||
|             array('Αυτοκίνητο Αυτοκίνητο', 'αυτοκίνητο αυτοκίνητο', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function toUpperCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('FOO BAR', 'foo bar'),
 | ||
|             array(' FOO_BAR ', ' FOO_bar '),
 | ||
|             array('FÒÔ BÀŘ', 'fòô bàř', 'UTF-8'),
 | ||
|             array(' FÒÔ_BÀŘ ', ' FÒÔ_bàř ', 'UTF-8'),
 | ||
|             array('ΑΥΤΟΚΊΝΗΤΟ', 'αυτοκίνητο', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function slugifyProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo-bar', ' foo  bar '),
 | ||
|             array('foo-bar', 'foo -.-"-...bar'),
 | ||
|             array('another-foo-bar', 'another..& foo -.-"-...bar'),
 | ||
|             array('foo-dbar', " Foo d'Bar "),
 | ||
|             array('a-string-with-dashes', 'A string-with-dashes'),
 | ||
|             array('using-strings-like-foo-bar', 'Using strings like fòô bàř'),
 | ||
|             array('numbers-1234', 'numbers 1234'),
 | ||
|             array('perevirka-ryadka', 'перевірка рядка'),
 | ||
|             array('bukvar-s-bukvoy-y', 'букварь с буквой ы'),
 | ||
|             array('podekhal-k-podezdu-moego-doma', 'подъехал к подъезду моего дома'),
 | ||
|             array('foo:bar:baz', 'Foo bar baz', ':'),
 | ||
|             array('a_string_with_underscores', 'A_string with_underscores', '_'),
 | ||
|             array('a_string_with_dashes', 'A string-with-dashes', '_'),
 | ||
|             array('a\string\with\dashes', 'A string-with-dashes', '\\'),
 | ||
|             array('an_odd_string', '--   An odd__   string-_', '_')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function containsProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, 'Str contains foo bar', 'foo bar'),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%',  ' @!%#*&^%'),
 | ||
|             array(true, 'Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å´¥©', true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å˚ ∆', true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'øœ¬', true, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', 'Foo bar'),
 | ||
|             array(false, 'Str contains foo bar', 'foobar'),
 | ||
|             array(false, 'Str contains foo bar', 'foo bar '),
 | ||
|             array(false, 'Ο συγγραφέας είπε', '  συγγραφέας ', true, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', ' ßå˚', true, 'UTF-8'),
 | ||
|             array(true, 'Str contains foo bar', 'Foo bar', false),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%',  ' @!%#*&^%', false),
 | ||
|             array(true, 'Ο συγγραφέας είπε', 'ΣΥΓΓΡΑΦΈΑΣ', false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'Å´¥©', false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'Å˚ ∆', false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'ØŒ¬', false, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', 'foobar', false),
 | ||
|             array(false, 'Str contains foo bar', 'foo bar ', false),
 | ||
|             array(false, 'Ο συγγραφέας είπε', '  συγγραφέας ', false, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', ' ßÅ˚', false, 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function containsAnyProvider()
 | ||
|     {
 | ||
|         // One needle
 | ||
|         $singleNeedle = array_map(function ($array) {
 | ||
|             $array[2] = array($array[2]);
 | ||
|             return $array;
 | ||
|         }, $this->containsProvider());
 | ||
| 
 | ||
|         $provider = array(
 | ||
|             // No needles
 | ||
|             array(false, 'Str contains foo bar', array()),
 | ||
|             // Multiple needles
 | ||
|             array(true, 'Str contains foo bar', array('foo', 'bar')),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*', '&^%')),
 | ||
|             array(true, 'Ο συγγραφέας είπε', array('συγγρ', 'αφέας'), 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å´¥', '©'), true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å˚ ', '∆'), true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('øœ', '¬'), true, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', array('Foo', 'Bar')),
 | ||
|             array(false, 'Str contains foo bar', array('foobar', 'bar ')),
 | ||
|             array(false, 'Str contains foo bar', array('foo bar ', '  foo')),
 | ||
|             array(false, 'Ο συγγραφέας είπε', array('  συγγραφέας ', '  συγγραφ '), true, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßå˚', ' ß '), true, 'UTF-8'),
 | ||
|             array(true, 'Str contains foo bar', array('Foo bar', 'bar'), false),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*&^%', '*&^%'), false),
 | ||
|             array(true, 'Ο συγγραφέας είπε', array('ΣΥΓΓΡΑΦΈΑΣ', 'ΑΦΈΑ'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å´¥©', '¥©'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å˚ ∆', ' ∆'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('ØŒ¬', 'Œ'), false, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', array('foobar', 'none'), false),
 | ||
|             array(false, 'Str contains foo bar', array('foo bar ', ' ba '), false),
 | ||
|             array(false, 'Ο συγγραφέας είπε', array('  συγγραφέας ', ' ραφέ '), false, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßÅ˚', ' Å˚ '), false, 'UTF-8'),
 | ||
|         );
 | ||
| 
 | ||
|         return array_merge($singleNeedle, $provider);
 | ||
|     }
 | ||
| 
 | ||
|     public function containsAllProvider()
 | ||
|     {
 | ||
|         // One needle
 | ||
|         $singleNeedle = array_map(function ($array) {
 | ||
|             $array[2] = array($array[2]);
 | ||
|             return $array;
 | ||
|         }, $this->containsProvider());
 | ||
| 
 | ||
|         $provider = array(
 | ||
|             // One needle
 | ||
|             array(false, 'Str contains foo bar', array()),
 | ||
|             // Multiple needles
 | ||
|             array(true, 'Str contains foo bar', array('foo', 'bar')),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*', '&^%')),
 | ||
|             array(true, 'Ο συγγραφέας είπε', array('συγγρ', 'αφέας'), 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å´¥', '©'), true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å˚ ', '∆'), true, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('øœ', '¬'), true, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', array('Foo', 'bar')),
 | ||
|             array(false, 'Str contains foo bar', array('foobar', 'bar')),
 | ||
|             array(false, 'Str contains foo bar', array('foo bar ', 'bar')),
 | ||
|             array(false, 'Ο συγγραφέας είπε', array('  συγγραφέας ', '  συγγραφ '), true, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßå˚', ' ß '), true, 'UTF-8'),
 | ||
|             array(true, 'Str contains foo bar', array('Foo bar', 'bar'), false),
 | ||
|             array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*&^%', '*&^%'), false),
 | ||
|             array(true, 'Ο συγγραφέας είπε', array('ΣΥΓΓΡΑΦΈΑΣ', 'ΑΦΈΑ'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å´¥©', '¥©'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å˚ ∆', ' ∆'), false, 'UTF-8'),
 | ||
|             array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('ØŒ¬', 'Œ'), false, 'UTF-8'),
 | ||
|             array(false, 'Str contains foo bar', array('foobar', 'none'), false),
 | ||
|             array(false, 'Str contains foo bar', array('foo bar ', ' ba'), false),
 | ||
|             array(false, 'Ο συγγραφέας είπε', array('  συγγραφέας ', ' ραφέ '), false, 'UTF-8'),
 | ||
|             array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßÅ˚', ' Å˚ '), false, 'UTF-8'),
 | ||
|         );
 | ||
| 
 | ||
|         return array_merge($singleNeedle, $provider);
 | ||
|     }
 | ||
| 
 | ||
|     public function surroundProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('__foobar__', 'foobar', '__'),
 | ||
|             array('test', 'test', ''),
 | ||
|             array('**', '', '*'),
 | ||
|             array('¬fòô bàř¬', 'fòô bàř', '¬'),
 | ||
|             array('ßå∆˚ test ßå∆˚', ' test ', 'ßå∆˚')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function insertProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'oo bar', 'f', 0),
 | ||
|             array('foo bar', 'f bar', 'oo', 1),
 | ||
|             array('f bar', 'f bar', 'oo', 20),
 | ||
|             array('foo bar', 'foo ba', 'r', 6),
 | ||
|             array('fòô bàř', 'òô bàř', 'f', 0, 'UTF-8'),
 | ||
|             array('fòô bàř', 'f bàř', 'òô', 1, 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bà', 'ř', 6, 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function truncateProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('Test foo bar', 'Test foo bar', 12),
 | ||
|             array('Test foo ba', 'Test foo bar', 11),
 | ||
|             array('Test foo', 'Test foo bar', 8),
 | ||
|             array('Test fo', 'Test foo bar', 7),
 | ||
|             array('Test', 'Test foo bar', 4),
 | ||
|             array('Test foo bar', 'Test foo bar', 12, '...'),
 | ||
|             array('Test foo...', 'Test foo bar', 11, '...'),
 | ||
|             array('Test ...', 'Test foo bar', 8, '...'),
 | ||
|             array('Test...', 'Test foo bar', 7, '...'),
 | ||
|             array('T...', 'Test foo bar', 4, '...'),
 | ||
|             array('Test fo....', 'Test foo bar', 11, '....'),
 | ||
|             array('Test fòô bàř', 'Test fòô bàř', 12, '', 'UTF-8'),
 | ||
|             array('Test fòô bà', 'Test fòô bàř', 11, '', 'UTF-8'),
 | ||
|             array('Test fòô', 'Test fòô bàř', 8, '', 'UTF-8'),
 | ||
|             array('Test fò', 'Test fòô bàř', 7, '', 'UTF-8'),
 | ||
|             array('Test', 'Test fòô bàř', 4, '', 'UTF-8'),
 | ||
|             array('Test fòô bàř', 'Test fòô bàř', 12, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Test fòô ϰϰ', 'Test fòô bàř', 11, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Test fϰϰ', 'Test fòô bàř', 8, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Test ϰϰ', 'Test fòô bàř', 7, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Teϰϰ', 'Test fòô bàř', 4, 'ϰϰ', 'UTF-8'),
 | ||
|             array('What are your pl...', 'What are your plans today?', 19, '...')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function safeTruncateProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('Test foo bar', 'Test foo bar', 12),
 | ||
|             array('Test foo', 'Test foo bar', 11),
 | ||
|             array('Test foo', 'Test foo bar', 8),
 | ||
|             array('Test', 'Test foo bar', 7),
 | ||
|             array('Test', 'Test foo bar', 4),
 | ||
|             array('Test foo bar', 'Test foo bar', 12, '...'),
 | ||
|             array('Test foo...', 'Test foo bar', 11, '...'),
 | ||
|             array('Test...', 'Test foo bar', 8, '...'),
 | ||
|             array('Test...', 'Test foo bar', 7, '...'),
 | ||
|             array('...', 'Test foo bar', 4, '...'),
 | ||
|             array('Test....', 'Test foo bar', 11, '....'),
 | ||
|             array('Test fòô bàř', 'Test fòô bàř', 12, '', 'UTF-8'),
 | ||
|             array('Test fòô', 'Test fòô bàř', 11, '', 'UTF-8'),
 | ||
|             array('Test fòô', 'Test fòô bàř', 8, '', 'UTF-8'),
 | ||
|             array('Test', 'Test fòô bàř', 7, '', 'UTF-8'),
 | ||
|             array('Test', 'Test fòô bàř', 4, '', 'UTF-8'),
 | ||
|             array('Test fòô bàř', 'Test fòô bàř', 12, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Test fòôϰϰ', 'Test fòô bàř', 11, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Testϰϰ', 'Test fòô bàř', 8, 'ϰϰ', 'UTF-8'),
 | ||
|             array('Testϰϰ', 'Test fòô bàř', 7, 'ϰϰ', 'UTF-8'),
 | ||
|             array('ϰϰ', 'Test fòô bàř', 4, 'ϰϰ', 'UTF-8'),
 | ||
|             array('What are your plans...', 'What are your plans today?', 22, '...')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function reverseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('', ''),
 | ||
|             array('raboof', 'foobar'),
 | ||
|             array('řàbôòf', 'fòôbàř', 'UTF-8'),
 | ||
|             array('řàb ôòf', 'fòô bàř', 'UTF-8'),
 | ||
|             array('∂∆ ˚åß', 'ßå˚ ∆∂', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function shuffleProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar'),
 | ||
|             array('∂∆ ˚åß', 'UTF-8'),
 | ||
|             array('å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function trimProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo   bar', '  foo   bar  '),
 | ||
|             array('foo bar', ' foo bar'),
 | ||
|             array('foo bar', 'foo bar '),
 | ||
|             array('foo bar', "\n\t foo bar \n\t"),
 | ||
|             array('fòô   bàř', '  fòô   bàř  '),
 | ||
|             array('fòô bàř', ' fòô bàř'),
 | ||
|             array('fòô bàř', 'fòô bàř '),
 | ||
|             array('fòô bàř', "\n\t fòô bàř \n\t")
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function longestCommonPrefixProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo', 'foobar', 'foo bar'),
 | ||
|             array('foo bar', 'foo bar', 'foo bar'),
 | ||
|             array('f', 'foo bar', 'far boo'),
 | ||
|             array('', 'toy car', 'foo bar'),
 | ||
|             array('', 'foo bar', ''),
 | ||
|             array('fòô', 'fòôbar', 'fòô bar', 'UTF-8'),
 | ||
|             array('fòô bar', 'fòô bar', 'fòô bar', 'UTF-8'),
 | ||
|             array('fò', 'fòô bar', 'fòr bar', 'UTF-8'),
 | ||
|             array('', 'toy car', 'fòô bar', 'UTF-8'),
 | ||
|             array('', 'fòô bar', '', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function longestCommonSuffixProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('bar', 'foobar', 'foo bar'),
 | ||
|             array('foo bar', 'foo bar', 'foo bar'),
 | ||
|             array('ar', 'foo bar', 'boo far'),
 | ||
|             array('', 'foo bad', 'foo bar'),
 | ||
|             array('', 'foo bar', ''),
 | ||
|             array('bàř', 'fòôbàř', 'fòô bàř', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'fòô bàř', 'UTF-8'),
 | ||
|             array(' bàř', 'fòô bàř', 'fòr bàř', 'UTF-8'),
 | ||
|             array('', 'toy car', 'fòô bàř', 'UTF-8'),
 | ||
|             array('', 'fòô bàř', '', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function longestCommonSubstringProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo', 'foobar', 'foo bar'),
 | ||
|             array('foo bar', 'foo bar', 'foo bar'),
 | ||
|             array('oo ', 'foo bar', 'boo far'),
 | ||
|             array('foo ba', 'foo bad', 'foo bar'),
 | ||
|             array('', 'foo bar', ''),
 | ||
|             array('fòô', 'fòôbàř', 'fòô bàř', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'fòô bàř', 'UTF-8'),
 | ||
|             array(' bàř', 'fòô bàř', 'fòr bàř', 'UTF-8'),
 | ||
|             array(' ', 'toy car', 'fòô bàř', 'UTF-8'),
 | ||
|             array('', 'fòô bàř', '', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function lengthProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(11, '  foo bar  '),
 | ||
|             array(1, 'f'),
 | ||
|             array(0, ''),
 | ||
|             array(7, 'fòô bàř', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function substrProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'foo bar', 0),
 | ||
|             array('bar', 'foo bar', 4),
 | ||
|             array('bar', 'foo bar', 4, null),
 | ||
|             array('o b', 'foo bar', 2, 3),
 | ||
|             array('', 'foo bar', 4, 0),
 | ||
|             array('fòô bàř', 'fòô bàř', 0, null, 'UTF-8'),
 | ||
|             array('bàř', 'fòô bàř', 4, null, 'UTF-8'),
 | ||
|             array('ô b', 'fòô bàř', 2, 3, 'UTF-8'),
 | ||
|             array('', 'fòô bàř', 4, 0, 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function atProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('f', 'foo bar', 0),
 | ||
|             array('o', 'foo bar', 1),
 | ||
|             array('r', 'foo bar', 6),
 | ||
|             array('', 'foo bar', 7),
 | ||
|             array('f', 'fòô bàř', 0, 'UTF-8'),
 | ||
|             array('ò', 'fòô bàř', 1, 'UTF-8'),
 | ||
|             array('ř', 'fòô bàř', 6, 'UTF-8'),
 | ||
|             array('', 'fòô bàř', 7, 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function firstProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('', 'foo bar', -5),
 | ||
|             array('', 'foo bar', 0),
 | ||
|             array('f', 'foo bar', 1),
 | ||
|             array('foo', 'foo bar', 3),
 | ||
|             array('foo bar', 'foo bar', 7),
 | ||
|             array('foo bar', 'foo bar', 8),
 | ||
|             array('', 'fòô bàř', -5, 'UTF-8'),
 | ||
|             array('', 'fòô bàř', 0, 'UTF-8'),
 | ||
|             array('f', 'fòô bàř', 1, 'UTF-8'),
 | ||
|             array('fòô', 'fòô bàř', 3, 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 7, 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 8, 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function lastProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('', 'foo bar', -5),
 | ||
|             array('', 'foo bar', 0),
 | ||
|             array('r', 'foo bar', 1),
 | ||
|             array('bar', 'foo bar', 3),
 | ||
|             array('foo bar', 'foo bar', 7),
 | ||
|             array('foo bar', 'foo bar', 8),
 | ||
|             array('', 'fòô bàř', -5, 'UTF-8'),
 | ||
|             array('', 'fòô bàř', 0, 'UTF-8'),
 | ||
|             array('ř', 'fòô bàř', 1, 'UTF-8'),
 | ||
|             array('bàř', 'fòô bàř', 3, 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 7, 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 8, 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function ensureLeftProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foobar', 'foobar', 'f'),
 | ||
|             array('foobar', 'foobar', 'foo'),
 | ||
|             array('foo/foobar', 'foobar', 'foo/'),
 | ||
|             array('http://foobar', 'foobar', 'http://'),
 | ||
|             array('http://foobar', 'http://foobar', 'http://'),
 | ||
|             array('fòôbàř', 'fòôbàř', 'f', 'UTF-8'),
 | ||
|             array('fòôbàř', 'fòôbàř', 'fòô', 'UTF-8'),
 | ||
|             array('fòô/fòôbàř', 'fòôbàř', 'fòô/', 'UTF-8'),
 | ||
|             array('http://fòôbàř', 'fòôbàř', 'http://', 'UTF-8'),
 | ||
|             array('http://fòôbàř', 'http://fòôbàř', 'http://', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function ensureRightProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foobar', 'foobar', 'r'),
 | ||
|             array('foobar', 'foobar', 'bar'),
 | ||
|             array('foobar/bar', 'foobar', '/bar'),
 | ||
|             array('foobar.com/', 'foobar', '.com/'),
 | ||
|             array('foobar.com/', 'foobar.com/', '.com/'),
 | ||
|             array('fòôbàř', 'fòôbàř', 'ř', 'UTF-8'),
 | ||
|             array('fòôbàř', 'fòôbàř', 'bàř', 'UTF-8'),
 | ||
|             array('fòôbàř/bàř', 'fòôbàř', '/bàř', 'UTF-8'),
 | ||
|             array('fòôbàř.com/', 'fòôbàř', '.com/', 'UTF-8'),
 | ||
|             array('fòôbàř.com/', 'fòôbàř.com/', '.com/', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function removeLeftProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'foo bar', ''),
 | ||
|             array('oo bar', 'foo bar', 'f'),
 | ||
|             array('bar', 'foo bar', 'foo '),
 | ||
|             array('foo bar', 'foo bar', 'oo'),
 | ||
|             array('foo bar', 'foo bar', 'oo bar'),
 | ||
|             array('oo bar', 'foo bar', Stringy::create('foo bar')->first(1), 'UTF-8'),
 | ||
|             array('oo bar', 'foo bar', Stringy::create('foo bar')->at(0), 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', '', 'UTF-8'),
 | ||
|             array('òô bàř', 'fòô bàř', 'f', 'UTF-8'),
 | ||
|             array('bàř', 'fòô bàř', 'fòô ', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'òô', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'òô bàř', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function removeRightProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('foo bar', 'foo bar', ''),
 | ||
|             array('foo ba', 'foo bar', 'r'),
 | ||
|             array('foo', 'foo bar', ' bar'),
 | ||
|             array('foo bar', 'foo bar', 'ba'),
 | ||
|             array('foo bar', 'foo bar', 'foo ba'),
 | ||
|             array('foo ba', 'foo bar', Stringy::create('foo bar')->last(1), 'UTF-8'),
 | ||
|             array('foo ba', 'foo bar', Stringy::create('foo bar')->at(6), 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', '', 'UTF-8'),
 | ||
|             array('fòô bà', 'fòô bàř', 'ř', 'UTF-8'),
 | ||
|             array('fòô', 'fòô bàř', ' bàř', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'bà', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', 'fòô bà', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isAlphaProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, 'foobar'),
 | ||
|             array(false, 'foo bar'),
 | ||
|             array(false, 'foobar2'),
 | ||
|             array(true, 'fòôbàř', 'UTF-8'),
 | ||
|             array(false, 'fòô bàř', 'UTF-8'),
 | ||
|             array(false, 'fòôbàř2', 'UTF-8'),
 | ||
|             array(true, 'ҠѨњфгШ', 'UTF-8'),
 | ||
|             array(false, 'ҠѨњ¨ˆфгШ', 'UTF-8'),
 | ||
|             array(true, '丹尼爾', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isAlphanumericProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, 'foobar1'),
 | ||
|             array(false, 'foo bar'),
 | ||
|             array(false, 'foobar2"'),
 | ||
|             array(false, "\nfoobar\n"),
 | ||
|             array(true, 'fòôbàř1', 'UTF-8'),
 | ||
|             array(false, 'fòô bàř', 'UTF-8'),
 | ||
|             array(false, 'fòôbàř2"', 'UTF-8'),
 | ||
|             array(true, 'ҠѨњфгШ', 'UTF-8'),
 | ||
|             array(false, 'ҠѨњ¨ˆфгШ', 'UTF-8'),
 | ||
|             array(true, '丹尼爾111', 'UTF-8'),
 | ||
|             array(true, 'دانيال1', 'UTF-8'),
 | ||
|             array(false, 'دانيال1 ', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isBlankProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, ' '),
 | ||
|             array(true, "\n\t "),
 | ||
|             array(true, "\n\t  \v\f"),
 | ||
|             array(false, "\n\t a \v\f"),
 | ||
|             array(false, "\n\t ' \v\f"),
 | ||
|             array(false, "\n\t 2 \v\f"),
 | ||
|             array(true, '', 'UTF-8'),
 | ||
|             array(true, ' ', 'UTF-8'), // no-break space (U+00A0)
 | ||
|             array(true, '           ', 'UTF-8'), // spaces U+2000 to U+200A
 | ||
|             array(true, ' ', 'UTF-8'), // narrow no-break space (U+202F)
 | ||
|             array(true, ' ', 'UTF-8'), // medium mathematical space (U+205F)
 | ||
|             array(true, ' ', 'UTF-8'), // ideographic space (U+3000)
 | ||
|             array(false, ' z', 'UTF-8'),
 | ||
|             array(false, ' 1', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isJsonProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, '123'),
 | ||
|             array(true, '{"foo": "bar"}'),
 | ||
|             array(false, '{"foo":"bar",}'),
 | ||
|             array(false, '{"foo"}'),
 | ||
|             array(true, '["foo"]'),
 | ||
|             array(false, '{"foo": "bar"]'),
 | ||
|             array(true, '123', 'UTF-8'),
 | ||
|             array(true, '{"fòô": "bàř"}', 'UTF-8'),
 | ||
|             array(false, '{"fòô":"bàř",}', 'UTF-8'),
 | ||
|             array(false, '{"fòô"}', 'UTF-8'),
 | ||
|             array(false, '["fòô": "bàř"]', 'UTF-8'),
 | ||
|             array(true, '["fòô"]', 'UTF-8'),
 | ||
|             array(false, '{"fòô": "bàř"]', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isLowerCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, 'foobar'),
 | ||
|             array(false, 'foo bar'),
 | ||
|             array(false, 'Foobar'),
 | ||
|             array(true, 'fòôbàř', 'UTF-8'),
 | ||
|             array(false, 'fòôbàř2', 'UTF-8'),
 | ||
|             array(false, 'fòô bàř', 'UTF-8'),
 | ||
|             array(false, 'fòôbÀŘ', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function hasLowerCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(false, ''),
 | ||
|             array(true, 'foobar'),
 | ||
|             array(false, 'FOO BAR'),
 | ||
|             array(true, 'fOO BAR'),
 | ||
|             array(true, 'foO BAR'),
 | ||
|             array(true, 'FOO BAr'),
 | ||
|             array(true, 'Foobar'),
 | ||
|             array(false, 'FÒÔBÀŘ', 'UTF-8'),
 | ||
|             array(true, 'fòôbàř', 'UTF-8'),
 | ||
|             array(true, 'fòôbàř2', 'UTF-8'),
 | ||
|             array(true, 'Fòô bàř', 'UTF-8'),
 | ||
|             array(true, 'fòôbÀŘ', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isSerializedProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(false, ''),
 | ||
|             array(true, 'a:1:{s:3:"foo";s:3:"bar";}'),
 | ||
|             array(false, 'a:1:{s:3:"foo";s:3:"bar"}'),
 | ||
|             array(true, serialize(array('foo' => 'bar'))),
 | ||
|             array(true, 'a:1:{s:5:"fòô";s:5:"bàř";}', 'UTF-8'),
 | ||
|             array(false, 'a:1:{s:5:"fòô";s:5:"bàř"}', 'UTF-8'),
 | ||
|             array(true, serialize(array('fòô' => 'bár')), 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isUpperCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, 'FOOBAR'),
 | ||
|             array(false, 'FOO BAR'),
 | ||
|             array(false, 'fOOBAR'),
 | ||
|             array(true, 'FÒÔBÀŘ', 'UTF-8'),
 | ||
|             array(false, 'FÒÔBÀŘ2', 'UTF-8'),
 | ||
|             array(false, 'FÒÔ BÀŘ', 'UTF-8'),
 | ||
|             array(false, 'FÒÔBàř', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function hasUpperCaseProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(false, ''),
 | ||
|             array(true, 'FOOBAR'),
 | ||
|             array(false, 'foo bar'),
 | ||
|             array(true, 'Foo bar'),
 | ||
|             array(true, 'FOo bar'),
 | ||
|             array(true, 'foo baR'),
 | ||
|             array(true, 'fOOBAR'),
 | ||
|             array(false, 'fòôbàř', 'UTF-8'),
 | ||
|             array(true, 'FÒÔBÀŘ', 'UTF-8'),
 | ||
|             array(true, 'FÒÔBÀŘ2', 'UTF-8'),
 | ||
|             array(true, 'fÒÔ BÀŘ', 'UTF-8'),
 | ||
|             array(true, 'FÒÔBàř', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function isHexadecimalProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(true, ''),
 | ||
|             array(true, 'abcdef'),
 | ||
|             array(true, 'ABCDEF'),
 | ||
|             array(true, '0123456789'),
 | ||
|             array(true, '0123456789AbCdEf'),
 | ||
|             array(false, '0123456789x'),
 | ||
|             array(false, 'ABCDEFx'),
 | ||
|             array(true, 'abcdef', 'UTF-8'),
 | ||
|             array(true, 'ABCDEF', 'UTF-8'),
 | ||
|             array(true, '0123456789', 'UTF-8'),
 | ||
|             array(true, '0123456789AbCdEf', 'UTF-8'),
 | ||
|             array(false, '0123456789x', 'UTF-8'),
 | ||
|             array(false, 'ABCDEFx', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function countSubstrProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array(0, '', 'foo'),
 | ||
|             array(0, 'foo', 'bar'),
 | ||
|             array(1, 'foo bar', 'foo'),
 | ||
|             array(2, 'foo bar', 'o'),
 | ||
|             array(0, '', 'fòô', 'UTF-8'),
 | ||
|             array(0, 'fòô', 'bàř', 'UTF-8'),
 | ||
|             array(1, 'fòô bàř', 'fòô', 'UTF-8'),
 | ||
|             array(2, 'fôòô bàř', 'ô', 'UTF-8'),
 | ||
|             array(0, 'fÔÒÔ bàř', 'ô', 'UTF-8'),
 | ||
|             array(0, 'foo', 'BAR', false),
 | ||
|             array(1, 'foo bar', 'FOo', false),
 | ||
|             array(2, 'foo bar', 'O', false),
 | ||
|             array(1, 'fòô bàř', 'fÒÔ', false, 'UTF-8'),
 | ||
|             array(2, 'fôòô bàř', 'Ô', false, 'UTF-8'),
 | ||
|             array(2, 'συγγραφέας', 'Σ', false, 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function replaceProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('', '', '', ''),
 | ||
|             array('foo', '', '', 'foo'),
 | ||
|             array('foo', '\s', '\s', 'foo'),
 | ||
|             array('foo bar', 'foo bar', '', ''),
 | ||
|             array('foo bar', 'foo bar', 'f(o)o', '\1'),
 | ||
|             array('\1 bar', 'foo bar', 'foo', '\1'),
 | ||
|             array('bar', 'foo bar', 'foo ', ''),
 | ||
|             array('far bar', 'foo bar', 'foo', 'far'),
 | ||
|             array('bar bar', 'foo bar foo bar', 'foo ', ''),
 | ||
|             array('', '', '', '', 'UTF-8'),
 | ||
|             array('fòô', '', '', 'fòô', 'UTF-8'),
 | ||
|             array('fòô', '\s', '\s', 'fòô', 'UTF-8'),
 | ||
|             array('fòô bàř', 'fòô bàř', '', '', 'UTF-8'),
 | ||
|             array('bàř', 'fòô bàř', 'fòô ', '', 'UTF-8'),
 | ||
|             array('far bàř', 'fòô bàř', 'fòô', 'far', 'UTF-8'),
 | ||
|             array('bàř bàř', 'fòô bàř fòô bàř', 'fòô ', '', 'UTF-8'),
 | ||
|         );
 | ||
|     }
 | ||
| 
 | ||
|     public function regexReplaceProvider()
 | ||
|     {
 | ||
|         return array(
 | ||
|             array('', '', '', ''),
 | ||
|             array('bar', 'foo', 'f[o]+', 'bar'),
 | ||
|             array('o bar', 'foo bar', 'f(o)o', '\1'),
 | ||
|             array('bar', 'foo bar', 'f[O]+\s', '', 'i'),
 | ||
|             array('foo', 'bar', '[[:alpha:]]{3}', 'foo'),
 | ||
|             array('', '', '', '', 'msr', 'UTF-8'),
 | ||
|             array('bàř', 'fòô ', 'f[òô]+\s', 'bàř', 'msr', 'UTF-8'),
 | ||
|             array('fòô', 'bàř', '[[:alpha:]]{3}', 'fòô', 'msr', 'UTF-8')
 | ||
|         );
 | ||
|     }
 | ||
| }
 |