diff options
| author | ksss <[email protected]> | 2014-03-07 11:08:24 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2014-03-07 11:08:24 +0900 |
| commit | cab1f734ef9a9eb6b31d792bfc818e5cb4f3b300 (patch) | |
| tree | 07b9e610a9b0665ee2e7fc6deae6ddbe2f5c2e75 | |
| parent | e40428af7b02870663a6c052496c176c22c5e875 (diff) | |
| download | mruby-cab1f734ef9a9eb6b31d792bfc818e5cb4f3b300.tar.gz mruby-cab1f734ef9a9eb6b31d792bfc818e5cb4f3b300.zip | |
Fix behavior Hash#eql?
| -rw-r--r-- | src/hash.c | 2 | ||||
| -rw-r--r-- | test/t/hash.rb | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c index 9d7927bb9..1091ca643 100644 --- a/src/hash.c +++ b/src/hash.c @@ -901,7 +901,7 @@ hash_equal(mrb_state *mrb, mrb_value hash1, mrb_value hash2, mrb_bool eql) key = kh_key(h1,k1); k2 = kh_get(ht, mrb, h2, key); if (k2 != kh_end(h2)) { - if (mrb_equal(mrb, kh_value(h1,k1), kh_value(h2,k2))) { + if (mrb_eql(mrb, kh_value(h1,k1), kh_value(h2,k2))) { continue; /* next key */ } } diff --git a/test/t/hash.rb b/test/t/hash.rb index 837fe0216..92bc223b6 100644 --- a/test/t/hash.rb +++ b/test/t/hash.rb @@ -269,6 +269,14 @@ end # Not ISO specified +assert('Hash#eql?') do + a = { 'a' => 1, 'b' => 2, 'c' => 3 } + b = { 'a' => 1, 'b' => 2, 'c' => 3 } + c = { 'a' => 1.0, 'b' => 2, 'c' => 3 } + assert_true(a.eql?(b)) + assert_false(a.eql?(c)) +end + assert('Hash#reject') do h = {:one => 1, :two => 2, :three => 3, :four => 4} ret = h.reject do |k,v| |
