Sha256: 7b6e35502b67cef096b1b35418e8ef29a2af2eea96378c7e78da32d6701c7af0

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

describe Enum do
  describe 'using attributes' do
    
    module AttrTest
      enum :first, 1
      enum :second, 2
    end
    
    class AttrClass
      enum_attr :pos => AttrTest
      enum_attr :attr_test, :bob => AttrTest
    end
    
    before do
      @obj = AttrClass.new
    end
    
    it 'should support declaring enum attributes' do
      Module.should respond_to(:enum_attr)
      @obj.should respond_to(:attr_test_second?)
      @obj.should respond_to(:bob_as_name)
    end
    
    it 'should allow getting an attribute in key form' do
      @obj.pos = AttrTest::SECOND
      @obj.pos_as_key.should == :second
    end
    
    it 'should allow getting an attribute in name form' do
      @obj.pos = 1
      @obj.pos_as_name.should == 'First'
    end
    
    it 'should raise on setting invalid values' do
      expect { @obj.pos = 4000 }.to raise_error
    end
    
    it 'should convert strings that are ints to ints on setting values' do
      @obj.pos = '1'
      @obj.pos.should == 1
    end
    
    it 'should set empty strings as nil' do
      @obj.pos = ''
      @obj.pos.should be_nil
    end
    
    it 'should raise on setting to invalid strings' do
      expect {@obj.pos = 'abc'}.to raise_error
      expect {@obj.pos = '1a'}.to raise_error
    end
  
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
iron-enum-1.0.5 spec/enum/attr_spec.rb