From a65756ce9f44306627edcf188ccc9ffd51a87885 Mon Sep 17 00:00:00 2001 From: seki Date: Sun, 16 Oct 2005 05:36:26 +0000 Subject: check remote hash tuple git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ lib/rinda/rinda.rb | 6 +++++- test/rinda/test_rinda.rb | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f58f69b852..fa3ec350d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sun Oct 16 14:30:05 2005 Masatoshi SEKI + + * lib/rinda/rinda.rb (Rinda::Tuple#initialize): check remote hash + tuple. fixed: [ruby-list:41227] + + * test/rinda/test_rinda.rb: test it. + Sat Oct 15 19:56:38 2005 Masatoshi SEKI * bin/erb: typo fixed, again. thanks, Doug Kearns. diff --git a/lib/rinda/rinda.rb b/lib/rinda/rinda.rb index 50fb84696a..5af8ecb442 100644 --- a/lib/rinda/rinda.rb +++ b/lib/rinda/rinda.rb @@ -31,7 +31,7 @@ module Rinda class Tuple # Initialize a tuple with an Array or a Hash. def initialize(ary_or_hash) - if Hash === ary_or_hash + if hash?(ary_or_hash) init_with_hash(ary_or_hash) else init_with_ary(ary_or_hash) @@ -68,6 +68,10 @@ module Rinda end private + def hash?(ary_or_hash) + ary_or_hash.respond_to?(:keys) + end + def init_with_ary(ary) @tuple = Array.new(ary.size) @tuple.size.times do |i| diff --git a/test/rinda/test_rinda.rb b/test/rinda/test_rinda.rb index 86e161e0cd..d663e0446d 100644 --- a/test/rinda/test_rinda.rb +++ b/test/rinda/test_rinda.rb @@ -510,6 +510,14 @@ class TupleSpaceProxyTest < Test::Unit::TestCase @ts = Rinda::TupleSpaceProxy.new(@ts_base) end + def test_remote_array_and_hash + @ts.write(DRbObject.new([1, 2, 3])) + assert_equal([1, 2, 3], @ts.take([1, 2, 3], 0)) + @ts.write(DRbObject.new({'head' => 1, 'tail' => 2})) + assert_equal({'head' => 1, 'tail' => 2}, + @ts.take({'head' => 1, 'tail' => 2}, 0)) + end + @server = DRb.primary_server || DRb.start_service end -- cgit v1.2.3