require 'test/unit' require 'soap/processor' require 'soap/mapping' require 'soap/rpc/element' require 'wsdl/importer' module WSDL class TestAxisArray < Test::Unit::TestCase def setup dir = File.dirname(File.expand_path(__FILE__)) $:.push(dir) require 'itemList.rb' $:.delete(dir) @xml =<<__EOX__ name3 name1 name2 __EOX__ end def test_by_stub header, body = ::SOAP::Processor.unmarshal(@xml) ary = ::SOAP::Mapping.soap2obj(body.response) assert_equal(3, ary.size) assert_equal("name1", ary[0].name) assert_equal("name2", ary[1].name) assert_equal("name3", ary[2].name) end def test_by_wsdl wsdlfile = File.join(File.dirname(File.expand_path(__FILE__)), 'axisArray.wsdl') wsdl = WSDL::Importer.import(wsdlfile) service = wsdl.services[0] port = service.ports[0] wsdl_types = wsdl.collect_complextypes rpc_decode_typemap = wsdl_types + wsdl.soap_rpc_complextypes(port.find_binding) opt = {} opt[:default_encodingstyle] = ::SOAP::EncodingNamespace opt[:decode_typemap] = rpc_decode_typemap header, body = ::SOAP::Processor.unmarshal(@xml, opt) ary = ::SOAP::Mapping.soap2obj(body.response) assert_equal(3, ary.size) assert_equal("name1", ary[0].name) assert_equal("name2", ary[1].name) assert_equal("name3", ary[2].name) end end end