2
require "xmlrpc/marshal"
4
class Test_Marshal < Test::Unit::TestCase
5
# for test_parser_values
7
include XMLRPC::Marshallable
15
def test1_dump_response
16
assert_nothing_raised(NameError) {
17
XMLRPC::Marshal.dump_response('arg')
22
assert_nothing_raised(NameError) {
23
XMLRPC::Marshal.dump_call('methodName', 'arg')
27
def test2_dump_load_response
28
value = [1, 2, 3, {"test" => true}, 3.4]
29
res = XMLRPC::Marshal.dump_response(value)
31
assert_equal(value, XMLRPC::Marshal.load_response(res))
34
def test2_dump_load_call
35
methodName = "testMethod"
36
value = [1, 2, 3, {"test" => true}, 3.4]
37
exp = [methodName, [value, value]]
39
res = XMLRPC::Marshal.dump_call(methodName, value, value)
41
assert_equal(exp, XMLRPC::Marshal.load_call(res))
44
def test_parser_values
47
1.0, 0.0, -333.0, 2343434343.0, # floats
48
false, true, true, false, # booleans
49
"Hallo", "with < and >", "" # strings
58
XMLRPC::Base64.new("\001"*1000), # base64
59
:aSymbol, :anotherSym # symbols (-> string)
63
"aSymbol", "anotherSym"
65
person = Person.new("Michael")
67
XMLRPC::XMLParser.each_installed_parser do |parser|
68
m = XMLRPC::Marshal.new(parser)
70
assert_equal( v1, m.load_response(m.dump_response(v1)) )
71
assert_equal( v2, m.load_response(m.dump_response(v2)) )
72
assert_equal( v3_exp, m.load_response(m.dump_response(v3)) )
74
pers = m.load_response(m.dump_response(person))
76
assert( pers.is_a?(Person) )
77
assert( person.name == pers.name )
80
# missing, Date, Time, DateTime
84
def test_no_params_tag
85
# bug found by Idan Sofer
87
expect = %{<?xml version="1.0" ?><methodCall><methodName>myMethod</methodName><params/></methodCall>\n}
89
str = XMLRPC::Marshal.dump_call("myMethod")
90
assert_equal(expect, str)