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