Sha256: 34093a1ffd70205d6809e4f4338edd55329212e641e089e92a1d4d547d5992f0

Contents?: true

Size: 1.4 KB

Versions: 27

Compression:

Stored size: 1.4 KB

Contents

require 'test_helper'

class OrderedHashTest < Test::Unit::TestCase

  context 'An OrderedHash' do
    setup do
      @hash = Zafu::OrderedHash.new
      @hash[:a] = 1
      @hash[:c] = 2
      @hash[:b] = 3
    end

    should 'keep keys in insertion order' do
      assert_equal [:a, :c, :b], @hash.keys
    end

    should 'list each in insertion order' do
      res = []
      @hash.each do |k, v|
        res << v
      end
      assert_equal [1, 2, 3], res
    end

    should 'remove entry on delete' do
      @hash.delete(:c)
      assert_equal [:a, :b], @hash.keys
    end
    
    context 'running through keys' do
      should 'allow key alteration' do
        @hash.keys.each do |k|
          assert k != :d
          @hash[:d] = 'x'
        end
      end
    end
    
    context 'running each' do
      should 'allow key alteration' do
        @hash.each do |k, v|
          assert k != :d
          @hash[:d] = 'x'
        end
      end
    end

    context 'with a duplicate' do
      setup do
        @dup = @hash.dup
      end

      should 'not alter duplicate on set' do
        @hash[:d] = 4
        assert_equal [:a, :c, :b], @dup.keys
      end

      should 'not alter duplicate on change' do
        @hash[:a] = 10
        assert_equal 1, @dup[:a]
      end

      should 'not alter duplicate on delete' do
        @hash.delete(:a)
        assert_equal [:a, :c, :b], @dup.keys
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
zena-1.2.8 test/unit/zafu_ordered_hash_test.rb
zena-1.2.7 test/unit/zafu_ordered_hash_test.rb
zena-1.2.6 test/unit/zafu_ordered_hash_test.rb
zena-1.2.5 test/unit/zafu_ordered_hash_test.rb
zena-1.2.4 test/unit/zafu_ordered_hash_test.rb
zena-1.2.3 test/unit/zafu_ordered_hash_test.rb
zena-1.2.2 test/unit/zafu_ordered_hash_test.rb
zafu-0.8.6 test/ordered_hash_test.rb
zafu-0.8.5 test/ordered_hash_test.rb
zafu-0.8.4 test/ordered_hash_test.rb
zafu-0.8.3 test/ordered_hash_test.rb
zafu-0.8.2 test/ordered_hash_test.rb
zafu-0.8.0 test/ordered_hash_test.rb
zafu-0.7.9 test/ordered_hash_test.rb
zafu-0.7.8 test/ordered_hash_test.rb
zafu-0.7.7 test/ordered_hash_test.rb
zafu-0.7.6 test/ordered_hash_test.rb
zafu-0.7.5 test/ordered_hash_test.rb
zafu-0.7.4 test/ordered_hash_test.rb
zafu-0.7.3 test/ordered_hash_test.rb