]> granicus.if.org Git - php/commitdiff
Test suite for XML Schema and SOAP encoding/decoding
authorDmitry Stogov <dmitry@php.net>
Wed, 28 Jan 2004 13:33:48 +0000 (13:33 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 28 Jan 2004 13:33:48 +0000 (13:33 +0000)
75 files changed:
ext/soap/tests/schema/schema001.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema002.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema003.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema004.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema005.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema006.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema007.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema008.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema009.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema010.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema011.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema012.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema013.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema014.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema015.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema016.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema017.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema018.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema019.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema020.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema021.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema022.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema023.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema024.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema025.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema026.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema027.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema028.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema029.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema030.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema031.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema032.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema033.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema034.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema035.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema036.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema037.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema038.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema039.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema040.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema041.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema042.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema043.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema044.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema045.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema046.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema047.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema048.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema049.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema050.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema051.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema052.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema053.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema054.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema055.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema056.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema057.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema058.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema059.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema060.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema061.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema062.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema063.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema064.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema065.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema066.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema067.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema068.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema069.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema070.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema071.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema072.phpt [new file with mode: 0644]
ext/soap/tests/schema/schema073.phpt [new file with mode: 0644]
ext/soap/tests/schema/skipif.inc [new file with mode: 0644]
ext/soap/tests/schema/test_schema.inc [new file with mode: 0644]

diff --git a/ext/soap/tests/schema/schema001.phpt b/ext/soap/tests/schema/schema001.phpt
new file mode 100644 (file)
index 0000000..9f2b7e5
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 1: simpleType/restriction
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <restriction base="xsd:int"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema002.phpt b/ext/soap/tests/schema/schema002.phpt
new file mode 100644 (file)
index 0000000..41f3bbe
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+SOAP XML Schema 2: simpleType/restriction (reference to type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType2">
+               <restriction base="xsd:int"/>
+       </simpleType>
+       <simpleType name="testType">
+               <restriction base="tns:testType2"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema003.phpt b/ext/soap/tests/schema/schema003.phpt
new file mode 100644 (file)
index 0000000..7599100
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+SOAP XML Schema 3: simpleType/restriction (reference to type, that is not defined yet)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <restriction base="tns:testType2"/>
+       </simpleType>
+       <simpleType name="testType2">
+               <restriction base="xsd:int"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema004.phpt b/ext/soap/tests/schema/schema004.phpt
new file mode 100644 (file)
index 0000000..b851f76
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 4: simpleType/restriction (reference to undefined type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <restriction base="tns:testType2"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
\ No newline at end of file
diff --git a/ext/soap/tests/schema/schema005.phpt b/ext/soap/tests/schema/schema005.phpt
new file mode 100644 (file)
index 0000000..1db0c62
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 5: simpleType/restriction (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <restriction>
+                       <simpleType name="testType2">
+                   <restriction base="xsd:int"/>
+           </simpleType>
+         </restriction>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema006.phpt b/ext/soap/tests/schema/schema006.phpt
new file mode 100644 (file)
index 0000000..e41f275
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+SOAP XML Schema 6: simpleType/restriction (referenced by ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <restriction>
+                       <simpleType name="testType2">
+                   <restriction base="xsd:int"/>
+           </simpleType>
+         </restriction>
+       </simpleType>
+       <element name="testElement" type="tns:testType"/>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema007.phpt b/ext/soap/tests/schema/schema007.phpt
new file mode 100644 (file)
index 0000000..fd93c7a
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+SOAP XML Schema 7: simpleType/restriction (referenced by ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <element name="testElement" type="tns:testType"/>
+       <simpleType name="testType">
+               <restriction>
+                       <simpleType name="testType2">
+                   <restriction base="xsd:int"/>
+           </simpleType>
+         </restriction>
+       </simpleType>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
diff --git a/ext/soap/tests/schema/schema008.phpt b/ext/soap/tests/schema/schema008.phpt
new file mode 100644 (file)
index 0000000..1c4005f
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 8: simpleType/restriction (anonymous, inside an ellement)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+<element name="testElement">
+       <simpleType>
+               <restriction>
+                       <simpleType name="testType2">
+                   <restriction base="xsd:int"/>
+           </simpleType>
+         </restriction>
+       </simpleType>
+</element>
+EOF;
+test_schema($schema,'element="tns:testElement"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testElement">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+int(123)
+ok
+
diff --git a/ext/soap/tests/schema/schema009.phpt b/ext/soap/tests/schema/schema009.phpt
new file mode 100644 (file)
index 0000000..5198deb
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 9: simpleType/list (as string)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list itemType="token"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"one two");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">one two</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "one two"
+ok
diff --git a/ext/soap/tests/schema/schema010.phpt b/ext/soap/tests/schema/schema010.phpt
new file mode 100644 (file)
index 0000000..6cea56e
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 10: simpleType/list (as array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list itemType="token"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array("one","two"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">one two</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "one two"
+ok
diff --git a/ext/soap/tests/schema/schema011.phpt b/ext/soap/tests/schema/schema011.phpt
new file mode 100644 (file)
index 0000000..c66f0f7
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 11: simpleType/list (inline type) (as string)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list>
+                       <simpleType>
+                               <restriction base="int"/>
+                       </simpleType>
+               </list>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123 456.7");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 456</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "123 456"
+ok
diff --git a/ext/soap/tests/schema/schema012.phpt b/ext/soap/tests/schema/schema012.phpt
new file mode 100644 (file)
index 0000000..7ba25f9
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 12: simpleType/list (inline type) (as array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list>
+                       <simpleType>
+                               <restriction base="int"/>
+                       </simpleType>
+               </list>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,456.7));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 456</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(7) "123 456"
+ok
diff --git a/ext/soap/tests/schema/schema013.phpt b/ext/soap/tests/schema/schema013.phpt
new file mode 100644 (file)
index 0000000..ee2e114
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 13: simpleType/union
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union memberTypes="string int float"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(3) "str"
+ok
diff --git a/ext/soap/tests/schema/schema014.phpt b/ext/soap/tests/schema/schema014.phpt
new file mode 100644 (file)
index 0000000..87edb3a
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+SOAP XML Schema 14: simpleType/union
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union memberTypes="string int float"/>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
diff --git a/ext/soap/tests/schema/schema015.phpt b/ext/soap/tests/schema/schema015.phpt
new file mode 100644 (file)
index 0000000..dc9a02d
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+SOAP XML Schema 15: simpleType/union (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="string"/>
+                       </simpleType>
+                       <simpleType>
+                               <restriction base="int"/>
+                       </simpleType>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(3) "str"
+ok
diff --git a/ext/soap/tests/schema/schema016.phpt b/ext/soap/tests/schema/schema016.phpt
new file mode 100644 (file)
index 0000000..714fb59
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+SOAP XML Schema 16: simpleType/union (inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="string"/>
+                       </simpleType>
+                       <simpleType>
+                               <restriction base="int"/>
+                       </simpleType>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
diff --git a/ext/soap/tests/schema/schema017.phpt b/ext/soap/tests/schema/schema017.phpt
new file mode 100644 (file)
index 0000000..8b20483
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 17: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+                       <simpleType>
+                               <list itemType="int"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',123.5);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
diff --git a/ext/soap/tests/schema/schema018.phpt b/ext/soap/tests/schema/schema018.phpt
new file mode 100644 (file)
index 0000000..f41e277
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 18: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+                       <simpleType>
+                               <list itemType="int"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123.5");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(5) "123.5"
+ok
diff --git a/ext/soap/tests/schema/schema019.phpt b/ext/soap/tests/schema/schema019.phpt
new file mode 100644 (file)
index 0000000..7393877
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 19: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+                       <simpleType>
+                               <list itemType="int"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123.5 456.7");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5 456.7</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(11) "123.5 456.7"
+ok
diff --git a/ext/soap/tests/schema/schema020.phpt b/ext/soap/tests/schema/schema020.phpt
new file mode 100644 (file)
index 0000000..899b773
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 20: union with list
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <union>
+                       <simpleType>
+                               <restriction base="float"/>
+                       </simpleType>
+                       <simpleType>
+                               <list itemType="int"/>
+                       </simpleType>
+               </union>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123.5,456.7));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123.5 456.7</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(11) "123.5 456.7"
+ok
diff --git a/ext/soap/tests/schema/schema021.phpt b/ext/soap/tests/schema/schema021.phpt
new file mode 100644 (file)
index 0000000..1400107
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 21: list of unions
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list>
+                       <simpleType>
+                               <union memberTypes="int float str"/>
+                       </simpleType>
+               </list>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',"123 123.5 456.7 str");
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 123.5 456.7 str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(19) "123 123.5 456.7 str"
+ok
diff --git a/ext/soap/tests/schema/schema022.phpt b/ext/soap/tests/schema/schema022.phpt
new file mode 100644 (file)
index 0000000..bfbb05c
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 22: list of unions
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <simpleType name="testType">
+               <list>
+                       <simpleType>
+                               <union memberTypes="int float str"/>
+                       </simpleType>
+               </list>
+       </simpleType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5,'str'));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType">123 123.5 str</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+string(13) "123 123.5 str"
+ok
diff --git a/ext/soap/tests/schema/schema023.phpt b/ext/soap/tests/schema/schema023.phpt
new file mode 100644 (file)
index 0000000..162a46e
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 23: SOAP 1.1 Array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema024.phpt b/ext/soap/tests/schema/schema024.phpt
new file mode 100644 (file)
index 0000000..628dfd7
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 24: SOAP 1.1 Array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema025.phpt b/ext/soap/tests/schema/schema025.phpt
new file mode 100644 (file)
index 0000000..f9c7af7
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+SOAP XML Schema 25: SOAP 1.2 Array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+           <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="*"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema026.phpt b/ext/soap/tests/schema/schema026.phpt
new file mode 100644 (file)
index 0000000..a80215e
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 26: SOAP 1.2 Array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema027.phpt b/ext/soap/tests/schema/schema027.phpt
new file mode 100644 (file)
index 0000000..968b856
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+SOAP XML Schema 27: SOAP 1.1 Multidimensional array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[,]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+  [1]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema028.phpt b/ext/soap/tests/schema/schema028.phpt
new file mode 100644 (file)
index 0000000..f86a875
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+SOAP XML Schema 28: SOAP 1.2 Multidimensional array
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+           <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><item xsi:type="xsd:int">123</item><item xsi:type="xsd:int">123</item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+  [1]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema029.phpt b/ext/soap/tests/schema/schema029.phpt
new file mode 100644 (file)
index 0000000..8ae0a3b
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+SOAP XML Schema 29: SOAP 1.2 Multidimensional array (second way)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam SOAP-ENC:arrayType="xsd:int[2,1]" xsi:type="ns1:testType"><x_item xsi:type="xsd:int">123</x_item><x_item xsi:type="xsd:int">123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+  [1]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema030.phpt b/ext/soap/tests/schema/schema030.phpt
new file mode 100644 (file)
index 0000000..f6e62d4
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 30: Structure (sequence)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="str" type="string"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["str"]=>
+  string(3) "str"
+}
+ok
diff --git a/ext/soap/tests/schema/schema031.phpt b/ext/soap/tests/schema/schema031.phpt
new file mode 100644 (file)
index 0000000..f7d7712
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 31: Structure (all)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <all>
+                       <element name="int" type="int"/>
+                       <element name="str" type="string"/>
+               </all>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["str"]=>
+  string(3) "str"
+}
+ok
diff --git a/ext/soap/tests/schema/schema032.phpt b/ext/soap/tests/schema/schema032.phpt
new file mode 100644 (file)
index 0000000..bde19ce
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+SOAP XML Schema 32: Structure (choice)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <choice>
+                       <element name="int" type="int"/>
+                       <element name="str" type="string"/>
+               </choice>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema033.phpt b/ext/soap/tests/schema/schema033.phpt
new file mode 100644 (file)
index 0000000..1c8341b
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+SOAP XML Schema 33: Nested complex types
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <sequence>
+                       <element name="int" type="int"/>
+               </sequence>
+       </complexType>
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="nest" type="tns:testType2"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"nest"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><nest xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></nest></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["nest"]=>
+  object(stdClass)#6 (1) {
+    ["int"]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema034.phpt b/ext/soap/tests/schema/schema034.phpt
new file mode 100644 (file)
index 0000000..995b048
--- /dev/null
@@ -0,0 +1,37 @@
+--TEST--
+SOAP XML Schema 34: Nested complex types (element ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <element name="testType2" type="tns:testType2"/>
+       <complexType name="testType2">
+               <sequence>
+                       <element name="int" type="int"/>
+               </sequence>
+       </complexType>
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element ref="tns:testType2"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["testType2"]=>
+  object(stdClass)#6 (1) {
+    ["int"]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema035.phpt b/ext/soap/tests/schema/schema035.phpt
new file mode 100644 (file)
index 0000000..da2c641
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+SOAP XML Schema 35: Nested complex types (element ref + anonymous type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <element name="testType2">
+               <complexType>
+                       <sequence>
+                               <element name="int" type="int"/>
+                       </sequence>
+               </complexType>
+       </element>
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element ref="tns:testType2"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["testType2"]=>
+  object(stdClass)#6 (1) {
+    ["int"]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema036.phpt b/ext/soap/tests/schema/schema036.phpt
new file mode 100644 (file)
index 0000000..bf25ec4
--- /dev/null
@@ -0,0 +1,37 @@
+--TEST--
+SOAP XML Schema 36: Nested complex types (inline)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="testType2">
+                               <complexType>
+                                       <sequence>
+                                               <element name="int" type="int"/>
+                                       </sequence>
+                               </complexType>
+                       </element>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"testType2"=>array("int"=>123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><testType2 xsi:type="ns1:testType2"><int xsi:type="xsd:int">123</int></testType2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["testType2"]=>
+  object(stdClass)#6 (1) {
+    ["int"]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema037.phpt b/ext/soap/tests/schema/schema037.phpt
new file mode 100644 (file)
index 0000000..b1437a1
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 37: Structure with attributes
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="str" type="string"/>
+               </sequence>
+               <attribute name="int" type="int"/>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema038.phpt b/ext/soap/tests/schema/schema038.phpt
new file mode 100644 (file)
index 0000000..fec1332
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 38: Structure with attributes (ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="str" type="string"/>
+               </sequence>
+               <attribute ref="tns:int"/>
+       </complexType>
+       <attribute name="int" type="int"/>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema039.phpt b/ext/soap/tests/schema/schema039.phpt
new file mode 100644 (file)
index 0000000..f392022
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 39: Structure with attributes (attributeGroup)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="str" type="string"/>
+               </sequence>
+               <attributeGroup ref="tns:intGroup"/>
+       </complexType>
+       <attributeGroup name="intGroup">
+               <attribute name="int" type="int"/>
+       </attributeGroup>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema040.phpt b/ext/soap/tests/schema/schema040.phpt
new file mode 100644 (file)
index 0000000..85a1d5c
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+SOAP XML Schema 40: Structure with attributes (inline types)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="str" type="string"/>
+               </sequence>
+               <attribute name="int">
+                       <simpleType>
+                               <restriction base="int"/>
+                       </simpleType>
+               </attribute>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int="123" xsi:type="ns1:testType"><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema041.phpt b/ext/soap/tests/schema/schema041.phpt
new file mode 100644 (file)
index 0000000..13df8d7
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 41: Structure (group)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <group ref="tns:testGroup"/>
+       </complexType>
+       <group name="testGroup">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="str" type="string"/>
+               </sequence>
+       </group>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><str xsi:type="xsd:string">str</str></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["str"]=>
+  string(3) "str"
+}
+ok
diff --git a/ext/soap/tests/schema/schema042.phpt b/ext/soap/tests/schema/schema042.phpt
new file mode 100644 (file)
index 0000000..eab3059
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 42: Extension of simple type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <simpleContent>
+                       <extension base="int">
+                               <attribute name="int" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["_"]=>
+  int(123)
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema043.phpt b/ext/soap/tests/schema/schema043.phpt
new file mode 100644 (file)
index 0000000..b1977b6
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+SOAP XML Schema 43: Extension of simple type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <simpleContent>
+                       <extension base="int">
+                               <attribute name="int" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+       <complexType name="testType">
+               <simpleContent>
+                       <extension base="tns:testType2">
+                               <attribute name="int2" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (3) {
+  ["_"]=>
+  int(123)
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema044.phpt b/ext/soap/tests/schema/schema044.phpt
new file mode 100644 (file)
index 0000000..b5dbbe1
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 44: Restriction of simple type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <simpleContent>
+                       <restriction base="int">
+                               <attribute name="int" type="int"/>
+                       </restriction>
+               </simpleContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["_"]=>
+  int(123)
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema045.phpt b/ext/soap/tests/schema/schema045.phpt
new file mode 100644 (file)
index 0000000..6410e1e
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+SOAP XML Schema 45: Restriction of simple type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <simpleContent>
+                       <extension base="int">
+                               <attribute name="int" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+       <complexType name="testType">
+               <simpleContent>
+                       <restriction base="tns:testType2">
+                               <attribute name="int2" type="int"/>
+                       </restriction>
+               </simpleContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["_"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema046.phpt b/ext/soap/tests/schema/schema046.phpt
new file mode 100644 (file)
index 0000000..3d4695c
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+SOAP XML Schema 46: Extension of complex type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <simpleContent>
+                       <extension base="int">
+                               <attribute name="int" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+       <complexType name="testType">
+               <complexContent>
+                       <extension base="tns:testType2">
+                               <attribute name="int2" type="int"/>
+                       </extension>
+               </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int="123" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (3) {
+  ["_"]=>
+  int(123)
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema047.phpt b/ext/soap/tests/schema/schema047.phpt
new file mode 100644 (file)
index 0000000..497f7ef
--- /dev/null
@@ -0,0 +1,34 @@
+--TEST--
+SOAP XML Schema 47: Extension of complex type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <sequence>
+                       <element name="int" type="int"/>
+               </sequence>
+       </complexType>
+       <complexType name="testType">
+               <complexContent>
+                       <extension base="tns:testType2">
+                               <attribute name="int2" type="int"/>
+                       </extension>
+               </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema048.phpt b/ext/soap/tests/schema/schema048.phpt
new file mode 100644 (file)
index 0000000..0fc02e2
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+SOAP XML Schema 48: Restriction of complex type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <simpleContent>
+                       <extension base="int">
+                               <attribute name="int" type="int"/>
+                       </extension>
+               </simpleContent>
+       </complexType>
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="tns:testType2">
+                               <attribute name="int2" type="int"/>
+                       </restriction>
+               </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType" int2="123">123</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["_"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema049.phpt b/ext/soap/tests/schema/schema049.phpt
new file mode 100644 (file)
index 0000000..4213ba0
--- /dev/null
@@ -0,0 +1,34 @@
+--TEST--
+SOAP XML Schema 49: Restriction of complex type (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType2">
+               <sequence>
+                       <element name="int" type="int"/>
+               </sequence>
+       </complexType>
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="tns:testType2">
+                               <sequence>
+                                       <element name="int2" type="int"/>
+                               </sequence>
+                       </restriction>
+               </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>123.5,"int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema050.phpt b/ext/soap/tests/schema/schema050.phpt
new file mode 100644 (file)
index 0000000..925edb1
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 50: Array in complex type (maxOccurs > 1, one value)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="int2" type="int" maxOccurs="unbounded"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema051.phpt b/ext/soap/tests/schema/schema051.phpt
new file mode 100644 (file)
index 0000000..582c78e
--- /dev/null
@@ -0,0 +1,33 @@
+--TEST--
+SOAP XML Schema 51: Array in complex type (maxOccurs > 1, array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="int2" type="int" maxOccurs="unbounded"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array(123.5,456.7)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2><int2 xsi:type="xsd:int">456</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  array(2) {
+    [0]=>
+    int(123)
+    [1]=>
+    int(456)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema052.phpt b/ext/soap/tests/schema/schema052.phpt
new file mode 100644 (file)
index 0000000..59f6ff8
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 52: Array in complex type (maxOccurs > 1, array with one value)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="int2" type="int" maxOccurs="unbounded"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array(123.5)));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int><int2 xsi:type="xsd:int">123</int2></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["int"]=>
+  int(123)
+  ["int2"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema053.phpt b/ext/soap/tests/schema/schema053.phpt
new file mode 100644 (file)
index 0000000..b88115e
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+SOAP XML Schema 52: Array in complex type (maxOccurs > 1, empty array)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="int" type="int"/>
+                       <element name="int2" type="int" minOccurs="0" maxOccurs="unbounded"/>
+               </sequence>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("int"=>123.5,"int2"=>array()));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><int xsi:type="xsd:int">123</int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema054.phpt b/ext/soap/tests/schema/schema054.phpt
new file mode 100644 (file)
index 0000000..0570da0
--- /dev/null
@@ -0,0 +1,21 @@
+--TEST--
+SOAP XML Schema 54: Apache Map
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = '';
+test_schema($schema,'type="apache:Map" xmlns:apache="http://xml.apache.org/xml-soap"',array('a'=>123,'b'=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://xml.apache.org/xml-soap" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns2:Map"><item><key xsi:type="xsd:string">a</key><value xsi:type="xsd:int">123</value></item><item><key xsi:type="xsd:string">b</key><value xsi:type="xsd:float">123.5</value></item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  ["a"]=>
+  int(123)
+  ["b"]=>
+  float(123.5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema055.phpt b/ext/soap/tests/schema/schema055.phpt
new file mode 100644 (file)
index 0000000..c4d9577
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+SOAP XML Schema 55: Apache Map (extension)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <extension base="apache:Map" xmlns:apache="http://xml.apache.org/xml-soap">
+       </extension>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="testType"',array('a'=>123,'b'=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://xml.apache.org/xml-soap" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns2:Map"><item><key xsi:type="xsd:string">a</key><value xsi:type="xsd:int">123</value></item><item><key xsi:type="xsd:string">b</key><value xsi:type="xsd:float">123.5</value></item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  ["a"]=>
+  int(123)
+  ["b"]=>
+  float(123.5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema056.phpt b/ext/soap/tests/schema/schema056.phpt
new file mode 100644 (file)
index 0000000..1ada78e
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 56: SOAP 1.1 Array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema057.phpt b/ext/soap/tests/schema/schema057.phpt
new file mode 100644 (file)
index 0000000..1848b9c
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 57: SOAP 1.1 Array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema058.phpt b/ext/soap/tests/schema/schema058.phpt
new file mode 100644 (file)
index 0000000..b96fc9f
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+SOAP XML Schema 58: SOAP 1.2 Array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+           <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="*"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema059.phpt b/ext/soap/tests/schema/schema059.phpt
new file mode 100644 (file)
index 0000000..875bae9
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+SOAP XML Schema 59: SOAP 1.2 Array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  int(123)
+  [1]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema060.phpt b/ext/soap/tests/schema/schema060.phpt
new file mode 100644 (file)
index 0000000..4daa83c
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+SOAP XML Schema 60: SOAP 1.2 Multidimensional array (literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+           <attribute ref="enc12:itemType" wsdl:itemType="int"/>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+  [1]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema061.phpt b/ext/soap/tests/schema/schema061.phpt
new file mode 100644 (file)
index 0000000..bbd2aa6
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+SOAP XML Schema 61: SOAP 1.2 Multidimensional array (second way, literal encoding)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="enc12:Array" xmlns:enc12="http://www.w3.org/2003/05/soap-encoding">
+                               <all>
+                                       <element name="x_item" type="int" maxOccurs="unbounded"/>
+                   </all>
+           <attribute ref="enc12:arraySize" wsdl:arraySize="* 1"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(array(123),array(123.5)),'rpc','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:test><testParam><x_item>123</x_item><x_item>123</x_item></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+array(2) {
+  [0]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+  [1]=>
+  array(1) {
+    [0]=>
+    int(123)
+  }
+}
+ok
diff --git a/ext/soap/tests/schema/schema062.phpt b/ext/soap/tests/schema/schema062.phpt
new file mode 100644 (file)
index 0000000..e95c295
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 62: NULL with attributes
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <simpleContent>
+                       <restriction base="int">
+                               <attribute name="int" type="int"/>
+                       </restriction>
+               </simpleContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("_"=>NULL,"int"=>123.5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:nil="1" int="123" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["_"]=>
+  NULL
+  ["int"]=>
+  int(123)
+}
+ok
diff --git a/ext/soap/tests/schema/schema063.phpt b/ext/soap/tests/schema/schema063.phpt
new file mode 100644 (file)
index 0000000..4c88b5e
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+SOAP XML Schema 63: standard unsignedLong type
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = '';
+test_schema($schema,'type="xsd:unsignedLong"',0xffffffff);
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="xsd:unsignedLong">4294967295</testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+float(4294967295)
+ok
diff --git a/ext/soap/tests/schema/schema064.phpt b/ext/soap/tests/schema/schema064.phpt
new file mode 100644 (file)
index 0000000..b2b5db7
--- /dev/null
@@ -0,0 +1,57 @@
+--TEST--
+SOAP XML Schema 64: standard date/time types
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <sequence>
+                       <element name="dateTime" type="dateTime"/>
+                       <element name="time" type="time"/>
+                       <element name="date" type="date"/>
+                       <element name="gYearMonth" type="gYearMonth"/>
+                       <element name="gYear" type="gYear"/>
+                       <element name="gMonthDay" type="gMonthDay"/>
+                       <element name="gDay" type="gDay"/>
+                       <element name="gMonth" type="gMonth"/>
+               </sequence>
+       </complexType>
+EOF;
+$date = gmmktime(1,2,3,4,5,1976);
+putenv('TZ=GMT');
+test_schema($schema,'type="tns:testType"',array(
+       'dateTime' => $date,
+       'time' => $date,
+       'date' => $date,
+       'gYearMonth' => $date,
+       'gYear' => $date,
+       'gMonthDay' => $date,
+       'gDay' => $date,
+       'gMonth' => $date
+));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam xsi:type="ns1:testType"><dateTime xsi:type="xsd:dateTime">1976-04-05T01:02:03Z</dateTime><time xsi:type="xsd:time">01:02:03Z</time><date xsi:type="xsd:date">1976-04-05Z</date><gYearMonth xsi:type="xsd:gYearMonth">1976-04Z</gYearMonth><gYear xsi:type="xsd:gYear">1976Z</gYear><gMonthDay xsi:type="xsd:gMonthDay">--04-05Z</gMonthDay><gDay xsi:type="xsd:gDay">---05Z</gDay><gMonth xsi:type="xsd:gMonth">--04--Z</gMonth></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#4 (8) {
+  ["dateTime"]=>
+  string(20) "1976-04-05T01:02:03Z"
+  ["time"]=>
+  string(9) "01:02:03Z"
+  ["date"]=>
+  string(11) "1976-04-05Z"
+  ["gYearMonth"]=>
+  string(8) "1976-04Z"
+  ["gYear"]=>
+  string(5) "1976Z"
+  ["gMonthDay"]=>
+  string(8) "--04-05Z"
+  ["gDay"]=>
+  string(6) "---05Z"
+  ["gMonth"]=>
+  string(7) "--04--Z"
+}
+ok
diff --git a/ext/soap/tests/schema/schema065.phpt b/ext/soap/tests/schema/schema065.phpt
new file mode 100644 (file)
index 0000000..eb768ed
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+SOAP XML Schema 65: Attribute with default value
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attribute name="int" type="int" default="5"/>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema066.phpt b/ext/soap/tests/schema/schema066.phpt
new file mode 100644 (file)
index 0000000..8093aac
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 66: Attribute with fixed value (1)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attribute name="int" type="int" fixed="5"/>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (1) {
+  ["str"]=>
+  string(3) "str"
+}
+ok
diff --git a/ext/soap/tests/schema/schema067.phpt b/ext/soap/tests/schema/schema067.phpt
new file mode 100644 (file)
index 0000000..8aa08d2
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+SOAP XML Schema 67: Attribute with fixed value (2)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attribute name="int" type="int" fixed="5"/>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>5));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" int="5" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema068.phpt b/ext/soap/tests/schema/schema068.phpt
new file mode 100644 (file)
index 0000000..d8d18c3
--- /dev/null
@@ -0,0 +1,18 @@
+--TEST--
+SOAP XML Schema 68: Attribute with fixed value (3)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attribute name="int" type="int" fixed="5"/>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str","int"=>4));
+echo "ok";
+?>
+--EXPECTF--
+Fatal error: Attribute 'int' has fixed value '5' (value '4' is not allowed) in %stest_schema.inc on line %d
diff --git a/ext/soap/tests/schema/schema069.phpt b/ext/soap/tests/schema/schema069.phpt
new file mode 100644 (file)
index 0000000..67df500
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+SOAP XML Schema 69: Attribute with default value (reference)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attribute ref="tns:int"/>
+       </complexType>
+       <attribute name="int" type="int" default="5"/>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema070.phpt b/ext/soap/tests/schema/schema070.phpt
new file mode 100644 (file)
index 0000000..f917192
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SOAP XML Schema 70: Attribute with default value (attributeGroup)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <attribute name="str" type="string"/>
+               <attributeGroup ref="tns:int_group"/>
+       </complexType>
+       <attributeGroup name="int_group">
+               <attribute name="int" type="int" default="5"/>
+       </attributeGroup>
+EOF;
+test_schema($schema,'type="tns:testType"',(object)array("str"=>"str"));
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam str="str" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+object(stdClass)#5 (2) {
+  ["str"]=>
+  string(3) "str"
+  ["int"]=>
+  int(5)
+}
+ok
diff --git a/ext/soap/tests/schema/schema071.phpt b/ext/soap/tests/schema/schema071.phpt
new file mode 100644 (file)
index 0000000..1991f7a
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+SOAP XML Schema 71: SOAP 1.1 Array (document style)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'type="tns:testType"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><testParam><xsd:int>123</xsd:int><xsd:int>123</xsd:int></testParam></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/schema/schema072.phpt b/ext/soap/tests/schema/schema072.phpt
new file mode 100644 (file)
index 0000000..89a0ed3
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+SOAP XML Schema 72: SOAP 1.1 Array (document style, element with inline type)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <element name="testElement">
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+       </element>
+EOF;
+test_schema($schema,'element="tns:testElement"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:testElement><xsd:int>123</xsd:int><xsd:int>123</xsd:int></ns1:testElement></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/schema/schema073.phpt b/ext/soap/tests/schema/schema073.phpt
new file mode 100644 (file)
index 0000000..22dd9e2
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+SOAP XML Schema 73: SOAP 1.1 Array (document style, element with type ref)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+include "test_schema.inc";
+$schema = <<<EOF
+       <element name="testElement" type="tns:testType"/>
+       <complexType name="testType">
+               <complexContent>
+                       <restriction base="SOAP-ENC:Array">
+           <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
+       </restriction>
+    </complexContent>
+       </complexType>
+EOF;
+test_schema($schema,'element="tns:testElement"',array(123,123.5),'document','literal');
+echo "ok";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:testElement><xsd:int>123</xsd:int><xsd:int>123</xsd:int></ns1:testElement></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/schema/skipif.inc b/ext/soap/tests/schema/skipif.inc
new file mode 100644 (file)
index 0000000..fa8574e
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+  if (!extension_loaded('soap')) die('skip soap extension not available');
+?>
diff --git a/ext/soap/tests/schema/test_schema.inc b/ext/soap/tests/schema/test_schema.inc
new file mode 100644 (file)
index 0000000..186eda3
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+$val = null;
+
+function test($input) {
+       global $val;
+       $val = $input;
+}
+
+function test_schema($schema,$type,$param,$style="rpc",$use="encoded") {
+  global $HTTP_RAW_POST_DATA, $val;
+$wsdl  = <<<EOF
+<definitions name="InteropTest"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+    xmlns:tns="http://test-uri/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    targetNamespace="http://test-uri/">
+  <types>
+  <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test-uri/">
+   <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
+   <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
+       $schema
+  </schema>
+  </types>
+  <message name="testMessage">
+       <part name="testParam" $type/>
+  </message>
+       <portType name="testPortType">
+               <operation name="test">
+                       <input message="testMessage"/>
+               </operation>
+       </portType>
+       <binding name="testBinding" type="testPortType">
+               <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+               <operation name="test">
+                       <soap:operation soapAction="#test" style="$style"/>
+                       <input>
+                               <soap:body parts="body" use="$use" namespace="http://test-uri/"/>
+                       </input>
+               </operation>
+       </binding>
+       <service name="testService">
+   <port name="testPort" binding="tns:testBinding">
+     <soap:address location="test://" /> 
+   </port>
+ </service>
+</definitions>
+EOF;
+
+  $fname = tempnam ("./", "wsdl");
+  $f = fopen($fname,"w");
+  fwrite($f,$wsdl);
+  fclose($f);
+  $x = new SoapObject($fname);
+  $y = new SoapServer("http://test-uri/");
+  $y->bind($fname);
+       $y->addfunction("test");
+  unlink($fname);
+
+  $x->__trace(1);
+  $x->test($param);
+  $xml = xml_parser_create();
+  $req = $x->__getlastrequest();
+  echo $req;
+  if ($style == "rpc") {
+    $HTTP_RAW_POST_DATA = $req;
+    ob_start();
+    $y->handle();
+    ob_end_clean();
+    var_dump($val);
+  }
+
+/*
+  xml_parse_into_struct($xml,$x->__getlastrequest(),&$x,&$y);
+  var_dump($x);
+  var_dump($y);
+*/
+}
+?>
\ No newline at end of file