From 3fcc7b32c9ae0218a0311086ab1a8bbb9a2b2cbd Mon Sep 17 00:00:00 2001 From: Grant Rodgers Date: Wed, 25 Mar 2009 19:55:57 -0700 Subject: [PATCH] OrderedHash#shift should return nil on empty --- activesupport/lib/active_support/ordered_hash.rb | 1 + activesupport/test/ordered_hash_test.rb | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb index fed8094..0928582 100644 --- a/activesupport/lib/active_support/ordered_hash.rb +++ b/activesupport/lib/active_support/ordered_hash.rb @@ -78,6 +78,7 @@ module ActiveSupport end def shift + return nil if @keys.empty? k = @keys.first v = delete(k) [k, v] diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb index 7cd8c8a..fc1b047 100644 --- a/activesupport/test/ordered_hash_test.rb +++ b/activesupport/test/ordered_hash_test.rb @@ -148,6 +148,13 @@ class OrderedHashTest < Test::Unit::TestCase assert_equal [@keys.first, @values.first], pair assert !@ordered_hash.keys.include?(pair.first) end + + def test_shift_returns_nil_when_empty + while !@ordered_hash.empty? + @ordered_hash.shift + end + assert_nil @ordered_hash.shift + end def test_keys original = @ordered_hash.keys.dup -- 1.6.2