Sha256: 2be9505f6a5b75c2b7ed9a5c183125ef1b1b9ed7d69215a780535daf7276f481

Contents?: true

Size: 1.29 KB

Versions: 18

Compression:

Stored size: 1.29 KB

Contents

require File.expand_path('../../helper', __FILE__)

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

18 entries across 18 versions & 2 rubygems

Version Path
innate-2023.01.06 spec/innate/traited.rb
innate-2015.10.28 spec/innate/traited.rb
manveru-innate-2009.07 spec/innate/traited.rb
innate-2013.02.21 spec/innate/traited.rb
innate-2013.02 spec/innate/traited.rb
innate-2012.12 spec/innate/traited.rb
innate-2012.03 spec/innate/traited.rb
innate-2011.12 spec/innate/traited.rb
innate-2011.10 spec/innate/traited.rb
innate-2011.04 spec/innate/traited.rb
innate-2011.01 spec/innate/traited.rb
innate-2010.07 spec/innate/traited.rb
innate-2010.06.18 spec/innate/traited.rb
innate-2010.04 spec/innate/traited.rb
innate-2010.03 spec/innate/traited.rb
innate-2010.01 spec/innate/traited.rb
innate-2009.10 spec/innate/traited.rb
innate-2009.07 spec/innate/traited.rb