Sha256: baa8089a19eab462ba03f86a3d5c08cbad047bcfaf4bb9511816aa8dc4bb08dd

Contents?: true

Size: 1.13 KB

Versions: 8

Compression:

Stored size: 1.13 KB

Contents

shared_examples_for "A valid type implementation" do

  it 'should have exemplars available' do
    type.exemplars.should_not be_empty
    type.exemplars.each do |value|
      (type === value).should be_true
    end
  end

  it 'should define dupable values' do
    type.exemplars.each do |ex|
      ex.dup.should eq(ex)
      ex.dup.object_id.should_not eq(ex.object_id)
    end
  end

  it 'should define values that appear same in arrays' do
    type.exemplars.each do |ex|
      [ex, ex.dup, ex].uniq.should eq([ex])
    end
  end

  it 'should define values with correct hash codes' do
    type.exemplars.each do |ex|
      ex.dup.hash.should eq(ex.hash)
    end
  end

  it 'should define values that can be used as Hash keys' do
    type.exemplars.each do |ex|
      {ex => 1, ex.dup => 2}.size.should eq(1)
    end
  end

  it 'should define values respecting the :to_ruby_literal spec' do
    type.exemplars.each do |ex|
      Kernel.eval(ex.to_ruby_literal).should eq(ex)
    end
  end

  it 'should define values respecting the :inspect spec' do
    type.exemplars.each do |ex|
      Kernel.eval(ex.inspect).should eq(ex)
    end
  end

end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
alf-core-0.14.0 spec/shared/a_valid_type_implementation.rb
alf-core-0.13.1 spec/shared/a_valid_type_implementation.rb
alf-core-0.13.0 spec/shared/a_valid_type_implementation.rb
alf-0.12.2 spec/shared/a_valid_type_implementation.rb
alf-0.12.1 spec/shared/a_valid_type_implementation.rb
alf-0.12.0 spec/shared/a_valid_type_implementation.rb
alf-0.11.1 spec/shared/a_valid_type_implementation.rb
alf-0.11.0 spec/shared/a_valid_type_implementation.rb