hash_ext_test.rb 2.1 KB
Newer Older
1
require 'test/unit'
2
require File.dirname(__FILE__) + '/../../lib/active_support/core_ext/hash'
3 4

class HashExtTest < Test::Unit::TestCase
5 6 7 8 9 10 11 12 13 14
  def setup
    @strings = { 'a' => 1, 'b' => 2 }
    @symbols = { :a  => 1, :b  => 2 }
    @mixed   = { :a  => 1, 'b' => 2 }
  end

  def test_methods
    h = {}
    assert_respond_to h, :symbolize_keys
    assert_respond_to h, :symbolize_keys!
15 16
    assert_respond_to h, :stringify_keys
    assert_respond_to h, :stringify_keys!
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
    assert_respond_to h, :to_options
    assert_respond_to h, :to_options!
  end

  def test_symbolize_keys
    assert_equal @symbols, @symbols.symbolize_keys
    assert_equal @symbols, @strings.symbolize_keys
    assert_equal @symbols, @mixed.symbolize_keys

    assert_raises(NoMethodError) { { [] => 1 }.symbolize_keys }
  end

  def test_symbolize_keys!
    assert_equal @symbols, @symbols.dup.symbolize_keys!
    assert_equal @symbols, @strings.dup.symbolize_keys!
    assert_equal @symbols, @mixed.dup.symbolize_keys!

    assert_raises(NoMethodError) { { [] => 1 }.symbolize_keys! }
  end

37 38 39 40 41 42 43 44 45 46 47 48
  def test_stringify_keys
    assert_equal @strings, @symbols.stringify_keys
    assert_equal @strings, @strings.stringify_keys
    assert_equal @strings, @mixed.stringify_keys
  end

  def test_stringify_keys!
    assert_equal @strings, @symbols.dup.stringify_keys!
    assert_equal @strings, @strings.dup.stringify_keys!
    assert_equal @strings, @mixed.dup.stringify_keys!
  end

49 50 51 52 53 54 55 56 57 58 59
  def test_indifferent_access
    @strings = @strings.with_indifferent_access
    @symbols = @symbols.with_indifferent_access
    @mixed   = @mixed.with_indifferent_access

    assert_equal @strings[:a], @strings["a"]
    assert_equal @symbols[:a], @symbols["a"]
    assert_equal @strings["b"], @mixed["b"]
    assert_equal @strings[:b], @mixed["b"]
  end

60 61 62 63 64 65 66 67 68
  def test_assert_valid_keys
    assert_nothing_raised do
      { :failure => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ])
    end
    
    assert_raises(ArgumentError, "Unknown key(s): failore") do
      { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ])
    end
  end
69
end