tomdz-soap4r 1.5.8.20111103171510

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. data/bin/wsdl2ruby.rb +139 -0
  2. data/bin/xsd2ruby.rb +91 -0
  3. data/lib/soap/attachment.rb +109 -0
  4. data/lib/soap/attrproxy.rb +35 -0
  5. data/lib/soap/baseData.rb +1095 -0
  6. data/lib/soap/element.rb +278 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  8. data/lib/soap/encodingstyle/handler.rb +121 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  11. data/lib/soap/filter.rb +14 -0
  12. data/lib/soap/filter/filterchain.rb +52 -0
  13. data/lib/soap/filter/handler.rb +32 -0
  14. data/lib/soap/filter/streamhandler.rb +30 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +62 -0
  17. data/lib/soap/header/handlerset.rb +71 -0
  18. data/lib/soap/header/mappinghandler.rb +48 -0
  19. data/lib/soap/header/simplehandler.rb +45 -0
  20. data/lib/soap/httpconfigloader.rb +140 -0
  21. data/lib/soap/mapping.rb +13 -0
  22. data/lib/soap/mapping/encodedregistry.rb +539 -0
  23. data/lib/soap/mapping/factory.rb +389 -0
  24. data/lib/soap/mapping/literalregistry.rb +392 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +296 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +171 -0
  29. data/lib/soap/mapping/typeMap.rb +107 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  32. data/lib/soap/marshal.rb +60 -0
  33. data/lib/soap/mimemessage.rb +243 -0
  34. data/lib/soap/nestedexception.rb +43 -0
  35. data/lib/soap/netHttpClient.rb +242 -0
  36. data/lib/soap/ns.rb +39 -0
  37. data/lib/soap/parser.rb +253 -0
  38. data/lib/soap/processor.rb +67 -0
  39. data/lib/soap/property.rb +340 -0
  40. data/lib/soap/proxy.rb +15 -0
  41. data/lib/soap/rpc/cgistub.rb +248 -0
  42. data/lib/soap/rpc/driver.rb +222 -0
  43. data/lib/soap/rpc/element.rb +375 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/methodDef.rb +69 -0
  46. data/lib/soap/rpc/proxy.rb +573 -0
  47. data/lib/soap/rpc/router.rb +663 -0
  48. data/lib/soap/rpc/rpc.rb +26 -0
  49. data/lib/soap/rpc/soaplet.rb +201 -0
  50. data/lib/soap/rpc/standaloneServer.rb +44 -0
  51. data/lib/soap/soap.rb +154 -0
  52. data/lib/soap/streamHandler.rb +302 -0
  53. data/lib/soap/version.rb +9 -0
  54. data/lib/soap/wsdlDriver.rb +165 -0
  55. data/lib/wsdl/binding.rb +66 -0
  56. data/lib/wsdl/data.rb +65 -0
  57. data/lib/wsdl/definitions.rb +237 -0
  58. data/lib/wsdl/documentation.rb +33 -0
  59. data/lib/wsdl/import.rb +81 -0
  60. data/lib/wsdl/importer.rb +39 -0
  61. data/lib/wsdl/info.rb +51 -0
  62. data/lib/wsdl/message.rb +55 -0
  63. data/lib/wsdl/operation.rb +152 -0
  64. data/lib/wsdl/operationBinding.rb +241 -0
  65. data/lib/wsdl/param.rb +94 -0
  66. data/lib/wsdl/parser.rb +165 -0
  67. data/lib/wsdl/part.rb +53 -0
  68. data/lib/wsdl/port.rb +67 -0
  69. data/lib/wsdl/portType.rb +76 -0
  70. data/lib/wsdl/service.rb +62 -0
  71. data/lib/wsdl/soap/address.rb +41 -0
  72. data/lib/wsdl/soap/binding.rb +50 -0
  73. data/lib/wsdl/soap/body.rb +59 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +434 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +241 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +55 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  79. data/lib/wsdl/soap/complexType.rb +174 -0
  80. data/lib/wsdl/soap/data.rb +43 -0
  81. data/lib/wsdl/soap/definitions.rb +201 -0
  82. data/lib/wsdl/soap/driverCreator.rb +121 -0
  83. data/lib/wsdl/soap/element.rb +34 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  85. data/lib/wsdl/soap/fault.rb +57 -0
  86. data/lib/wsdl/soap/header.rb +87 -0
  87. data/lib/wsdl/soap/headerfault.rb +57 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +377 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  92. data/lib/wsdl/soap/operation.rb +113 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +226 -0
  97. data/lib/wsdl/types.rb +45 -0
  98. data/lib/wsdl/wsdl.rb +25 -0
  99. data/lib/wsdl/xmlSchema/all.rb +25 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  101. data/lib/wsdl/xmlSchema/any.rb +62 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  110. data/lib/wsdl/xmlSchema/content.rb +96 -0
  111. data/lib/wsdl/xmlSchema/data.rb +117 -0
  112. data/lib/wsdl/xmlSchema/element.rb +154 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  115. data/lib/wsdl/xmlSchema/group.rb +101 -0
  116. data/lib/wsdl/xmlSchema/import.rb +54 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +46 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  119. data/lib/wsdl/xmlSchema/include.rb +49 -0
  120. data/lib/wsdl/xmlSchema/length.rb +38 -0
  121. data/lib/wsdl/xmlSchema/list.rb +49 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  138. data/lib/wsdl/xmlSchema/union.rb +36 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +176 -0
  142. data/lib/xsd/charset.rb +190 -0
  143. data/lib/xsd/codegen.rb +13 -0
  144. data/lib/xsd/codegen/classdef.rb +209 -0
  145. data/lib/xsd/codegen/commentdef.rb +35 -0
  146. data/lib/xsd/codegen/gensupport.rb +277 -0
  147. data/lib/xsd/codegen/methoddef.rb +71 -0
  148. data/lib/xsd/codegen/moduledef.rb +209 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +21 -0
  151. data/lib/xsd/iconvcharset.rb +34 -0
  152. data/lib/xsd/mapping.rb +69 -0
  153. data/lib/xsd/namedelements.rb +133 -0
  154. data/lib/xsd/ns.rb +183 -0
  155. data/lib/xsd/qname.rb +80 -0
  156. data/lib/xsd/xmlparser.rb +77 -0
  157. data/lib/xsd/xmlparser/libxmlparser.rb +116 -0
  158. data/lib/xsd/xmlparser/parser.rb +101 -0
  159. data/lib/xsd/xmlparser/rexmlparser.rb +59 -0
  160. data/lib/xsd/xmlparser/xmlparser.rb +51 -0
  161. data/lib/xsd/xmlparser/xmlscanner.rb +150 -0
  162. data/test/16runner.rb +69 -0
  163. data/test/helper.rb +7 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +289 -0
  168. data/test/interopR2/client.NetRemoting.rb +18 -0
  169. data/test/interopR2/client.rb +1235 -0
  170. data/test/interopR2/client4S4C.rb +16 -0
  171. data/test/interopR2/client4S4C2.rb +15 -0
  172. data/test/interopR2/clientASP.NET.rb +18 -0
  173. data/test/interopR2/clientApacheAxis.rb +17 -0
  174. data/test/interopR2/clientApacheSOAP.rb +18 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +18 -0
  176. data/test/interopR2/clientBase.rb +1968 -0
  177. data/test/interopR2/clientCapeConnect.rb +19 -0
  178. data/test/interopR2/clientDelphi.rb +20 -0
  179. data/test/interopR2/clientEasySoap.rb +15 -0
  180. data/test/interopR2/clientFrontier.rb +26 -0
  181. data/test/interopR2/clientGLUE.rb +33 -0
  182. data/test/interopR2/clientHP.rb +14 -0
  183. data/test/interopR2/clientJAX-RPC.rb +20 -0
  184. data/test/interopR2/clientJSOAP.rb +15 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +16 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +18 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +18 -0
  188. data/test/interopR2/clientNuSOAP.rb +20 -0
  189. data/test/interopR2/clientNuWave.rb +16 -0
  190. data/test/interopR2/clientOpenLink.rb +16 -0
  191. data/test/interopR2/clientOracle.rb +16 -0
  192. data/test/interopR2/clientPEAR.rb +19 -0
  193. data/test/interopR2/clientPhalanx.rb +19 -0
  194. data/test/interopR2/clientSIMACE.rb +19 -0
  195. data/test/interopR2/clientSOAP4R.rb +19 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +15 -0
  197. data/test/interopR2/clientSQLData.rb +19 -0
  198. data/test/interopR2/clientSilverStream.rb +18 -0
  199. data/test/interopR2/clientSpray2001.rb +18 -0
  200. data/test/interopR2/clientSun.rb +20 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +20 -0
  202. data/test/interopR2/clientWASP.rb +20 -0
  203. data/test/interopR2/clientWASPC.rb +19 -0
  204. data/test/interopR2/clientWebMethods.rb +16 -0
  205. data/test/interopR2/clientWhiteMesa.rb +29 -0
  206. data/test/interopR2/clientWingfoot.rb +16 -0
  207. data/test/interopR2/clientXMLBus.rb +20 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +18 -0
  209. data/test/interopR2/clientXSOAP.rb +15 -0
  210. data/test/interopR2/clientZSI.rb +20 -0
  211. data/test/interopR2/clienteSOAP.rb +19 -0
  212. data/test/interopR2/clientgSOAP.rb +19 -0
  213. data/test/interopR2/clientkSOAP.rb +18 -0
  214. data/test/interopR2/iSimonReg.rb +113 -0
  215. data/test/interopR2/interopResultBase.rb +115 -0
  216. data/test/interopR2/interopService.rb +248 -0
  217. data/test/interopR2/rwikiInteropService.rb +106 -0
  218. data/test/interopR2/server.cgi +271 -0
  219. data/test/interopR2/server.rb +276 -0
  220. data/test/interopR2/simonReg.rb +124 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +113 -0
  223. data/test/runner.rb +8 -0
  224. data/test/sm11/classDef.rb +157 -0
  225. data/test/sm11/client.rb +543 -0
  226. data/test/sm11/driver.rb +184 -0
  227. data/test/sm11/servant.rb +1068 -0
  228. data/test/sm11/server.rb +26 -0
  229. data/test/soap/asp.net/hello.wsdl +96 -0
  230. data/test/soap/asp.net/test_aspdotnet.rb +124 -0
  231. data/test/soap/auth/htdigest +2 -0
  232. data/test/soap/auth/htpasswd +2 -0
  233. data/test/soap/auth/test_basic.rb +118 -0
  234. data/test/soap/auth/test_digest.rb +119 -0
  235. data/test/soap/calc/calc.rb +18 -0
  236. data/test/soap/calc/calc2.rb +30 -0
  237. data/test/soap/calc/server.cgi +16 -0
  238. data/test/soap/calc/server.rb +18 -0
  239. data/test/soap/calc/server2.rb +21 -0
  240. data/test/soap/calc/test_calc.rb +53 -0
  241. data/test/soap/calc/test_calc2.rb +57 -0
  242. data/test/soap/calc/test_calc_cgi.rb +72 -0
  243. data/test/soap/case/test_mapping.rb +58 -0
  244. data/test/soap/fault/test_customfault.rb +61 -0
  245. data/test/soap/fault/test_fault.rb +47 -0
  246. data/test/soap/fault/test_soaparray.rb +36 -0
  247. data/test/soap/filter/test_filter.rb +147 -0
  248. data/test/soap/header/server.cgi +121 -0
  249. data/test/soap/header/test_authheader.rb +241 -0
  250. data/test/soap/header/test_authheader_cgi.rb +122 -0
  251. data/test/soap/header/test_simplehandler.rb +117 -0
  252. data/test/soap/helloworld/hw_s.rb +17 -0
  253. data/test/soap/helloworld/test_helloworld.rb +45 -0
  254. data/test/soap/htpasswd +2 -0
  255. data/test/soap/literalArrayMapping/amazonEc.rb +4779 -0
  256. data/test/soap/literalArrayMapping/amazonEcDriver.rb +173 -0
  257. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  258. data/test/soap/literalArrayMapping/test_definedarray.rb +35 -0
  259. data/test/soap/marshal/marshaltestlib.rb +498 -0
  260. data/test/soap/marshal/test_digraph.rb +57 -0
  261. data/test/soap/marshal/test_marshal.rb +28 -0
  262. data/test/soap/marshal/test_struct.rb +48 -0
  263. data/test/soap/ssl/README +1 -0
  264. data/test/soap/ssl/ca.cert +23 -0
  265. data/test/soap/ssl/client.cert +19 -0
  266. data/test/soap/ssl/client.key +15 -0
  267. data/test/soap/ssl/server.cert +19 -0
  268. data/test/soap/ssl/server.key +15 -0
  269. data/test/soap/ssl/sslsvr.rb +59 -0
  270. data/test/soap/ssl/subca.cert +21 -0
  271. data/test/soap/ssl/test_ssl.rb +236 -0
  272. data/test/soap/struct/test_struct.rb +71 -0
  273. data/test/soap/styleuse/client.rb +21 -0
  274. data/test/soap/styleuse/server.rb +87 -0
  275. data/test/soap/swa/test_file.rb +76 -0
  276. data/test/soap/test_basetype.rb +1091 -0
  277. data/test/soap/test_cookie.rb +113 -0
  278. data/test/soap/test_custom_ns.rb +106 -0
  279. data/test/soap/test_custommap.rb +111 -0
  280. data/test/soap/test_empty.rb +106 -0
  281. data/test/soap/test_envelopenamespace.rb +86 -0
  282. data/test/soap/test_extraattr.rb +55 -0
  283. data/test/soap/test_generator.rb +32 -0
  284. data/test/soap/test_httpconfigloader.rb +72 -0
  285. data/test/soap/test_mapping.rb +132 -0
  286. data/test/soap/test_nestedexception.rb +71 -0
  287. data/test/soap/test_nil.rb +71 -0
  288. data/test/soap/test_no_indent.rb +89 -0
  289. data/test/soap/test_property.rb +429 -0
  290. data/test/soap/test_response_as_xml.rb +118 -0
  291. data/test/soap/test_soapelement.rb +139 -0
  292. data/test/soap/test_streamhandler.rb +271 -0
  293. data/test/soap/test_styleuse.rb +327 -0
  294. data/test/soap/wsdlDriver/README.txt +2 -0
  295. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  296. data/test/soap/wsdlDriver/document.wsdl +54 -0
  297. data/test/soap/wsdlDriver/echo_version.rb +30 -0
  298. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  299. data/test/soap/wsdlDriver/test_calc.rb +72 -0
  300. data/test/soap/wsdlDriver/test_document.rb +72 -0
  301. data/test/soap/wsdlDriver/test_simpletype.rb +82 -0
  302. data/test/testutil.rb +55 -0
  303. data/test/wsdl/abstract/abstract.wsdl +176 -0
  304. data/test/wsdl/abstract/test_abstract.rb +160 -0
  305. data/test/wsdl/anonymous/expectedClassDef.rb +129 -0
  306. data/test/wsdl/anonymous/expectedDriver.rb +60 -0
  307. data/test/wsdl/anonymous/expectedMappingRegistry.rb +177 -0
  308. data/test/wsdl/anonymous/lp.wsdl +147 -0
  309. data/test/wsdl/anonymous/test_anonymous.rb +131 -0
  310. data/test/wsdl/any/any.wsdl +114 -0
  311. data/test/wsdl/any/expectedDriver.rb +69 -0
  312. data/test/wsdl/any/expectedEcho.rb +58 -0
  313. data/test/wsdl/any/expectedMappingRegistry.rb +64 -0
  314. data/test/wsdl/any/expectedService.rb +70 -0
  315. data/test/wsdl/any/test_any.rb +194 -0
  316. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  317. data/test/wsdl/axisArray/test_axisarray.rb +125 -0
  318. data/test/wsdl/choice/choice.wsdl +167 -0
  319. data/test/wsdl/choice/test_choice.rb +311 -0
  320. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  321. data/test/wsdl/complexcontent/test_echo.rb +91 -0
  322. data/test/wsdl/datetime/DatetimeService.rb +45 -0
  323. data/test/wsdl/datetime/datetime.rb +0 -0
  324. data/test/wsdl/datetime/datetime.wsdl +45 -0
  325. data/test/wsdl/datetime/datetimeServant.rb +23 -0
  326. data/test/wsdl/datetime/test_datetime.rb +88 -0
  327. data/test/wsdl/document/array/double.wsdl +161 -0
  328. data/test/wsdl/document/array/test_array.rb +202 -0
  329. data/test/wsdl/document/document.wsdl +76 -0
  330. data/test/wsdl/document/number.wsdl +54 -0
  331. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  332. data/test/wsdl/document/test_nosoapaction.rb +103 -0
  333. data/test/wsdl/document/test_number.rb +93 -0
  334. data/test/wsdl/document/test_rpc.rb +356 -0
  335. data/test/wsdl/emptycomplextype.wsdl +31 -0
  336. data/test/wsdl/fault/fault.wsdl +79 -0
  337. data/test/wsdl/fault/multifault.wsdl +96 -0
  338. data/test/wsdl/fault/test_fault.rb +120 -0
  339. data/test/wsdl/fault/test_multifault.rb +135 -0
  340. data/test/wsdl/group/expectedClassdef.rb +59 -0
  341. data/test/wsdl/group/expectedDriver.rb +52 -0
  342. data/test/wsdl/group/expectedMappingRegistry.rb +68 -0
  343. data/test/wsdl/group/group.wsdl +88 -0
  344. data/test/wsdl/group/test_rpc.rb +146 -0
  345. data/test/wsdl/list/list.wsdl +93 -0
  346. data/test/wsdl/list/test_list.rb +125 -0
  347. data/test/wsdl/map/map.wsdl +92 -0
  348. data/test/wsdl/map/map.xml +43 -0
  349. data/test/wsdl/map/test_map.rb +100 -0
  350. data/test/wsdl/marshal/person.wsdl +21 -0
  351. data/test/wsdl/marshal/person_org.rb +24 -0
  352. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  353. data/test/wsdl/multiplefault.wsdl +75 -0
  354. data/test/wsdl/oneway/oneway.wsdl +36 -0
  355. data/test/wsdl/oneway/test_oneway.rb +109 -0
  356. data/test/wsdl/overload/expectedClient.rb +38 -0
  357. data/test/wsdl/overload/expectedDriver.rb +62 -0
  358. data/test/wsdl/overload/expectedServant.rb +36 -0
  359. data/test/wsdl/overload/overload.wsdl +70 -0
  360. data/test/wsdl/overload/test_overload.rb +132 -0
  361. data/test/wsdl/qualified/lp.wsdl +47 -0
  362. data/test/wsdl/qualified/lp.xsd +26 -0
  363. data/test/wsdl/qualified/np.wsdl +51 -0
  364. data/test/wsdl/qualified/test_qualified.rb +138 -0
  365. data/test/wsdl/qualified/test_unqualified.rb +139 -0
  366. data/test/wsdl/raa/RAAService.rb +126 -0
  367. data/test/wsdl/raa/README.txt +8 -0
  368. data/test/wsdl/raa/expectedClassDef.rb +101 -0
  369. data/test/wsdl/raa/expectedDriver.rb +97 -0
  370. data/test/wsdl/raa/expectedMappingRegistry.rb +122 -0
  371. data/test/wsdl/raa/raa.wsdl +264 -0
  372. data/test/wsdl/raa/test_raa.rb +127 -0
  373. data/test/wsdl/ref/expectedDriver.rb +52 -0
  374. data/test/wsdl/ref/expectedProduct.rb +244 -0
  375. data/test/wsdl/ref/product.wsdl +147 -0
  376. data/test/wsdl/ref/test_ref.rb +269 -0
  377. data/test/wsdl/rpc/rpc.wsdl +109 -0
  378. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  379. data/test/wsdl/rpc/test_rpc.rb +177 -0
  380. data/test/wsdl/rpc/test_rpc_lit.rb +471 -0
  381. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  382. data/test/wsdl/simplecontent/test_simplecontent.rb +103 -0
  383. data/test/wsdl/simpletype/rpc/expectedClient.rb +35 -0
  384. data/test/wsdl/simpletype/rpc/expectedDriver.rb +59 -0
  385. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +37 -0
  386. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +58 -0
  387. data/test/wsdl/simpletype/rpc/expectedServant.rb +33 -0
  388. data/test/wsdl/simpletype/rpc/expectedService.rb +56 -0
  389. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  390. data/test/wsdl/simpletype/rpc/test_rpc.rb +53 -0
  391. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  392. data/test/wsdl/simpletype/test_simpletype.rb +93 -0
  393. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  394. data/test/wsdl/soap/test_soapbodyparts.rb +80 -0
  395. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +22 -0
  396. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +35 -0
  397. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +59 -0
  398. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +37 -0
  399. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +33 -0
  400. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +49 -0
  401. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +56 -0
  402. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  403. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +38 -0
  404. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  405. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  406. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  407. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +84 -0
  408. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +103 -0
  409. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  410. data/test/wsdl/soaptype/test_soaptype.rb +179 -0
  411. data/test/wsdl/test_emptycomplextype.rb +22 -0
  412. data/test/wsdl/test_fault.rb +51 -0
  413. data/test/wsdl/test_multiplefault.rb +42 -0
  414. data/test/xsd/codegen/test_classdef.rb +245 -0
  415. data/test/xsd/noencoding.xml +4 -0
  416. data/test/xsd/test_noencoding.rb +33 -0
  417. data/test/xsd/test_ns.rb +42 -0
  418. data/test/xsd/test_xmlschemaparser.rb +23 -0
  419. data/test/xsd/test_xsd.rb +1639 -0
  420. data/test/xsd/xmllang.xml +43 -0
  421. data/test/xsd/xmlschema.xml +12 -0
  422. data/test/xsd/xsd2ruby/expected_mysample.rb +66 -0
  423. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +12 -0
  424. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +52 -0
  425. data/test/xsd/xsd2ruby/section.xsd +49 -0
  426. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +91 -0
  427. metadata +490 -0
@@ -0,0 +1,173 @@
1
+ # encoding: ASCII-8BIT
2
+ require 'amazonEc.rb'
3
+
4
+ require 'soap/rpc/driver'
5
+
6
+ class AWSECommerceServicePortType < ::SOAP::RPC::Driver
7
+ DefaultEndpointUrl = "http://soap.amazon.com/onca/soap?Service=AWSECommerceService"
8
+ MappingRegistry = ::SOAP::Mapping::Registry.new
9
+
10
+ Methods = [
11
+ [ "http://soap.amazon.com",
12
+ "help",
13
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "Help"], true],
14
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "HelpResponse"], true] ],
15
+ { :request_style => :document, :request_use => :literal,
16
+ :response_style => :document, :response_use => :literal }
17
+ ],
18
+ [ "http://soap.amazon.com",
19
+ "itemSearch",
20
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ItemSearch"], true],
21
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ItemSearchResponse"], true] ],
22
+ { :request_style => :document, :request_use => :literal,
23
+ :response_style => :document, :response_use => :literal }
24
+ ],
25
+ [ "http://soap.amazon.com",
26
+ "itemLookup",
27
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ItemLookup"], true],
28
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ItemLookupResponse"], true] ],
29
+ { :request_style => :document, :request_use => :literal,
30
+ :response_style => :document, :response_use => :literal }
31
+ ],
32
+ [ "http://soap.amazon.com",
33
+ "browseNodeLookup",
34
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "BrowseNodeLookup"], true],
35
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "BrowseNodeLookupResponse"], true] ],
36
+ { :request_style => :document, :request_use => :literal,
37
+ :response_style => :document, :response_use => :literal }
38
+ ],
39
+ [ "http://soap.amazon.com",
40
+ "listSearch",
41
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ListSearch"], true],
42
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ListSearchResponse"], true] ],
43
+ { :request_style => :document, :request_use => :literal,
44
+ :response_style => :document, :response_use => :literal }
45
+ ],
46
+ [ "http://soap.amazon.com",
47
+ "listLookup",
48
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ListLookup"], true],
49
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "ListLookupResponse"], true] ],
50
+ { :request_style => :document, :request_use => :literal,
51
+ :response_style => :document, :response_use => :literal }
52
+ ],
53
+ [ "http://soap.amazon.com",
54
+ "customerContentSearch",
55
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CustomerContentSearch"], true],
56
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CustomerContentSearchResponse"], true] ],
57
+ { :request_style => :document, :request_use => :literal,
58
+ :response_style => :document, :response_use => :literal }
59
+ ],
60
+ [ "http://soap.amazon.com",
61
+ "customerContentLookup",
62
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CustomerContentLookup"], true],
63
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CustomerContentLookupResponse"], true] ],
64
+ { :request_style => :document, :request_use => :literal,
65
+ :response_style => :document, :response_use => :literal }
66
+ ],
67
+ [ "http://soap.amazon.com",
68
+ "similarityLookup",
69
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SimilarityLookup"], true],
70
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SimilarityLookupResponse"], true] ],
71
+ { :request_style => :document, :request_use => :literal,
72
+ :response_style => :document, :response_use => :literal }
73
+ ],
74
+ [ "http://soap.amazon.com",
75
+ "sellerLookup",
76
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerLookup"], true],
77
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerLookupResponse"], true] ],
78
+ { :request_style => :document, :request_use => :literal,
79
+ :response_style => :document, :response_use => :literal }
80
+ ],
81
+ [ "http://soap.amazon.com",
82
+ "cartGet",
83
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartGet"], true],
84
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartGetResponse"], true] ],
85
+ { :request_style => :document, :request_use => :literal,
86
+ :response_style => :document, :response_use => :literal }
87
+ ],
88
+ [ "http://soap.amazon.com",
89
+ "cartCreate",
90
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartCreate"], true],
91
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartCreateResponse"], true] ],
92
+ { :request_style => :document, :request_use => :literal,
93
+ :response_style => :document, :response_use => :literal }
94
+ ],
95
+ [ "http://soap.amazon.com",
96
+ "cartAdd",
97
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartAdd"], true],
98
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartAddResponse"], true] ],
99
+ { :request_style => :document, :request_use => :literal,
100
+ :response_style => :document, :response_use => :literal }
101
+ ],
102
+ [ "http://soap.amazon.com",
103
+ "cartModify",
104
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartModify"], true],
105
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartModifyResponse"], true] ],
106
+ { :request_style => :document, :request_use => :literal,
107
+ :response_style => :document, :response_use => :literal }
108
+ ],
109
+ [ "http://soap.amazon.com",
110
+ "cartClear",
111
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartClear"], true],
112
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "CartClearResponse"], true] ],
113
+ { :request_style => :document, :request_use => :literal,
114
+ :response_style => :document, :response_use => :literal }
115
+ ],
116
+ [ "http://soap.amazon.com",
117
+ "transactionLookup",
118
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "TransactionLookup"], true],
119
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "TransactionLookupResponse"], true] ],
120
+ { :request_style => :document, :request_use => :literal,
121
+ :response_style => :document, :response_use => :literal }
122
+ ],
123
+ [ "http://soap.amazon.com",
124
+ "sellerListingSearch",
125
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerListingSearch"], true],
126
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerListingSearchResponse"], true] ],
127
+ { :request_style => :document, :request_use => :literal,
128
+ :response_style => :document, :response_use => :literal }
129
+ ],
130
+ [ "http://soap.amazon.com",
131
+ "sellerListingLookup",
132
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerListingLookup"], true],
133
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "SellerListingLookupResponse"], true] ],
134
+ { :request_style => :document, :request_use => :literal,
135
+ :response_style => :document, :response_use => :literal }
136
+ ],
137
+ [ "http://soap.amazon.com",
138
+ "multiOperation",
139
+ [ [:in, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "MultiOperation"], true],
140
+ [:out, "body", ["::SOAP::SOAPElement", "http://webservices.amazon.com/AWSECommerceService/2006-06-07", "MultiOperationResponse"], true] ],
141
+ { :request_style => :document, :request_use => :literal,
142
+ :response_style => :document, :response_use => :literal }
143
+ ]
144
+ ]
145
+
146
+ def initialize(endpoint_url = nil)
147
+ endpoint_url ||= DefaultEndpointUrl
148
+ super(endpoint_url, nil)
149
+ self.mapping_registry = MappingRegistry
150
+ init_methods
151
+ end
152
+
153
+ private
154
+
155
+ def init_methods
156
+ Methods.each do |definitions|
157
+ opt = definitions.last
158
+ if opt[:request_style] == :document
159
+ add_document_operation(*definitions)
160
+ else
161
+ add_rpc_operation(*definitions)
162
+ qname = definitions[0]
163
+ name = definitions[2]
164
+ if qname.name != name and qname.name.capitalize == name.capitalize
165
+ ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
166
+ __send__(name, *arg)
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+
@@ -0,0 +1,100 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3
+ <SOAP-ENV:Body>
4
+ <ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2006-06-07">
5
+ <OperationRequest>
6
+ <HTTPHeaders>
7
+ <Header Name="UserAgent" Value="SOAP4R/1.5.5 (/114, ruby 1.8.4 (2005-12-24) [i686-linux])">
8
+ </Header>
9
+ </HTTPHeaders>
10
+ <RequestId>00000000000000000000</RequestId>
11
+ <Arguments>
12
+ <Argument Name="Service" Value="AWSECommerceService">
13
+ </Argument>
14
+ </Arguments>
15
+ <RequestProcessingTime>0.17442512512207</RequestProcessingTime>
16
+ </OperationRequest>
17
+ <Items>
18
+ <Request>
19
+ <IsValid>True</IsValid>
20
+ </Request>
21
+ <TotalResults>11</TotalResults>
22
+ <TotalPages>2</TotalPages>
23
+ <Item>
24
+ <ASIN>B000AMF800</ASIN>
25
+ <DetailPageURL>the_url_is_too_long</DetailPageURL>
26
+ <ItemAttributes>
27
+ <Artist>Andreas Bieber, Pia Douwes, Thomas Borchert, Felix Martin Uwe</Artist>
28
+ <Manufacturer>Ar-Express (Sony BMG)</Manufacturer>
29
+ <ProductGroup>Music</ProductGroup>
30
+ <Title>Musical Stars</Title>
31
+ </ItemAttributes>
32
+ <OfferSummary>
33
+ <LowestNewPrice>
34
+ <Amount>852</Amount>
35
+ <CurrencyCode>EUR</CurrencyCode>
36
+ <FormattedPrice>EUR 8,52</FormattedPrice>
37
+ </LowestNewPrice>
38
+ <LowestUsedPrice>
39
+ <Amount>852</Amount>
40
+ <CurrencyCode>EUR</CurrencyCode>
41
+ <FormattedPrice>EUR 8,52</FormattedPrice>
42
+ </LowestUsedPrice>
43
+ <TotalNew>12</TotalNew>
44
+ <TotalUsed>2</TotalUsed>
45
+ <TotalCollectible>0</TotalCollectible>
46
+ <TotalRefurbished>0</TotalRefurbished>
47
+ </OfferSummary>
48
+ <Tracks>
49
+ <Disc Number="1">
50
+ <Track Number="1">Totale Finsternis (Tanz der Vampire)</Track>
51
+ <Track Number="2">Ich mir (Elisabeth)</Track>
52
+ <Track Number="3">The Winner Takes It All ("Mamma Mia")</Track>
53
+ <Track Number="4">Cindy (Cindy)</Track>
54
+ <Track Number="5">Beauty And The Beast (Disney's Beauty &amp; The Best)</Track>
55
+ <Track Number="6">Somewhere Out There (American Tail)</Track>
56
+ <Track Number="7">Mamma Mia - Musicalstars singen Abba-Hits</Track>
57
+ <Track Number="8">Dies ist die Stunde (Jekyll &amp; Hyde)</Track>
58
+ <Track Number="9">Bring ihn heim (Les )</Track>
59
+ <Track Number="10">New Hampshire Nights (An Unfinished Song)</Track>
60
+ <Track Number="11">The Door Is Open</Track>
61
+ <Track Number="12">Pinball Wizard (Tommy)</Track>
62
+ <Track Number="13">Ocean Of Love (Poe: Pech und Schwefel)</Track>
63
+ </Disc>
64
+ <Disc Number="2">
65
+ <Track Number="1">Written In The Stars ("Aida"</Track>
66
+ <Track Number="2">I Am (Hero)</Track>
67
+ <Track Number="3">Waterloo - Musicalstars singen Abba-Hits</Track>
68
+ <Track Number="4">Don't Cry For Me Argentina (Evita)</Track>
69
+ <Track Number="5">Gib mir Kraft (Bonifatius: Das Musical)</Track>
70
+ <Track Number="6">Break The Silence (Paradise Of Pain)</Track>
71
+ <Track Number="7">Irgendetwas fehlt (Letterland)</Track>
72
+ <Track Number="8">A Dangerous Game (Jekyll &amp; Hyde)</Track>
73
+ <Track Number="9">I Am A Mirror (Freudiana)</Track>
74
+ <Track Number="10">Easy Terms (Blood Brothers)</Track>
75
+ <Track Number="11">The Shades Of Night (Elisabeth)</Track>
76
+ <Track Number="12">Gold von den Sternen (Mozart!)</Track>
77
+ <Track Number="13">Die Musik der Nacht (Das Phantom der Oper)</Track>
78
+ </Disc>
79
+ <Disc Number="3">
80
+ <Track Number="1">Schlag ein (Poe: Pech und Schwefel) - Edited Version</Track>
81
+ <Track Number="2">Ein Leben lang (Bonifatius: Das Musical)</Track>
82
+ <Track Number="3">Memory (Cats)</Track>
83
+ <Track Number="4">Any Fool Could Se / Oh, Paris (Paris)</Track>
84
+ <Track Number="5">Does Your Mother Know (Mamma Mia)</Track>
85
+ <Track Number="6">Out Of My Pain</Track>
86
+ <Track Number="7">Lullaby From Faraway</Track>
87
+ <Track Number="8">Die unstillbare Gier (Tanz der Vampire)</Track>
88
+ <Track Number="9">Make A Wish Come True (Make-A-Wish-Foundation Song)</Track>
89
+ <Track Number="10">Somewhere In Heaven (Arena)</Track>
90
+ <Track Number="11">Are We Really Angels</Track>
91
+ <Track Number="12">Lost My Mind (Peggy: Das Musical)</Track>
92
+ <Track Number="13">Our Time (Merrily We Roll Along)</Track>
93
+ <Track Number="14">Follow Your Star</Track>
94
+ </Disc>
95
+ </Tracks>
96
+ </Item>
97
+ </Items>
98
+ </ItemSearchResponse>
99
+ </SOAP-ENV:Body>
100
+ </SOAP-ENV:Envelope>
@@ -0,0 +1,35 @@
1
+ # encoding: ASCII-8BIT
2
+ require 'helper'
3
+ require 'testutil'
4
+ require 'soap/mapping'
5
+ require 'soap/processor'
6
+ require 'soap/rpc/element'
7
+
8
+
9
+ module SOAP
10
+ module Marshal
11
+
12
+
13
+ class TestDefinedArray < Test::Unit::TestCase
14
+ DIR = File.dirname(File.expand_path(__FILE__))
15
+
16
+ def pathname(filename)
17
+ File.join(DIR, filename)
18
+ end
19
+
20
+ def setup
21
+ TestUtil.require(DIR, 'amazonEcDriver.rb')
22
+ end
23
+
24
+ def test_amazonresponse
25
+ drv = AWSECommerceServicePortType.new
26
+ drv.wiredump_dev = STDOUT if $DEBUG
27
+ drv.test_loopback_response << File.read(pathname('amazonresponse.xml'))
28
+ obj = drv.itemSearch(ItemSearch.new)
29
+ assert_equal(3, obj.items.item.tracks.disc.size)
30
+ end
31
+ end
32
+
33
+
34
+ end
35
+ end
@@ -0,0 +1,498 @@
1
+ # encoding: ASCII-8BIT
2
+ module MarshalTestLib
3
+ # include this module to a Test::Unit::TestCase and definde encode(o) and
4
+ # decode(s) methods. e.g.
5
+ #
6
+ # def encode(o)
7
+ # SOAPMarshal.dump(o)
8
+ # end
9
+ #
10
+ # def decode(s)
11
+ # SOAPMarshal.load(s)
12
+ # end
13
+
14
+ NegativeZero = (-1.0 / (1.0 / 0.0))
15
+
16
+ module Mod1; end
17
+ module Mod2; end
18
+
19
+ def marshaltest(o1)
20
+ str = encode(o1)
21
+ print str, "\n" if $DEBUG
22
+ o2 = decode(str)
23
+ o2
24
+ end
25
+
26
+ def marshal_equal(o1, msg = nil)
27
+ msg = msg ? msg + "(#{ caller[0] })" : caller[0]
28
+ o2 = marshaltest(o1)
29
+ assert_equal(o1.class, o2.class, msg)
30
+
31
+ iv1 = o1.instance_variables.sort
32
+ iv2 = o2.instance_variables.sort
33
+ assert_equal(iv1, iv2)
34
+
35
+ val1 = iv1.map {|var| o1.instance_eval( "#{var}" )}
36
+ val2 = iv1.map {|var| o2.instance_eval( "#{var}" )}
37
+ assert_equal(val1, val2, msg)
38
+
39
+ if block_given?
40
+ assert_equal(yield(o1), yield(o2), msg)
41
+ else
42
+ assert_equal(o1, o2, msg)
43
+ end
44
+ end
45
+
46
+ class MyObject; def initialize(v) @v = v end; attr_reader :v; end
47
+ def test_object
48
+ o1 = Object.new
49
+ o1.instance_eval { @iv = 1 }
50
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
51
+ end
52
+
53
+ def test_object_subclass
54
+ marshal_equal(MyObject.new(2)) {|o| o.v}
55
+ end
56
+
57
+ def test_object_extend
58
+ o1 = Object.new
59
+ o1.extend(Mod1)
60
+ marshal_equal(o1) { |o|
61
+ (class << self; self; end).ancestors
62
+ }
63
+ o1.extend(Mod2)
64
+ marshal_equal(o1) { |o|
65
+ (class << self; self; end).ancestors
66
+ }
67
+ end
68
+
69
+ def test_object_subclass_extend
70
+ o1 = MyObject.new(2)
71
+ o1.extend(Mod1)
72
+ marshal_equal(o1) { |o|
73
+ (class << self; self; end).ancestors
74
+ }
75
+ o1.extend(Mod2)
76
+ marshal_equal(o1) { |o|
77
+ (class << self; self; end).ancestors
78
+ }
79
+ end
80
+
81
+ class MyArray < Array
82
+ def initialize(v, *args)
83
+ super(args)
84
+ @v = v
85
+ end
86
+ end
87
+ def test_array
88
+ marshal_equal(5)
89
+ marshal_equal([1,2,3])
90
+ end
91
+
92
+ def test_array_subclass
93
+ marshal_equal(MyArray.new(0, 1, 2, 3))
94
+ end
95
+
96
+ def test_array_ivar
97
+ o1 = Array.new
98
+ o1.instance_eval { @iv = 1 }
99
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
100
+ end
101
+
102
+ class MyException < Exception; def initialize(v, *args) super(*args); @v = v; end; attr_reader :v; end
103
+ def test_exception
104
+ marshal_equal(Exception.new('foo')) {|o| o.message}
105
+ marshal_equal(assert_raise(NoMethodError) {no_such_method()}) {|o| o.message}
106
+ end
107
+
108
+ def test_exception_subclass
109
+ marshal_equal(MyException.new(20, "bar")) {|o| [o.message, o.v]}
110
+ end
111
+
112
+ def test_false
113
+ marshal_equal(false)
114
+ end
115
+
116
+ class MyHash < Hash; def initialize(v, *args) super(*args); @v = v; end end
117
+ def test_hash
118
+ marshal_equal({1=>2, 3=>4})
119
+ end
120
+
121
+ def test_hash_default
122
+ h = Hash.new(:default)
123
+ h[5] = 6
124
+ marshal_equal(h)
125
+ end
126
+
127
+ def test_hash_subclass
128
+ h = MyHash.new(7, 8)
129
+ h[4] = 5
130
+ marshal_equal(h)
131
+ end
132
+
133
+ def test_hash_default_proc
134
+ h = Hash.new {}
135
+ assert_raises(TypeError) { marshaltest(h) }
136
+ end
137
+
138
+ def test_hash_ivar
139
+ o1 = Hash.new
140
+ o1.instance_eval { @iv = 1 }
141
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
142
+ end
143
+
144
+ def test_hash_extend
145
+ o1 = Hash.new
146
+ o1.extend(Mod1)
147
+ marshal_equal(o1) { |o|
148
+ (class << self; self; end).ancestors
149
+ }
150
+ o1.extend(Mod2)
151
+ marshal_equal(o1) { |o|
152
+ (class << self; self; end).ancestors
153
+ }
154
+ end
155
+
156
+ def test_hash_subclass_extend
157
+ o1 = MyHash.new(2)
158
+ o1.extend(Mod1)
159
+ marshal_equal(o1) { |o|
160
+ (class << self; self; end).ancestors
161
+ }
162
+ o1.extend(Mod2)
163
+ marshal_equal(o1) { |o|
164
+ (class << self; self; end).ancestors
165
+ }
166
+ end
167
+
168
+ def test_bignum
169
+ marshal_equal(-0x4000_0000_0000_0001)
170
+ marshal_equal(-0x4000_0001)
171
+ marshal_equal(0x4000_0000)
172
+ marshal_equal(0x4000_0000_0000_0000)
173
+ end
174
+
175
+ def test_fixnum
176
+ marshal_equal(-0x4000_0000)
177
+ marshal_equal(-0x3fff_ffff)
178
+ marshal_equal(-1)
179
+ marshal_equal(0)
180
+ marshal_equal(1)
181
+ marshal_equal(0x3fff_ffff)
182
+ end
183
+
184
+ def test_fixnum_ivar
185
+ o1 = 1
186
+ o1.instance_eval { @iv = 2 }
187
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
188
+ ensure
189
+ 1.instance_eval { remove_instance_variable("@iv") }
190
+ end
191
+
192
+ def test_fixnum_ivar_self
193
+ o1 = 1
194
+ o1.instance_eval { @iv = 1 }
195
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
196
+ ensure
197
+ 1.instance_eval { remove_instance_variable("@iv") }
198
+ end
199
+
200
+ def test_float
201
+ marshal_equal(-1.0)
202
+ marshal_equal(0.0)
203
+ marshal_equal(1.0)
204
+ end
205
+
206
+ def test_float_inf_nan
207
+ marshal_equal(1.0/0.0)
208
+ marshal_equal(-1.0/0.0)
209
+ marshal_equal(0.0/0.0) {|o| o.nan?}
210
+ marshal_equal(NegativeZero) {|o| 1.0/o}
211
+ end
212
+
213
+ def test_float_ivar
214
+ o1 = 1.23
215
+ o1.instance_eval { @iv = 1 }
216
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
217
+ end
218
+
219
+ def test_float_ivar_self
220
+ o1 = 5.5
221
+ o1.instance_eval { @iv = o1 }
222
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
223
+ end
224
+
225
+ def test_float_extend
226
+ o1 = 0.0/0.0
227
+ o1.extend(Mod1)
228
+ marshal_equal(o1) { |o|
229
+ (class << self; self; end).ancestors
230
+ }
231
+ o1.extend(Mod2)
232
+ marshal_equal(o1) { |o|
233
+ (class << self; self; end).ancestors
234
+ }
235
+ end
236
+
237
+ class MyRange < Range; def initialize(v, *args) super(*args); @v = v; end end
238
+ def test_range
239
+ marshal_equal(1..2)
240
+ marshal_equal(1...3)
241
+ end
242
+
243
+ def test_range_subclass
244
+ marshal_equal(MyRange.new(4,5,8, false))
245
+ end
246
+
247
+ class MyRegexp < Regexp; def initialize(v, *args) super(*args); @v = v; end end
248
+ def test_regexp
249
+ marshal_equal(/a/)
250
+ marshal_equal(/A/i)
251
+ marshal_equal(/A/mx)
252
+ end
253
+
254
+ def test_regexp_subclass
255
+ marshal_equal(MyRegexp.new(10, "a"))
256
+ end
257
+
258
+ class MyString < String; def initialize(v, *args) super(*args); @v = v; end end
259
+ def test_string
260
+ marshal_equal("abc")
261
+ end
262
+
263
+ def test_string_ivar
264
+ o1 = ""
265
+ o1.instance_eval { @iv = 1 }
266
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
267
+ end
268
+
269
+ def test_string_subclass
270
+ marshal_equal(MyString.new(10, "a"))
271
+ end
272
+
273
+ def test_string_subclass_cycle
274
+ str = MyString.new(10, "b")
275
+ str.instance_eval { @v = str }
276
+ marshal_equal(str) { |o|
277
+ assert_equal(o.__id__, o.instance_eval { @v }.__id__)
278
+ o.instance_eval { @v }
279
+ }
280
+ end
281
+
282
+ def test_string_subclass_extend
283
+ o = "abc"
284
+ o.extend(Mod1)
285
+ str = MyString.new(o, "c")
286
+ marshal_equal(str) { |o|
287
+ assert(o.instance_eval { @v }).kind_of?(Mod1)
288
+ }
289
+ end
290
+
291
+ MyStruct = Struct.new("MyStruct", :a, :b)
292
+ if RUBY_VERSION < "1.8.0"
293
+ # Struct#== is not defined in ruby/1.6
294
+ class MyStruct
295
+ def ==(rhs)
296
+ return true if __id__ == rhs.__id__
297
+ return false unless rhs.is_a?(::Struct)
298
+ return false if self.class != rhs.class
299
+ members.each do |member|
300
+ return false if self.__send__(member) != rhs.__send__(member)
301
+ end
302
+ return true
303
+ end
304
+ end
305
+ end
306
+ class MySubStruct < MyStruct; def initialize(v, *args) super(*args); @v = v; end end
307
+ def test_struct
308
+ marshal_equal(MyStruct.new(1,2))
309
+ end
310
+
311
+ def test_struct_subclass
312
+ if RUBY_VERSION < "1.8.0"
313
+ # Substruct instance cannot be dumped in ruby/1.6
314
+ # ::Marshal.dump(MySubStruct.new(10, 1, 2)) #=> uninitialized struct
315
+ return false
316
+ end
317
+ marshal_equal(MySubStruct.new(10,1,2))
318
+ end
319
+
320
+ def test_struct_ivar
321
+ o1 = MyStruct.new
322
+ o1.instance_eval { @iv = 1 }
323
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
324
+ end
325
+
326
+ def test_struct_subclass_extend
327
+ o1 = MyStruct.new
328
+ o1.extend(Mod1)
329
+ marshal_equal(o1) { |o|
330
+ (class << self; self; end).ancestors
331
+ }
332
+ o1.extend(Mod2)
333
+ marshal_equal(o1) { |o|
334
+ (class << self; self; end).ancestors
335
+ }
336
+ end
337
+
338
+ def test_symbol
339
+ marshal_equal(:a)
340
+ marshal_equal(:a?)
341
+ marshal_equal(:a!)
342
+ marshal_equal(:a=)
343
+ marshal_equal(:|)
344
+ marshal_equal(:^)
345
+ marshal_equal(:&)
346
+ marshal_equal(:<=>)
347
+ marshal_equal(:==)
348
+ marshal_equal(:===)
349
+ marshal_equal(:=~)
350
+ marshal_equal(:>)
351
+ marshal_equal(:>=)
352
+ marshal_equal(:<)
353
+ marshal_equal(:<=)
354
+ marshal_equal(:<<)
355
+ marshal_equal(:>>)
356
+ marshal_equal(:+)
357
+ marshal_equal(:-)
358
+ marshal_equal(:*)
359
+ marshal_equal(:/)
360
+ marshal_equal(:%)
361
+ marshal_equal(:**)
362
+ marshal_equal(:~)
363
+ marshal_equal(:+@)
364
+ marshal_equal(:-@)
365
+ marshal_equal(:[])
366
+ marshal_equal(:[]=)
367
+ marshal_equal(:`) #`
368
+ marshal_equal("a b".intern)
369
+ end
370
+
371
+ class MyTime < Time; def initialize(v, *args) super(*args); @v = v; end end
372
+ def test_time
373
+ # once there was a bug caused by usec overflow. try a little harder.
374
+ 10.times do
375
+ t = Time.now
376
+ marshal_equal(t,t.usec.to_s) {|t| t.tv_usec }
377
+ end
378
+ end
379
+
380
+ def test_time_subclass
381
+ marshal_equal(MyTime.new(10)) {|t| t.tv_usec }
382
+ end
383
+
384
+ def test_time_ivar
385
+ o1 = Time.now
386
+ o1.instance_eval { @iv = 1 }
387
+ marshal_equal(o1) {|o| o.instance_eval { @iv }}
388
+ end
389
+
390
+ def test_true
391
+ marshal_equal(true)
392
+ end
393
+
394
+ def test_nil
395
+ marshal_equal(nil)
396
+ end
397
+
398
+ def test_share
399
+ o = [:share]
400
+ o1 = [o, o]
401
+ o2 = marshaltest(o1)
402
+ assert_same(o2.first, o2.last)
403
+ end
404
+
405
+ class CyclicRange < Range
406
+ def <=>(other); true; end
407
+ end
408
+ def test_range_cyclic
409
+ return unless CyclicRange.respond_to?(:allocate) # test for 1.8
410
+ o1 = CyclicRange.allocate
411
+ o1.instance_eval { initialize(o1, o1) }
412
+ o2 = marshaltest(o1)
413
+ assert_same(o2, o2.begin)
414
+ assert_same(o2, o2.end)
415
+ end
416
+
417
+ def test_singleton
418
+ o = Object.new
419
+ def o.m() end
420
+ assert_raises(TypeError) { marshaltest(o) }
421
+ o = Object.new
422
+ c = class << o
423
+ @v = 1
424
+ class C; self; end
425
+ end
426
+ assert_raises(TypeError) { marshaltest(o) }
427
+ assert_raises(TypeError) { marshaltest(c) }
428
+ assert_raises(TypeError) { marshaltest(ARGF) } unless (RUBY_VERSION.to_f >= 1.9) # Rubyjedi: ARGF is no longer a singleton in Ruby 1.9 and above
429
+ assert_raises(TypeError) { marshaltest(ENV) }
430
+ end
431
+
432
+ def test_extend
433
+ o = Object.new
434
+ o.extend Mod1
435
+ marshal_equal(o) { |obj| obj.kind_of? Mod1 }
436
+ o = Object.new
437
+ o.extend Mod1
438
+ o.extend Mod2
439
+ marshal_equal(o) {|obj| class << obj; ancestors end}
440
+ o = Object.new
441
+ o.extend Module.new
442
+ assert_raises(TypeError) { marshaltest(o) }
443
+ end
444
+
445
+ def test_extend_string
446
+ o = ""
447
+ o.extend Mod1
448
+ marshal_equal(o) { |obj| obj.kind_of? Mod1 }
449
+ o = ""
450
+ o.extend Mod1
451
+ o.extend Mod2
452
+ marshal_equal(o) {|obj| class << obj; ancestors end}
453
+ o = ""
454
+ o.extend Module.new
455
+ assert_raises(TypeError) { marshaltest(o) }
456
+ end
457
+
458
+ def test_anonymous
459
+ c = Class.new
460
+ assert_raises(TypeError) { marshaltest(c) }
461
+ o = c.new
462
+ assert_raises(TypeError) { marshaltest(o) }
463
+ m = Module.new
464
+ assert_raises(TypeError) { marshaltest(m) }
465
+ end
466
+
467
+ def test_string_empty
468
+ marshal_equal("")
469
+ end
470
+
471
+ def test_string_crlf
472
+ marshal_equal("\r\n")
473
+ end
474
+
475
+ def test_string_escape
476
+ marshal_equal("<;;>&\r'\";;>")
477
+ end
478
+
479
+ MyStruct2 = Struct.new(:a, :b)
480
+ if RUBY_VERSION < "1.8.0"
481
+ # Struct#== is not defined in ruby/1.6
482
+ class MyStruct2
483
+ def ==(rhs)
484
+ return true if __id__ == rhs.__id__
485
+ return false unless rhs.is_a?(::Struct)
486
+ return false if self.class != rhs.class
487
+ members.each do |member|
488
+ return false if self.__send__(member) != rhs.__send__(member)
489
+ end
490
+ return true
491
+ end
492
+ end
493
+ end
494
+ def test_struct_toplevel
495
+ o = MyStruct2.new(1,2)
496
+ marshal_equal(o)
497
+ end
498
+ end