Sha256: 671b11e23012e44af0be0711a9b45d390903a87d8b3ada8355a75fcf292e833c

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
require 'pp'

describe WoolClass do
  before do
    @a = WoolClass.new('A')
    @b = WoolClass.new('B') do |b|
      b.add_method(WoolMethod.new('foo') do |method|
        method.add_signature(@a.protocol, [])
        method.add_signature(b.protocol, [@a.protocol])
      end)
      b.add_method(WoolMethod.new('bar') do |method|
        method.add_signature(b.protocol, [@a.protocol, b.protocol])
      end)
    end
  end
  
  context '#signatures' do
    it 'returns an empty list when no methods are declared' do
      @a.signatures.should be_empty
    end
    
    it "flattens all its method's signatures" do
      @b.signatures.should include(Signature.new('foo', @a.protocol, []))
      @b.signatures.should include(Signature.new('foo', @b.protocol, [@a.protocol]))
      @b.signatures.should include(
          Signature.new('bar', @b.protocol, [@a.protocol, @b.protocol]))
    end
  end
end

describe WoolMethod do
  before do
    @a = WoolClass.new('A')
    @b = WoolClass.new('B')
    @method = WoolMethod.new('foobar')
  end
  
  context '#add_signature' do
    it 'creates signature objects and returns them in #signatures' do
      @method.add_signature(@a.protocol, [])
      @method.add_signature(@b.protocol, [@a.protocol, @a.protocol])
      @method.signatures.should include(Signature.new('foobar', @a.protocol, []))
      @method.signatures.should include(
          Signature.new('foobar', @b.protocol, [@a.protocol, @a.protocol]))
    end
  end
  
  context '#name' do
    it 'returns the name' do
      @method.name.should == 'foobar'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wool-0.5.1 spec/analysis_specs/wool_class_spec.rb