summaryrefslogtreecommitdiff
path: root/ruby_1_8_6/test/wsdl/marshal
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_6/test/wsdl/marshal')
-rw-r--r--ruby_1_8_6/test/wsdl/marshal/person.wsdl21
-rw-r--r--ruby_1_8_6/test/wsdl/marshal/person_org.rb22
-rw-r--r--ruby_1_8_6/test/wsdl/marshal/test_wsdlmarshal.rb80
3 files changed, 123 insertions, 0 deletions
diff --git a/ruby_1_8_6/test/wsdl/marshal/person.wsdl b/ruby_1_8_6/test/wsdl/marshal/person.wsdl
new file mode 100644
index 0000000000..6ea8a04825
--- /dev/null
+++ b/ruby_1_8_6/test/wsdl/marshal/person.wsdl
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<definitions name="Person"
+ targetNamespace="http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
+ xmlns:tns="http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.jin.gr.jp/~nahi/xmlns/sample/Person">
+ <complexType name="Person">
+ <all>
+ <element name="familyname" type="xsd:string"/>
+ <element name="givenname" type="xsd:string"/>
+ <element name="var1" type="xsd:int"/>
+ <element name="var2" type="xsd:double"/>
+ <element name="var3" type="xsd:string"/>
+ </all>
+ </complexType>
+ </xsd:schema>
+ </types>
+</definitions>
diff --git a/ruby_1_8_6/test/wsdl/marshal/person_org.rb b/ruby_1_8_6/test/wsdl/marshal/person_org.rb
new file mode 100644
index 0000000000..f8c0e0db76
--- /dev/null
+++ b/ruby_1_8_6/test/wsdl/marshal/person_org.rb
@@ -0,0 +1,22 @@
+require 'xsd/qname'
+
+# {http://www.jin.gr.jp/~nahi/xmlns/sample/Person}Person
+class Person
+ @@schema_type = "Person"
+ @@schema_ns = "http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
+ @@schema_element = [["familyname", ["SOAP::SOAPString", XSD::QName.new(nil, "familyname")]], ["givenname", ["SOAP::SOAPString", XSD::QName.new(nil, "givenname")]], ["var1", ["SOAP::SOAPInt", XSD::QName.new(nil, "var1")]], ["var2", ["SOAP::SOAPDouble", XSD::QName.new(nil, "var2")]], ["var3", ["SOAP::SOAPString", XSD::QName.new(nil, "var3")]]]
+
+ attr_accessor :familyname
+ attr_accessor :givenname
+ attr_accessor :var1
+ attr_accessor :var2
+ attr_accessor :var3
+
+ def initialize(familyname = nil, givenname = nil, var1 = nil, var2 = nil, var3 = nil)
+ @familyname = familyname
+ @givenname = givenname
+ @var1 = var1
+ @var2 = var2
+ @var3 = var3
+ end
+end
diff --git a/ruby_1_8_6/test/wsdl/marshal/test_wsdlmarshal.rb b/ruby_1_8_6/test/wsdl/marshal/test_wsdlmarshal.rb
new file mode 100644
index 0000000000..cd2bdb198a
--- /dev/null
+++ b/ruby_1_8_6/test/wsdl/marshal/test_wsdlmarshal.rb
@@ -0,0 +1,80 @@
+require 'test/unit'
+require 'wsdl/parser'
+require 'soap/mapping/wsdlencodedregistry'
+require 'soap/marshal'
+require 'wsdl/soap/wsdl2ruby'
+
+class WSDLMarshaller
+ include SOAP
+
+ def initialize(wsdlfile)
+ wsdl = WSDL::Parser.new.parse(File.open(wsdlfile) { |f| f.read })
+ types = wsdl.collect_complextypes
+ @opt = {
+ :decode_typemap => types,
+ :generate_explicit_type => false,
+ :pretty => true
+ }
+ @mapping_registry = Mapping::WSDLEncodedRegistry.new(types)
+ end
+
+ def dump(obj, io = nil)
+ type = Mapping.class2element(obj.class)
+ ele = Mapping.obj2soap(obj, @mapping_registry, type)
+ ele.elename = ele.type
+ Processor.marshal(SOAPEnvelope.new(nil, SOAPBody.new(ele)), @opt, io)
+ end
+
+ def load(io)
+ header, body = Processor.unmarshal(io, @opt)
+ Mapping.soap2obj(body.root_node)
+ end
+end
+
+
+require File.join(File.dirname(__FILE__), 'person_org')
+
+class Person
+ def ==(rhs)
+ @familyname == rhs.familyname and @givenname == rhs.givenname and
+ @var1 == rhs.var1 and @var2 == rhs.var2 and @var3 == rhs.var3
+ end
+end
+
+
+class TestWSDLMarshal < Test::Unit::TestCase
+ DIR = File.dirname(File.expand_path(__FILE__))
+
+ def test_marshal
+ marshaller = WSDLMarshaller.new(pathname('person.wsdl'))
+ obj = Person.new("NAKAMURA", "Hiroshi", 1, 1.0, "1")
+ str = marshaller.dump(obj)
+ obj2 = marshaller.load(str)
+ assert_equal(obj, obj2)
+ assert_equal(str, marshaller.dump(obj2))
+ end
+
+ def test_classdef
+ gen = WSDL::SOAP::WSDL2Ruby.new
+ gen.location = pathname("person.wsdl")
+ gen.basedir = DIR
+ gen.logger.level = Logger::FATAL
+ gen.opt['classdef'] = nil
+ gen.opt['force'] = true
+ gen.run
+ compare("person_org.rb", "Person.rb")
+ File.unlink(pathname('Person.rb'))
+ end
+
+ def compare(expected, actual)
+ assert_equal(loadfile(expected), loadfile(actual), actual)
+ end
+
+ def loadfile(file)
+ File.open(pathname(file)) { |f| f.read }
+ end
+
+ def pathname(filename)
+ File.join(DIR, filename)
+ end
+end