summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-16 05:36:26 +0000
committerseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-16 05:36:26 +0000
commita65756ce9f44306627edcf188ccc9ffd51a87885 (patch)
tree13663bce70224958c6a3fe2536dbc268e204fcc9
parentfdd0fbe96f09dab723daa7377fdd759db872cf3b (diff)
check remote hash tuple
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--lib/rinda/rinda.rb6
-rw-r--r--test/rinda/test_rinda.rb8
3 files changed, 20 insertions, 1 deletions
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 <m_seki@mva.biglobe.ne.jp>
+
+ * 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 <m_seki@mva.biglobe.ne.jp>
* 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