markTestSkipped( "Comparision file '$to' not yet defined." ); } $parser = new ezcDocumentPdfCssParser(); $directives = $parser->parseFile( $from ); // Change file locations to something not depending on the current test // env foreach ( $directives as $directive ) { $directive->file = basename( $directive->file ); } $expected = include $to; // Store test file, to have something to compare on failure $tempDir = $this->createTempDir( 'pcss_parser_' ) . '/'; file_put_contents( $tempDir . basename( $to ), "assertEquals( $expected, $directives, 'Parsed document does not match expected document.', 0, 20 ); // Remove tempdir, when nothing failed. $this->removeTempDir(); } public static function getErroneousTestDocuments() { // return array(); return array( array( dirname( __FILE__ ) . '/files/pdf/pcss/e_001_missing_address.pcss', 'Parse error: Fatal error: \'Expected one of: T_ADDRESS (CSS element addressing queries), T_DESC_ADDRESS (CSS element addressing queries), T_ADDRESS_ID (CSS element addressing queries), T_ADDRESS_CLASS (CSS element addressing queries), found T_START ("{").\' in file \'$file\' in line 1 at position 2.', ), array( dirname( __FILE__ ) . '/files/pdf/pcss/e_002_invalid_address.pcss', "Parse error: Fatal error: 'Could not parse string: 0123\n' in file '\$file' in line 1 at position 1.", ), array( dirname( __FILE__ ) . '/files/pdf/pcss/e_003_missing_start.pcss', 'Parse error: Fatal error: \'Expected one of: T_ADDRESS (CSS element addressing queries), T_DESC_ADDRESS (CSS element addressing queries), T_ADDRESS_ID (CSS element addressing queries), T_ADDRESS_CLASS (CSS element addressing queries), found T_FORMATTING (formatting specification).\' in file \'$file\' in line 2 at position 18.', ), array( dirname( __FILE__ ) . '/files/pdf/pcss/e_004_missing_end.pcss', 'Parse error: Fatal error: \'Expected one of: T_FORMATTING (formatting specification), found T_EOF (end of file).\' in file \'$file\' in line 3 at position 1.', ), array( dirname( __FILE__ ) . '/files/pdf/pcss/e_005_missing_end_2.pcss', 'Parse error: Fatal error: \'Expected one of: T_FORMATTING (formatting specification), found T_ADDRESS (CSS element addressing queries).\' in file \'$file\' in line 4 at position 5.', ), array( dirname( __FILE__ ) . '/files/pdf/pcss/e_006_invalid_rule.pcss', "Parse error: Fatal error: 'Could not parse string: ;\n}\n' in file '\$file' in line 2 at position 8.", ), ); } /** * @dataProvider getErroneousTestDocuments */ public function testParseErroneousPdfCssFile( $file, $message ) { $parser = new ezcDocumentPdfCssParser(); try { $directives = $parser->parseFile( $file ); $this->fail( 'Expected ezcDocumentPdfCssParserException.' ); } catch ( ezcDocumentParserException $e ) { $this->assertSame( $message, preg_replace( '(in file \'[^\']+\')', 'in file \'$file\'', $e->getMessage() ), 'Different parse error expected.' ); } } } ?>