PageRenderTime 44ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/scanner/PHP-Parser/test/PHPParser/Tests/Unserializer/XMLTest.php

https://bitbucket.org/theguly/thaps
PHP | 109 lines | 92 code | 10 blank | 7 comment | 0 complexity | 285aac66a04a156f76df0546739429f5 MD5 | raw file
Possible License(s): GPL-3.0, BSD-3-Clause
  1. <?php
  2. class PHPParser_Tests_Unserializer_XMLTest extends PHPUnit_Framework_TestCase
  3. {
  4. public function testNode() {
  5. $xml = <<<XML
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <AST xmlns:node="http://nikic.github.com/PHPParser/XML/node" xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode" xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar">
  8. <node:Scalar_String line="1" docComment="/** doc comment */">
  9. <subNode:value>
  10. <scalar:string>Test</scalar:string>
  11. </subNode:value>
  12. </node:Scalar_String>
  13. </AST>
  14. XML;
  15. $unserializer = new PHPParser_Unserializer_XML;
  16. $this->assertEquals(
  17. new PHPParser_Node_Scalar_String('Test', 1, '/** doc comment */'),
  18. $unserializer->unserialize($xml)
  19. );
  20. }
  21. public function testScalars() {
  22. $xml = <<<XML
  23. <?xml version="1.0" encoding="UTF-8"?>
  24. <AST xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar">
  25. <scalar:array>
  26. <scalar:array></scalar:array>
  27. <scalar:array/>
  28. <scalar:string>test</scalar:string>
  29. <scalar:string></scalar:string>
  30. <scalar:string/>
  31. <scalar:int>1</scalar:int>
  32. <scalar:float>1</scalar:float>
  33. <scalar:float>1.5</scalar:float>
  34. <scalar:true/>
  35. <scalar:false/>
  36. <scalar:null/>
  37. </scalar:array>
  38. </AST>
  39. XML;
  40. $result = array(
  41. array(), array(),
  42. 'test', '', '',
  43. 1,
  44. 1, 1.5,
  45. true, false, null
  46. );
  47. $unserializer = new PHPParser_Unserializer_XML;
  48. $this->assertEquals($result, $unserializer->unserialize($xml));
  49. }
  50. /**
  51. * @expectedException DomainException
  52. * @expectedExceptionMessage AST root element not found
  53. */
  54. public function testWrongRootElementError() {
  55. $xml = <<<XML
  56. <?xml version="1.0" encoding="UTF-8"?>
  57. <notAST/>
  58. XML;
  59. $unserializer = new PHPParser_Unserializer_XML;
  60. $unserializer->unserialize($xml);
  61. }
  62. /**
  63. * @dataProvider provideTestErrors
  64. */
  65. public function testErrors($xml, $errorMsg) {
  66. $this->setExpectedException('DomainException', $errorMsg);
  67. $xml = <<<XML
  68. <?xml version="1.0" encoding="UTF-8"?>
  69. <AST xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar"
  70. xmlns:node="http://nikic.github.com/PHPParser/XML/node"
  71. xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode"
  72. xmlns:foo="http://nikic.github.com/PHPParser/XML/foo">
  73. $xml
  74. </AST>
  75. XML;
  76. $unserializer = new PHPParser_Unserializer_XML;
  77. $unserializer->unserialize($xml);
  78. }
  79. public function provideTestErrors() {
  80. return array(
  81. array('<scalar:true>test</scalar:true>', '"true" scalar must be empty'),
  82. array('<scalar:false>test</scalar:false>', '"false" scalar must be empty'),
  83. array('<scalar:null>test</scalar:null>', '"null" scalar must be empty'),
  84. array('<scalar:foo>bar</scalar:foo>', 'Unknown scalar type "foo"'),
  85. array('<scalar:int>x</scalar:int>', '"x" is not a valid int'),
  86. array('<scalar:float>x</scalar:float>', '"x" is not a valid float'),
  87. array('', 'Expected node or scalar'),
  88. array('<foo:bar>test</foo:bar>', 'Unexpected node of type "foo:bar"'),
  89. array(
  90. '<node:Scalar_String><foo:bar>test</foo:bar></node:Scalar_String>',
  91. 'Expected sub node, got node of type "foo:bar"'
  92. ),
  93. array(
  94. '<node:Scalar_String><subNode:value/></node:Scalar_String>',
  95. 'Expected node or scalar'
  96. ),
  97. );
  98. }
  99. }