@@ -21,7 +21,7 @@ protected function _before()
2121 public function testXmlConversion ()
2222 {
2323 $ this ->assertStringContainsString (
24- '<ticket><title>Bug should be fixed</title><user><name>Davert</name></user><labels></labels></ticket> ' ,
24+ '<ticket><title type="string" >Bug should be fixed</title><user><name type="string" >Davert</name></user><labels type="null" ></labels></ticket> ' ,
2525 $ this ->jsonArray ->toXml ()->saveXML ()
2626 );
2727 }
@@ -32,17 +32,33 @@ public function testXmlArrayConversion2()
3232 '[{"user":"Blacknoir","age":27,"tags":["wed-dev","php"]}, '
3333 . '{"user":"John Doe","age":27,"tags":["web-dev","java"]}] '
3434 );
35- $ this ->assertStringContainsString ('<tags>wed-dev</tags> ' , $ jsonArray ->toXml ()->saveXML ());
35+ $ this ->assertStringContainsString ('<tags type="string" >wed-dev</tags> ' , $ jsonArray ->toXml ()->saveXML ());
3636 $ this ->assertSame (2 , $ jsonArray ->filterByXPath ('//user ' )->length );
3737 }
3838
3939 public function testXPathEvaluation ()
4040 {
41- $ this ->assertSame ( true , $ this ->jsonArray ->evaluateXPath ('count(//ticket/title)>0 ' ));
42- $ this ->assertEquals (1.0 , $ this ->jsonArray ->evaluateXPath ('count(//ticket/user/name) ' ));
43- $ this ->assertSame ( true , $ this ->jsonArray ->evaluateXPath ("count(//user/name[text() = 'Davert']) > 0 " ));
41+ $ this ->assertTrue ( $ this ->jsonArray ->evaluateXPath ('count(//ticket/title)>0 ' ));
42+ $ this ->assertEquals (1 , $ this ->jsonArray ->evaluateXPath ('count(//ticket/user/name) ' ));
43+ $ this ->assertTrue ( $ this ->jsonArray ->evaluateXPath ("count(//user/name[text() = 'Davert']) > 0 " ));
4444 }
4545
46+ public function testXPathTypes ()
47+ {
48+ $ jsonArray = new JsonArray (
49+ '{"boolean":true, "number": -1.2780E+2, "null": null, "string": "i \'am a sentence"} '
50+ );
51+ $ this ->assertEquals (0 , $ jsonArray ->evaluateXPath ("count(//*[text() = 'false']) " ));
52+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//boolean[text() = 'true']) " ));
53+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//boolean[@type = 'boolean']) " ));
54+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//number[text() = -127.80]) " ));
55+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//number[text() = -1.2780E+2]) " ));
56+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//number[@type = 'number']) " ));
57+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//null[@type = 'null']) " ));
58+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//null[text() = '']) " ));
59+ $ this ->assertEquals (1 , $ jsonArray ->evaluateXPath ("count(//string[@type = 'string']) " ));
60+ }
61+
4662 public function testXPathLocation ()
4763 {
4864 $ this ->assertGreaterThan (0 , $ this ->jsonArray ->filterByXPath ('//ticket/title ' )->length );
@@ -83,32 +99,32 @@ public function testConvertsBareJson()
8399 public function testInvalidXmlTag ()
84100 {
85101 $ jsonArray = new JsonArray ('{"a":{"foo/bar":1,"":2},"b":{"foo/bar":1,"":2},"baz":2} ' );
86- $ expectedXml = '<a><invalidTag1>1</invalidTag1><invalidTag2>2</invalidTag2></a> '
87- . '<b><invalidTag1>1</invalidTag1><invalidTag2>2</invalidTag2></b><baz>2</baz> ' ;
102+ $ expectedXml = '<a><invalidTag1 type="number" >1</invalidTag1><invalidTag2 type="number" >2</invalidTag2></a> '
103+ . '<b><invalidTag1 type="number" >1</invalidTag1><invalidTag2 type="number" >2</invalidTag2></b><baz type="number" >2</baz> ' ;
88104 $ this ->assertStringContainsString ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
89105 }
90106
91107 public function testConvertsArrayHavingSingleElement ()
92108 {
93109 $ jsonArray = new JsonArray ('{"success": 1} ' );
94110 $ expectedXml = '<?xml version="1.0" encoding="UTF-8"?> '
95- . "\n<root><success>1</success></root> \n" ;
111+ . "\n<root><success type= \" number \" >1</success></root> \n" ;
96112 $ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
97113 }
98114
99115 public function testConvertsArrayHavingTwoElements ()
100116 {
101117 $ jsonArray = new JsonArray ('{"success": 1, "info": "test"} ' );
102118 $ expectedXml = '<?xml version="1.0" encoding="UTF-8"?> '
103- . "\n<root><success>1</success><info>test</info></root> \n" ;
119+ . "\n<root><success type= \" number \" >1</success><info type= \" string \" >test</info></root> \n" ;
104120 $ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
105121 }
106122
107123 public function testConvertsArrayHavingSingleSubArray ()
108124 {
109125 $ jsonArray = new JsonArray ('{"array": {"success": 1}} ' );
110126 $ expectedXml = '<?xml version="1.0" encoding="UTF-8"?> '
111- . "\n<array><success>1</success></array> \n" ;
127+ . "\n<array><success type= \" number \" >1</success></array> \n" ;
112128 $ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
113129 }
114130}
0 commit comments