assertSame( strip_ws( $expected ), strip_ws( $out ) );
}
/**
* @ticket 6562
*/
function test_utf8_whitespace_1() {
// NO-BREAK SPACE: U+00A0.
do_shortcode( "[test-shortcode-tag foo=\"bar\" \xC2\xA0baz=\"123\"]" );
$this->assertSame(
array(
'foo' => 'bar',
'baz' => '123',
),
$this->atts
);
$this->assertSame( '', $this->content );
}
/**
* @ticket 6562
*/
function test_utf8_whitespace_2() {
// ZERO WIDTH SPACE: U+200B.
do_shortcode( "[test-shortcode-tag foo=\"bar\" \xE2\x80\x8Babc=\"def\"]" );
$this->assertSame(
array(
'foo' => 'bar',
'abc' => 'def',
),
$this->atts
);
$this->assertSame( '', $this->content );
}
/**
* @ticket 14050
*/
function test_shortcode_unautop() {
// A blank line is added at the end, so test with it already there.
$test_string = "[footag]\n";
$this->assertSame( $test_string, shortcode_unautop( wpautop( $test_string ) ) );
}
function data_test_strip_shortcodes() {
return array(
array( 'before', 'before[gallery]' ),
array( 'after', '[gallery]after' ),
array( 'beforeafter', 'before[gallery]after' ),
array( 'before[after', 'before[after' ),
array( 'beforeafter', 'beforeafter' ),
array( 'beforeafter', 'before[gallery id="123" size="medium"]after' ),
array( 'before[unregistered_shortcode]after', 'before[unregistered_shortcode]after' ),
array( 'beforeafter', 'before[footag]after' ),
array( 'before after', 'before [footag]content[/footag] after' ),
array( 'before after', 'before [footag foo="123"]content[/footag] after' ),
);
}
/**
* @ticket 10326
*
* @dataProvider data_test_strip_shortcodes
*
* @param string $expected Expected output.
* @param string $content Content to run strip_shortcodes() on.
*/
function test_strip_shortcodes( $expected, $content ) {
$this->assertSame( $expected, strip_shortcodes( $content ) );
}
/**
* @ticket 37767
*/
function test_strip_shortcodes_filter() {
add_filter( 'strip_shortcodes_tagnames', array( $this, '_filter_strip_shortcodes_tagnames' ) );
$this->assertSame( 'beforemiddle [footag]after', strip_shortcodes( 'before[gallery]middle [footag]after' ) );
remove_filter( 'strip_shortcodes_tagnames', array( $this, '_filter_strip_shortcodes_tagnames' ) );
}
function _filter_strip_shortcodes_tagnames() {
return array( 'gallery' );
}
// Store passed in shortcode_atts_{$shortcode} args.
function _filter_atts( $out, $pairs, $atts ) {
$this->filter_atts_out = $out;
$this->filter_atts_pairs = $pairs;
$this->filter_atts_atts = $atts;
return $out;
}
// Filter shortcode atts in various ways.
function _filter_atts2( $out, $pairs, $atts ) {
// If foo attribute equals "foo1", change it to be default value.
if ( isset( $out['foo'] ) && 'foo1' === $out['foo'] ) {
$out['foo'] = $pairs['foo'];
}
// If baz attribute is set, remove it.
if ( isset( $out['baz'] ) ) {
unset( $out['baz'] );
}
$this->filter_atts_out = $out;
return $out;
}
function test_shortcode_atts_filter_passes_original_arguments() {
add_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts' ), 10, 3 );
do_shortcode( '[bartag foo="foo1" /]' );
$this->assertSame(
array(
'foo' => 'foo1',
'baz' => 'default baz',
),
$this->filter_atts_out
);
$this->assertSame(
array(
'foo' => 'no foo',
'baz' => 'default baz',
),
$this->filter_atts_pairs
);
$this->assertSame( array( 'foo' => 'foo1' ), $this->filter_atts_atts );
remove_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts' ), 10, 3 );
}
function test_shortcode_atts_filtering() {
add_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts2' ), 10, 3 );
$out = do_shortcode( '[bartag foo="foo1" baz="baz1" /]' );
$this->assertSame( array( 'foo' => 'no foo' ), $this->filter_atts_out );
$this->assertSame( 'foo = no foo', $out );
$out = do_shortcode( '[bartag foo="foo2" /]' );
$this->assertSame( 'foo = foo2', $out );
remove_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts2' ), 10, 3 );
}
/**
* Check that shortcode_unautop() will always recognize spaces around shortcodes.
*
* @ticket 22692
*/
function test_spaces_around_shortcodes() {
$nbsp = "\xC2\xA0";
$input = array();
$input[] = '[gallery ids="37,15,11"]
';
$input[] = ' [gallery ids="37,15,11"]
';
$input[] = " {$nbsp}[gallery ids=\"37,15,11\"] {$nbsp}
";
$input[] = ' [gallery ids="37,15,11"]
';
$output = '[gallery ids="37,15,11"]';
foreach ( $input as $in ) {
$this->assertSame( $output, shortcode_unautop( $in ) );
}
}
/**
* Check for bugginess using normal input with latest patches.
*
* @dataProvider data_escaping
*/
function test_escaping( $input, $output ) {
return $this->assertSame( $output, do_shortcode( $input ) );
}
function data_escaping() {
return array(
array(
'