Add test for latest fixes and update NEWS
[plcapi.git] / tests / 1ParsingBugsTest.php
index 0868a91..33915ca 100644 (file)
@@ -11,13 +11,18 @@ class ParsingBugsTests extends PHPUnit_Framework_TestCase
     {
         $v = new xmlrpcval('-1');
         $u = new xmlrpcval('-1', 'string');
+        $t = new xmlrpcval(-1, 'string');
         $this->assertEquals($u->scalarval(), $v->scalarval());
+        $this->assertEquals($t->scalarval(), $v->scalarval());
     }
 
+    /**
+     * This looks funny, and we might call it a bug. But we strive for 100 backwards compat...
+     */
     public function testMinusOneInt()
     {
         $v = new xmlrpcval(-1);
-        $u = new xmlrpcval(-1, 'string');
+        $u = new xmlrpcval();
         $this->assertEquals($u->scalarval(), $v->scalarval());
     }
 
@@ -416,6 +421,7 @@ and there they were.</value></member><member><name>postid</name><value>7414222</
         $v = $r->value();
         $v = $v['content'];
         $this->assertEquals("������", $v);
+
         $f = '<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
 <member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . utf8_encode('������') . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
 ';
@@ -423,6 +429,36 @@ and there they were.</value></member><member><name>postid</name><value>7414222</
         $v = $r->value();
         $v = $v['content'];
         $this->assertEquals("������", $v);
+
+        $r = php_xmlrpc_decode_xml($f);
+        $v = $r->value();
+        $v = $v->structmem('content')->scalarval();
+        $this->assertEquals("������", $v);
+    }
+
+    public function testLatin1Response()
+    {
+        $s = new xmlrpcmsg('dummy');
+        $f = "HTTP/1.1 200 OK\r\nContent-type: text/xml; charset=ISO-8859-1\r\n\r\n" . '<?xml version="1.0"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . '������' . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+';
+        $r = $s->parseResponse($f, false, 'phpvals');
+        $v = $r->value();
+        $v = $v['content'];
+        $this->assertEquals("������", $v);
+
+        $f = '<?xml version="1.0" encoding="iso-8859-1"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . '������' . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+';
+        $r = $s->parseResponse($f, false, 'phpvals');
+        $v = $r->value();
+        $v = $v['content'];
+        $this->assertEquals("������", $v);
+
+        $r = php_xmlrpc_decode_xml($f);
+        $v = $r->value();
+        $v = $v->structmem('content')->scalarval();
+        $this->assertEquals("������", $v);
     }
 
     public function testUTF8IntString()