File: traited.rb

package info (click to toggle)
libinnate-ruby 2010.07-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 812 kB
  • ctags: 621
  • sloc: ruby: 4,242; makefile: 2
file content (55 lines) | stat: -rw-r--r-- 1,321 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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