assertTrue( function_exists( 'str_ends_with' ) ); } /** * @dataProvider data_str_ends_with * * @ticket 54377 * * @param bool $expected Whether or not `$haystack` is expected to end with `$needle`. * @param string $haystack The string to search in. * @param string $needle The substring to search for at the end of `$haystack`. */ public function test_str_ends_with( $expected, $haystack, $needle ) { if ( ! function_exists( 'str_ends_with' ) ) { $this->markTestSkipped( 'str_ends_with() is not available.' ); } else { $this->assertSame( $expected, str_ends_with( $haystack, $needle ) ); } } /** * Data provider. * * @return array[] */ public function data_str_ends_with() { return array( 'empty needle' => array( 'expected' => true, 'haystack' => 'This is a test', 'needle' => '', ), 'empty haystack and needle' => array( 'expected' => true, 'haystack' => '', 'needle' => '', ), 'empty haystack' => array( 'expected' => false, 'haystack' => '', 'needle' => 'test', ), 'lowercase' => array( 'expected' => true, 'haystack' => 'This is a test', 'needle' => 'test', ), 'uppercase' => array( 'expected' => true, 'haystack' => 'This is a TEST', 'needle' => 'TEST', ), 'first letter uppercase' => array( 'expected' => true, 'haystack' => 'This is a Test', 'needle' => 'Test', ), 'camelCase' => array( 'expected' => true, 'haystack' => 'This is a camelCase', 'needle' => 'camelCase', ), 'null' => array( 'expected' => true, 'haystack' => 'This is a null \x00test', 'needle' => '\x00test', ), 'trademark' => array( 'expected' => true, 'haystack' => 'This is a trademark\x2122', 'needle' => 'trademark\x2122', ), 'not camelCase' => array( 'expected' => false, 'haystack' => 'This is a cammelcase', 'needle' => 'cammelCase', ), 'missing' => array( 'expected' => false, 'haystack' => 'This is a cammelcase', 'needle' => 'cammelCase', ), 'not end' => array( 'expected' => false, 'haystack' => 'This is a test extra', 'needle' => 'test', ), 'extra space' => array( 'expected' => false, 'haystack' => 'This is a test ', 'needle' => 'test', ), ); } }