require 'test/unit' dir = File.dirname(File.expand_path(__FILE__)) orgpath = $:.dup begin $:.push(dir) require 'marshaltestlib' ensure $:.replace(orgpath) end class TestMarshal < Test::Unit::TestCase include MarshalTestLib def encode(o) Marshal.dump(o) end def decode(s) Marshal.load(s) end def fact(n) return 1 if n == 0 f = 1 while n>0 f *= n n -= 1 end return f end StrClone=String.clone; def test_marshal $x = [1,2,3,[4,5,"foo"],{1=>"bar"},2.5,fact(30)] $y = Marshal.dump($x) assert_equal($x, Marshal.load($y)) assert_instance_of(StrClone, Marshal.load(Marshal.dump(StrClone.new("abc")))) [[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z| a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f)) ma = Marshal.dump(a) b = Marshal.load(ma) assert_equal(a, b) } end end