# Ruby Treasures 0.1
# Copyright (C) 2001 Paul Brannan <paul@atdesk.com>
# 
# You may distribute this software under the same terms as Ruby (see the file
# COPYING that was distributed with this library).
# 
require 'ds_test_helpers.rb'
require 'hash_list'
requirelocal 'mixins/container_test'
requirelocal 'mixins/array_like_test'
requirelocal 'mixins/orderable_test'
requirelocal 'mixins/comparable_test'
requirelocal 'mixins/enumerable_test'
requirelocal 'mixins/indexable_test'
requirelocal 'mixins/reversable_test'
requirelocal 'mixins/reverse_enumerable_test'
requirelocal 'mixins/reverse_indexable_test'

N = 25

class HashListTest < DS_Test_Case
  include ContainerTest
  include ArrayLikeTest
  include OrderableTest
  include ComparableTest
  include EnumerableTest
  include IndexableTest
  include ReversableTest
  include ReverseEnumerableTest
  include ReverseIndexableTest

  def initialize(*args)
    super(*args)
    @test_container               = HashList
    @analgous_container           = ExtendedArray
  end

  def generate_container_from_analgous(array)
    l = HashList.new
    array.each do |i|
      l.push(i)
    end
    return l
  end
    
  def test_simple
    a = HashList.new
    N.times do |i|
      a.push(i)
    end
    N.times do |i|
      assert(a.shift == i)
    end
    N.times do |i|
      a.unshift(i)
    end
    N.times do |i|
      assert(a.pop == i)
    end
  end

end

exit run_test(HashListTest, HashList)

