@@ -21,7 +21,7 @@ protected function _before()
21
21
public function testXmlConversion ()
22
22
{
23
23
$ 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> ' ,
25
25
$ this ->jsonArray ->toXml ()->saveXML ()
26
26
);
27
27
}
@@ -32,17 +32,33 @@ public function testXmlArrayConversion2()
32
32
'[{"user":"Blacknoir","age":27,"tags":["wed-dev","php"]}, '
33
33
. '{"user":"John Doe","age":27,"tags":["web-dev","java"]}] '
34
34
);
35
- $ this ->assertStringContainsString ('<tags>wed-dev</tags> ' , $ jsonArray ->toXml ()->saveXML ());
35
+ $ this ->assertStringContainsString ('<tags type="string" >wed-dev</tags> ' , $ jsonArray ->toXml ()->saveXML ());
36
36
$ this ->assertSame (2 , $ jsonArray ->filterByXPath ('//user ' )->length );
37
37
}
38
38
39
39
public function testXPathEvaluation ()
40
40
{
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 " ));
44
44
}
45
45
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
+
46
62
public function testXPathLocation ()
47
63
{
48
64
$ this ->assertGreaterThan (0 , $ this ->jsonArray ->filterByXPath ('//ticket/title ' )->length );
@@ -83,32 +99,32 @@ public function testConvertsBareJson()
83
99
public function testInvalidXmlTag ()
84
100
{
85
101
$ 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> ' ;
88
104
$ this ->assertStringContainsString ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
89
105
}
90
106
91
107
public function testConvertsArrayHavingSingleElement ()
92
108
{
93
109
$ jsonArray = new JsonArray ('{"success": 1} ' );
94
110
$ 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" ;
96
112
$ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
97
113
}
98
114
99
115
public function testConvertsArrayHavingTwoElements ()
100
116
{
101
117
$ jsonArray = new JsonArray ('{"success": 1, "info": "test"} ' );
102
118
$ 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" ;
104
120
$ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
105
121
}
106
122
107
123
public function testConvertsArrayHavingSingleSubArray ()
108
124
{
109
125
$ jsonArray = new JsonArray ('{"array": {"success": 1}} ' );
110
126
$ 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" ;
112
128
$ this ->assertSame ($ expectedXml , $ jsonArray ->toXml ()->saveXML ());
113
129
}
114
130
}
0 commit comments