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: }