Chris@0: Chris@0: Chris@0: Chris@0: Chris@0: 1 Chris@0: Chris@0: Chris@0: Chris@0: // comment Chris@0: Chris@0: /** doc comment */ Chris@0: Chris@0: Chris@0: Chris@0: Test Chris@0: Chris@0: Chris@0: Chris@0: XML; Chris@0: Chris@0: $unserializer = new XML; Chris@0: $this->assertEquals( Chris@0: new Scalar\String_('Test', array( Chris@0: 'startLine' => 1, Chris@0: 'comments' => array( Chris@0: new Comment('// comment' . "\n", 2), Chris@0: new Comment\Doc('/** doc comment */', 3), Chris@0: ), Chris@0: )), Chris@0: $unserializer->unserialize($xml) Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testEmptyNode() { Chris@0: $xml = << Chris@0: Chris@0: Chris@0: Chris@0: XML; Chris@0: Chris@0: $unserializer = new XML; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Scalar\MagicConst\Class_, Chris@0: $unserializer->unserialize($xml) Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testScalars() { Chris@0: $xml = << Chris@0: Chris@0: Chris@0: Chris@0: Chris@0: test Chris@0: Chris@0: Chris@0: 1 Chris@0: 1 Chris@0: 1.5 Chris@0: Chris@0: Chris@0: Chris@0: Chris@0: Chris@0: XML; Chris@0: $result = array( Chris@0: array(), array(), Chris@0: 'test', '', '', Chris@0: 1, Chris@0: 1, 1.5, Chris@0: true, false, null Chris@0: ); Chris@0: Chris@0: $unserializer = new XML; Chris@0: $this->assertEquals($result, $unserializer->unserialize($xml)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \DomainException Chris@0: * @expectedExceptionMessage AST root element not found Chris@0: */ Chris@0: public function testWrongRootElementError() { Chris@0: $xml = << Chris@0: Chris@0: XML; Chris@0: Chris@0: $unserializer = new XML; Chris@0: $unserializer->unserialize($xml); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @dataProvider provideTestErrors Chris@0: */ Chris@0: public function testErrors($xml, $errorMsg) { Chris@0: $this->setExpectedException('DomainException', $errorMsg); Chris@0: Chris@0: $xml = << Chris@0: Chris@0: $xml Chris@0: Chris@0: XML; Chris@0: Chris@0: $unserializer = new XML; Chris@0: $unserializer->unserialize($xml); Chris@0: } Chris@0: Chris@0: public function provideTestErrors() { Chris@0: return array( Chris@0: array('test', '"true" scalar must be empty'), Chris@0: array('test', '"false" scalar must be empty'), Chris@0: array('test', '"null" scalar must be empty'), Chris@0: array('bar', 'Unknown scalar type "foo"'), Chris@0: array('x', '"x" is not a valid int'), Chris@0: array('x', '"x" is not a valid float'), Chris@0: array('', 'Expected node or scalar'), Chris@0: array('test', 'Unexpected node of type "foo:bar"'), Chris@0: array( Chris@0: 'test', Chris@0: 'Expected sub node or attribute, got node of type "foo:bar"' Chris@0: ), Chris@0: array( Chris@0: '', Chris@0: 'Expected node or scalar' Chris@0: ), Chris@0: array( Chris@0: '', Chris@0: 'Unknown node type "Foo"' Chris@0: ), Chris@0: ); Chris@0: } Chris@0: }