Sha256: 1761f31184726efa9f91479cb314cc247c754ddc4f290a4e61ac4e83a5cfca22

Contents?: true

Size: 1.26 KB

Versions: 19

Compression:

Stored size: 1.26 KB

Contents

require 'spec/helper'

class Animal
  include Innate::Traited
end

class Cat < Animal
end

class Tiger < Animal
end

describe Innate::Traited do
  should 'set trait on superclass' do
    Animal.trait :wild => :depends
    Animal.trait[:wild].should == :depends
  end

  should 'reset trait on superclass' do
    Animal.trait :wild => :naturally
    Animal.trait[:wild].should == :naturally
  end

  should 'set trait on instance' do
    animal = Animal.new
    animal.trait[:wild].should == nil
    animal.trait :wild => :depends
    animal.trait[:wild].should == :depends
  end

  should 'get ancestral trait from instance' do
    animal = Animal.new
    animal.ancestral_trait[:wild].should == :naturally
    animal.trait :wild => :depends
    animal.ancestral_trait[:wild].should == :depends
  end

  should 'set trait on subclass' do
    Cat.trait :sound => :meow
    Cat.trait[:sound].should == :meow
  end

  should 'not modify traits of other classes' do
    Animal.trait[:sound].should == nil
    Tiger.trait[:sound].should == nil
  end

  should 'get ancestral trait from class in superclass' do
    Cat.ancestral_trait[:wild].should == :naturally
  end

  should 'get ancestral trait from instance in superclass' do
    Cat.new.ancestral_trait[:wild].should == :naturally
  end
end

Version data entries

19 entries across 19 versions & 3 rubygems

Version Path
manveru-innate-2009.02.06 spec/innate/traited.rb
manveru-innate-2009.02.21 spec/innate/traited.rb
manveru-innate-2009.02.25 spec/innate/traited.rb
manveru-innate-2009.03.24 spec/innate/traited.rb
manveru-innate-2009.04.01 spec/innate/traited.rb
manveru-innate-2009.04.08 spec/innate/traited.rb
manveru-innate-2009.04.18 spec/innate/traited.rb
manveru-innate-2009.04 spec/innate/traited.rb
manveru-innate-2009.05 spec/innate/traited.rb
manveru-innate-2009.06.12 spec/innate/traited.rb
manveru-innate-2009.06 spec/innate/traited.rb
rjspotter-innate-2009.06.29 spec/innate/traited.rb
rjspotter-innate-2009.06.30 spec/innate/traited.rb
rjspotter-innate-2009.06.31 spec/innate/traited.rb
innate-2009.04.12 spec/innate/traited.rb
innate-2009.04 spec/innate/traited.rb
innate-2009.06.12 spec/innate/traited.rb
innate-2009.06 spec/innate/traited.rb
innate-2009.05 spec/innate/traited.rb