1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/xmlrpc/test_marshal.rb
naruse c853e2d86e * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.

* lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
  XML-RPC doesn't allow Infinity and NaN.
  http://www.xmlrpc.com/spec

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-22 02:50:45 +00:00

108 lines
2.6 KiB
Ruby

require 'test/unit'
require "xmlrpc/marshal"
class Test_Marshal < Test::Unit::TestCase
# for test_parser_values
class Person
include XMLRPC::Marshallable
attr_reader :name
def initialize(name)
@name = name
end
end
def test1_dump_response
assert_nothing_raised(NameError) {
XMLRPC::Marshal.dump_response('arg')
}
end
def test1_dump_call
assert_nothing_raised(NameError) {
XMLRPC::Marshal.dump_call('methodName', 'arg')
}
end
def test2_dump_load_response
value = [1, 2, 3, {"test" => true}, 3.4]
res = XMLRPC::Marshal.dump_response(value)
assert_equal(value, XMLRPC::Marshal.load_response(res))
end
def test2_dump_load_call
methodName = "testMethod"
value = [1, 2, 3, {"test" => true}, 3.4]
exp = [methodName, [value, value]]
res = XMLRPC::Marshal.dump_call(methodName, value, value)
assert_equal(exp, XMLRPC::Marshal.load_call(res))
end
def test_parser_values
v1 = [
1, -7778, -(2**31), 2**31-1, # integers
1.0, 0.0, -333.0, 2343434343.0, # floats
false, true, true, false, # booleans
"Hallo", "with < and >", "" # strings
]
v2 = [
[v1, v1, v1],
{"a" => v1}
]
v3 = [
XMLRPC::Base64.new("\001"*1000), # base64
:aSymbol, :anotherSym # symbols (-> string)
]
v3_exp = [
"\001"*1000,
"aSymbol", "anotherSym"
]
person = Person.new("Michael")
XMLRPC::XMLParser.each_installed_parser do |parser|
m = XMLRPC::Marshal.new(parser)
assert_equal( v1, m.load_response(m.dump_response(v1)) )
assert_equal( v2, m.load_response(m.dump_response(v2)) )
assert_equal( v3_exp, m.load_response(m.dump_response(v3)) )
pers = m.load_response(m.dump_response(person))
assert( pers.is_a?(Person) )
assert( person.name == pers.name )
end
# missing, Date, Time, DateTime
# Struct
end
def test_parser_invalid_values
values = [
-1-(2**31), 2**31,
Float::INFINITY, -Float::INFINITY, Float::NAN
]
XMLRPC::XMLParser.each_installed_parser do |parser|
m = XMLRPC::Marshal.new(parser)
values.each do |v|
assert_raise(RuntimeError, "#{v} shouldn't be dumped, but dumped") \
{ m.dump_response(v) }
end
end
end
def test_no_params_tag
# bug found by Idan Sofer
expect = %{<?xml version="1.0" ?><methodCall><methodName>myMethod</methodName><params/></methodCall>\n}
str = XMLRPC::Marshal.dump_call("myMethod")
assert_equal(expect, str)
end
end