aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/ordered_hash_test.rb
diff options
context:
space:
mode:
authorFrederick Cheung <frederick.cheung@gmail.com>2008-12-11 15:19:03 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2008-12-15 15:34:29 +0100
commit4dcd8f01afe5800baa67bbdf72832afb0d627755 (patch)
tree7f0a67dea09240b8fd1bb4ba6f338971345fd850 /activesupport/test/ordered_hash_test.rb
parent49306ccacf01e36d444771d42321965616e226f0 (diff)
downloadrails-4dcd8f01afe5800baa67bbdf72832afb0d627755.tar.gz
rails-4dcd8f01afe5800baa67bbdf72832afb0d627755.tar.bz2
rails-4dcd8f01afe5800baa67bbdf72832afb0d627755.zip
Make delete_if/reject faster and fix other mutators
[#1559 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activesupport/test/ordered_hash_test.rb')
-rw-r--r--activesupport/test/ordered_hash_test.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb
index ca5fce6267..0e2aa4543d 100644
--- a/activesupport/test/ordered_hash_test.rb
+++ b/activesupport/test/ordered_hash_test.rb
@@ -36,9 +36,11 @@ class OrderedHashTest < Test::Unit::TestCase
@ordered_hash[key] = value
assert_equal @keys.length + 1, @ordered_hash.length
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
assert_equal value, @ordered_hash.delete(key)
assert_equal @keys.length, @ordered_hash.length
+ assert_equal @ordered_hash.keys.length, @ordered_hash.length
assert_nil @ordered_hash.delete(bad_key)
end
@@ -84,6 +86,17 @@ class OrderedHashTest < Test::Unit::TestCase
@ordered_hash.each_with_index { |pair, index| assert_equal [@keys[index], @values[index]], pair}
end
+ def test_each_pair
+ values = []
+ keys = []
+ @ordered_hash.each_pair do |key, value|
+ keys << key
+ values << value
+ end
+ assert_equal @values, values
+ assert_equal @keys, keys
+ end
+
def test_delete_if
(copy = @ordered_hash.dup).delete('pink')
assert_equal copy, @ordered_hash.delete_if { |k, _| k == 'pink' }
@@ -103,4 +116,28 @@ class OrderedHashTest < Test::Unit::TestCase
assert_equal copy, @ordered_hash
assert !new_ordered_hash.keys.include?('pink')
end
+
+ def test_clear
+ @ordered_hash.clear
+ assert_equal [], @ordered_hash.keys
+ end
+
+ def test_merge
+ other_hash = ActiveSupport::OrderedHash.new
+ other_hash['purple'] = '800080'
+ other_hash['violet'] = 'ee82ee'
+ merged = @ordered_hash.merge other_hash
+ assert_equal merged.length, @ordered_hash.length + other_hash.length
+ assert_equal @keys + ['purple', 'violet'], merged.keys
+
+ @ordered_hash.merge! other_hash
+ assert_equal @ordered_hash, merged
+ assert_equal @ordered_hash.keys, merged.keys
+ end
+
+ def test_shift
+ pair = @ordered_hash.shift
+ assert_equal [@keys.first, @values.first], pair
+ assert !@ordered_hash.keys.include?(pair.first)
+ end
end \ No newline at end of file