require 'helper' require 'soap/mapping' require 'soap/marshal' module SOAP class TestMapping < Test::Unit::TestCase class MappablePerson attr_reader :name attr_reader :age def initialize(name, age) @name, @age = name, age end def self.soap_marshallable true end end class UnmappablePerson attr_reader :name attr_reader :age def initialize(name, age) @name, @age = name, age end def self.soap_marshallable false end end def test_mappable xml = <<__XML__ nahi 37 __XML__ obj = SOAP::Marshal.load(xml) assert_equal(SOAP::TestMapping::MappablePerson, obj.class) # xml = <<__XML__ nahi 37 __XML__ obj = SOAP::Marshal.load(xml) assert_equal(SOAP::Mapping::Object, obj.class) end def test_nestedexception ele = Thread.new {} obj = [ele] begin SOAP::Marshal.dump(obj) rescue ::SOAP::Mapping::MappingError => e assert(e.backtrace.find { |line| /\[NESTED\]/ =~ line }) end end def test_date targets = [ ["2002-12-31", "2002-12-31Z"], ["2002-12-31+00:00", "2002-12-31Z"], ["2002-12-31-00:00", "2002-12-31Z"], ["-2002-12-31", "-2002-12-31Z"], ["-2002-12-31+00:00", "-2002-12-31Z"], ["-2002-12-31-00:00", "-2002-12-31Z"], ] targets.each do |str, expectec| d = Date.parse(str) assert_equal(d.class, convert(d).class) assert_equal(d, convert(d)) end end def test_datetime targets = [ ["2002-12-31T23:59:59.00", "2002-12-31T23:59:59Z"], ["2002-12-31T23:59:59+00:00", "2002-12-31T23:59:59Z"], ["2002-12-31T23:59:59-00:00", "2002-12-31T23:59:59Z"], ["-2002-12-31T23:59:59.00", "-2002-12-31T23:59:59Z"], ["-2002-12-31T23:59:59+00:00", "-2002-12-31T23:59:59Z"], ["-2002-12-31T23:59:59-00:00", "-2002-12-31T23:59:59Z"], ] targets.each do |str, expectec| d = DateTime.parse(str) assert_equal(d.class, convert(d).class) assert_equal(d, convert(d)) end end def convert(obj) SOAP::Mapping.soap2obj(SOAP::Mapping.obj2soap(obj)) end end end