X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2F1ParsingBugsTest.php;h=ce463f7a1283e009e69719cd04b5fcb9118b5a3b;hb=6a87bde9d1b40ea8d249d47ddac367d9ed944b32;hp=06fb36ac3157e0c7827457156d8a7b8ab83ee589;hpb=5282cf295c80ee4acfdde505e7122d050e574596;p=plcapi.git
diff --git a/tests/1ParsingBugsTest.php b/tests/1ParsingBugsTest.php
index 06fb36a..ce463f7 100644
--- a/tests/1ParsingBugsTest.php
+++ b/tests/1ParsingBugsTest.php
@@ -5,6 +5,11 @@
include_once __DIR__ . '/../lib/xmlrpc.inc';
include_once __DIR__ . '/../lib/xmlrpcs.inc';
+include_once __DIR__ . '/parse_args.php';
+
+/**
+ * Tests involving parsing of xml and handling of xmlrpc values
+ */
class ParsingBugsTests extends PHPUnit_Framework_TestCase
{
public $args = array();
@@ -111,14 +116,18 @@ class ParsingBugsTests extends PHPUnit_Framework_TestCase
01
-float1
-01.10
-
-
integer2
+1
+integer3
+1
+
+
+float1
+01.10
+
+
float2
+1.10
@@ -134,15 +143,48 @@ class ParsingBugsTests extends PHPUnit_Framework_TestCase
$r = $m->parseResponse($fp);
$v = $r->value();
$s = $v->structmem('integer1');
- $t = $v->structmem('float1');
- $u = $v->structmem('integer2');
- $w = $v->structmem('float2');
- $x = $v->structmem('float3');
+ $t = $v->structmem('integer2');
+ $u = $v->structmem('integer3');
+ $x = $v->structmem('float1');
+ $y = $v->structmem('float2');
+ $z = $v->structmem('float3');
$this->assertEquals(1, $s->scalarval());
- $this->assertEquals(1.1, $t->scalarval());
+ $this->assertEquals(1, $t->scalarval());
$this->assertEquals(1, $u->scalarval());
- $this->assertEquals(1.1, $w->scalarval());
- $this->assertEquals(-110.0, $x->scalarval());
+
+ $this->assertEquals(1.1, $x->scalarval());
+ $this->assertEquals(1.1, $y->scalarval());
+ $this->assertEquals(-110.0, $z->scalarval());
+ }
+
+ public function testI8()
+ {
+ if (PHP_INT_SIZE == 4 ) {
+ $this->markTestSkipped('did not find a locale which sets decimal separator to comma');
+ return;
+ }
+
+ $m = $this->newMsg('dummy');
+ $fp =
+ '
+
+
+
+
+
+
+integer1
+1
+
+
+
+
+
+';
+ $r = $m->parseResponse($fp);
+ $v = $r->value();
+ $s = $v->structmem('integer1');
+ $this->assertEquals(1, $s->scalarval());
}
public function testAddScalarToStruct()
@@ -549,7 +591,7 @@ and there they were.postid7414222
$this->assertequals(2, $r->faultCode());
}
- public function TestLocale()
+ public function testLocale()
{
$locale = setlocale(LC_NUMERIC, 0);
/// @todo on php 5.3/win setting locale to german does not seem to set decimal separator to comma...
@@ -567,4 +609,31 @@ and there they were.postid7414222
$this->markTestSkipped('did not find a locale which sets decimal separator to comma');
}
}
+
+ public function testArrayAccess()
+ {
+ $v1 = new xmlrpcval(array(new xmlrpcval('one'), new xmlrpcval('two')), 'array');
+ $this->assertequals(1, count($v1));
+ $out = array('me' => array(), 'mytype' => 2, '_php_class' => null);
+ foreach($v1 as $key => $val)
+ {
+ $expected = each($out);
+ $this->assertequals($expected['key'], $key);
+ if (gettype($expected['value']) == 'array') {
+ $this->assertequals('array', gettype($val));
+ } else {
+ $this->assertequals($expected['value'], $val);
+ }
+ }
+
+ $v2 = new \PhpXmlRpc\Value(array(new \PhpXmlRpc\Value('one'), new \PhpXmlRpc\Value('two')), 'array');
+ $this->assertequals(2, count($v2));
+ $out = array(0 => 'object', 1 => 'object');
+ foreach($v2 as $key => $val)
+ {
+ $expected = each($out);
+ $this->assertequals($expected['key'], $key);
+ $this->assertequals($expected['value'], gettype($val));
+ }
+ }
}