if ( $cssB ) {
$transformedA = CSSJanus::transform( $cssA );
- $this->assertEquals( $transformedA, $cssB, 'Test A-B transformation' );
+ $this->assertEquals(
+ $transformedA,
+ str_replace( '/* @noflip */ ', '', $cssB ),
+ 'Test A-B transformation'
+ );
$transformedB = CSSJanus::transform( $cssB );
- $this->assertEquals( $transformedB, $cssA, 'Test B-A transformation' );
+ $this->assertEquals(
+ $transformedB,
+ str_replace( '/* @noflip */ ', '', $cssA ),
+ 'Test B-A transformation'
+ );
} else {
// If no B version is provided, it means
- // the output should equal the input.
+ // the output should equal the input (modulo @noflip annotations).
$transformedA = CSSJanus::transform( $cssA );
- $this->assertEquals( $transformedA, $cssA, 'Nothing was flipped' );
+ $this->assertEquals(
+ $transformedA,
+ str_replace( '/* @noflip */ ', '', $cssA ),
+ 'Nothing was flipped'
+ );
}
}
* @dataProvider provideTransformAdvancedCases
*/
public function testTransformAdvanced( $code, $expectedOutput, $options = array() ) {
- $swapLtrRtlInURL = isset( $options['swapLtrRtlInURL'] ) ? $options['swapLtrRtlInURL'] : false;
- $swapLeftRightInURL = isset( $options['swapLeftRightInURL'] ) ? $options['swapLeftRightInURL'] : false;
+ $swapLtrRtlInURL = isset( $options['swapLtrRtlInURL'] ) ?
+ $options['swapLtrRtlInURL'] : false;
+ $swapLeftRightInURL = isset( $options['swapLeftRightInURL'] ) ?
+ $options['swapLeftRightInURL'] : false;
$flipped = CSSJanus::transform( $code, $swapLtrRtlInURL, $swapLeftRightInURL );
// Don't mangle zeroes
'.foo { text-shadow: orange 0 2px; }'
),
+ array(
+ // Make sure floats are not considered zero
+ '.foo { box-shadow: inset .5em 0 0 white; }',
+ '.foo { box-shadow: inset -.5em 0 0 white; }',
+ ),
// Direction
// Note: This differs from the Python implementation,
'div { float: left; /* @noflip */ text-align: left; }',
'div { float: right; /* @noflip */ text-align: left; }'
),
+ array(
+ // before a *= attribute selector with multiple properties
+ '/* @noflip */ div.foo[bar*=baz] { float:left; clear: left; }'
+ ),
+ array(
+ // before a ^= attribute selector with multiple properties
+ '/* @noflip */ div.foo[bar^=baz] { float:left; clear: left; }'
+ ),
+ array(
+ // before a ~= attribute selector with multiple properties
+ '/* @noflip */ div.foo[bar~=baz] { float:left; clear: left; }'
+ ),
+ array(
+ // before a = attribute selector with multiple properties
+ '/* @noflip */ div.foo[bar=baz] { float:left; clear: left; }'
+ ),
+ array(
+ // before a quoted attribute selector with multiple properties
+ '/* @noflip */ div.foo[bar=\'baz{quux\'] { float:left; clear: left; }'
+ ),
// Guard against css3 stuff
array(