@@ -7,7 +7,7 @@ soap.wsdl_cache_enabled=0
7
7
--FILE--
8
8
<?php
9
9
10
- enum TestBackedEnum : string
10
+ enum StringBackedEnum : string
11
11
{
12
12
case First = 'BackingValue1 ' ;
13
13
case Second = 'BackingValue2 ' ;
@@ -16,7 +16,13 @@ enum TestBackedEnum: string
16
16
case Fifth = 'BackingValue5 ' ;
17
17
}
18
18
19
- enum TestNonBackedEnum
19
+ enum IntBackedEnum: int
20
+ {
21
+ case First = 1 ;
22
+ case Second = 2 ;
23
+ }
24
+
25
+ enum NonBackedEnum
20
26
{
21
27
case First;
22
28
}
@@ -32,11 +38,13 @@ $client = new TestSoapClient('ext/soap/tests/gh15711.wsdl', ['classmap' => ['boo
32
38
echo "--- Test with backed enum --- \n" ;
33
39
34
40
$ book = new stdClass ();
35
- $ book ->base64 = TestBackedEnum::First;
36
- $ book ->string = TestBackedEnum::Second;
37
- $ book ->any = TestBackedEnum::Third;
38
- $ book ->hexbin = TestBackedEnum::Fourth;
39
- $ book ->nmtokens = TestBackedEnum::Fifth;
41
+ $ book ->base64 = StringBackedEnum::First;
42
+ $ book ->string = StringBackedEnum::Second;
43
+ $ book ->any = StringBackedEnum::Third;
44
+ $ book ->hexbin = StringBackedEnum::Fourth;
45
+ $ book ->nmtokens = StringBackedEnum::Fifth;
46
+ $ book ->integer = IntBackedEnum::First;
47
+ $ book ->short = IntBackedEnum::Second;
40
48
41
49
try {
42
50
$ client ->dotest ($ book );
@@ -45,12 +53,24 @@ try {
45
53
echo "--- Test with non-backed enum --- \n" ;
46
54
47
55
$ book = new stdClass ();
48
- $ book ->base64 = TestNonBackedEnum::First;
49
- $ book ->string = TestNonBackedEnum::First;
50
- $ book ->any = TestNonBackedEnum::First;
51
- $ book ->hexbin = TestNonBackedEnum::First;
52
- $ book ->nmtokens = TestNonBackedEnum::First;
56
+ $ book ->base64 = NonBackedEnum::First;
57
+ $ book ->string = NonBackedEnum::First;
58
+ $ book ->any = NonBackedEnum::First;
59
+ $ book ->hexbin = NonBackedEnum::First;
60
+ $ book ->nmtokens = NonBackedEnum::First;
61
+ $ book ->integer = NonBackedEnum::First;
62
+ $ book ->short = NonBackedEnum::First;
63
+
64
+ try {
65
+ $ client ->dotest ($ book );
66
+ } catch (ValueError $ e ) {
67
+ echo "ValueError: " , $ e ->getMessage (), "\n" ;
68
+ }
69
+
70
+ echo "--- Test with mismatched enum backing type --- \n" ;
53
71
72
+ $ book ->integer = StringBackedEnum::First;
73
+ $ book ->short = StringBackedEnum::First;
54
74
try {
55
75
$ client ->dotest ($ book );
56
76
} catch (ValueError $ e ) {
61
81
--EXPECT--
62
82
--- Test with backed enum ---
63
83
<? xml version="1.0 " encoding="UTF -8 "?>
64
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.nothing.com" 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:dotest><dotestReturn xsi:type="ns1:book"><base64 xsi:type="xsd:base64Binary">QmFja2luZ1ZhbHVlMQ==</base64><string xsi:type="xsd:string">BackingValue2</string><any xsi:type="xsd:any"><name xsi:type="xsd:string">Third</name><value xsi:type="xsd:string">BackingValue3</value></any><hexbin xsi:type="xsd:hexBinary">4261636B696E6756616C756534</hexbin><nmtokens>BackingValue5</nmtokens></dotestReturn></ns1:dotest></SOAP-ENV:Body></SOAP-ENV:Envelope>
84
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.nothing.com" 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:dotest><dotestReturn xsi:type="ns1:book"><base64 xsi:type="xsd:base64Binary">QmFja2luZ1ZhbHVlMQ==</base64><string xsi:type="xsd:string">BackingValue2</string><any xsi:type="xsd:any"><name xsi:type="xsd:string">Third</name><value xsi:type="xsd:string">BackingValue3</value></any><hexbin xsi:type="xsd:hexBinary">4261636B696E6756616C756534</hexbin><nmtokens>BackingValue5</nmtokens><integer xsi:type="xsd:integer">1</integer><short xsi:type="xsd:short">2</short>< /dotestReturn></ns1:dotest></SOAP-ENV:Body></SOAP-ENV:Envelope>
65
85
--- Test with non-backed enum ---
66
86
ValueError: Non-backed enums have no default serialization
87
+ --- Test with mismatched enum backing type ---
88
+ ValueError: String-backed enum cannot be serialized as int
0 commit comments