Sha256: 7a98bc595b34517b4dddab6bd0ebce9740885910b5bf8c5551e85be7dd303184

Contents?: true

Size: 1.07 KB

Versions: 22

Compression:

Stored size: 1.07 KB

Contents

require 'helper'

describe 'Hash#__nanoc_symbolize_keys_recursively' do
  it 'should convert keys to symbols' do
    hash_old = { 'foo' => 'bar' }
    hash_new = { foo: 'bar' }
    hash_old.__nanoc_symbolize_keys_recursively.must_equal hash_new
  end

  it 'should not require string keys' do
    hash_old = { Time.now => 'abc' }
    hash_new = hash_old
    hash_old.__nanoc_symbolize_keys_recursively.must_equal hash_new
  end
end

describe 'Hash#__nanoc_freeze_recursively' do
  include Nanoc::TestHelpers

  it 'should prevent first-level elements from being modified' do
    hash = { a: { b: :c } }
    hash.__nanoc_freeze_recursively

    assert_raises_frozen_error do
      hash[:a] = 123
    end
  end

  it 'should prevent second-level elements from being modified' do
    hash = { a: { b: :c } }
    hash.__nanoc_freeze_recursively

    assert_raises_frozen_error do
      hash[:a][:b] = 123
    end
  end

  it 'should not freeze infinitely' do
    a = {}
    a[:x] = a

    a.__nanoc_freeze_recursively

    assert a.frozen?
    assert a[:x].frozen?
    assert_equal a, a[:x]
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
nanoc-4.7.9 test/base/core_ext/hash_spec.rb
nanoc-4.7.8 test/base/core_ext/hash_spec.rb
nanoc-4.7.7 test/base/core_ext/hash_spec.rb
nanoc-4.7.6 test/base/core_ext/hash_spec.rb
nanoc-4.7.5 test/base/core_ext/hash_spec.rb
nanoc-4.7.4 test/base/core_ext/hash_spec.rb
nanoc-4.7.3 test/base/core_ext/hash_spec.rb
nanoc-4.7.2 test/base/core_ext/hash_spec.rb
nanoc-4.7.1 test/base/core_ext/hash_spec.rb
nanoc-4.7.0 test/base/core_ext/hash_spec.rb
nanoc-4.6.4 test/base/core_ext/hash_spec.rb
nanoc-4.6.3 test/base/core_ext/hash_spec.rb
nanoc-4.6.2 test/base/core_ext/hash_spec.rb
nanoc-4.6.1 test/base/core_ext/hash_spec.rb
nanoc-4.6.0 test/base/core_ext/hash_spec.rb
nanoc-4.5.4 test/base/core_ext/hash_spec.rb
nanoc-4.5.3 test/base/core_ext/hash_spec.rb
nanoc-4.5.2 test/base/core_ext/hash_spec.rb
nanoc-4.5.1 test/base/core_ext/hash_spec.rb
nanoc-4.5.0 test/base/core_ext/hash_spec.rb