Sha256: c3e1568f8093fec5826f72e9c209c4cdd7e45781ec6af37562548b6b030b5065

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

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

describe SPNet::MessageOutPort do
  before :all do
    processor = lambda do |message|
      return message
    end
    @in_port = SPNet::MessageInPort.new :processor => processor, :message_type => SPNet::Message::CONTROL
  end

  before :each do
    processor = lambda do |message|
      return message
    end
    @in_port = SPNet::MessageInPort.new :processor => processor, :message_type => SPNet::Message::CONTROL
    @out_port = SPNet::MessageOutPort.new
  end

  describe '#add_link' do
    it 'should add the given input port to links' do
      @out_port.add_link @in_port
      @out_port.links.count.should be 1
      @out_port.links.first.should eq(@in_port)
    end

    it 'should also link the output port to the given input port' do
      @out_port.add_link @in_port
      @in_port.link.should eq(@out_port)
    end

    it 'should raise ArgumentError if the given input port is already linked' do
      @out_port.add_link @in_port
      lambda { @out_port.add_link(@in_port) }.should raise_error(ArgumentError)
    end
    
    it 'should raise ArgumentError if port is not input port' do
      @out_port2 = SPNet::MessageOutPort.new
      lambda { @out_port.add_link(@out_port2) }.should raise_error(ArgumentError)
    end
  end

  describe '#remove_link' do
    it 'should remove the given input port (if it is already linked to the output port)' do
      @out_port.add_link @in_port
      @out_port.remove_link @in_port
      @out_port.links.should be_empty
    end
  end
  
  describe '#send_message' do
    it 'should pass the given message via recv_message to the processing callback' do
      @out_port.add_link @in_port
      rv = @out_port.send_message SPNet::ControlMessage.make_set_message(5)
      rv.first.data.should eq(5)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spnet-0.1.2 spec/message_out_port_spec.rb
spnet-0.1.1 spec/message_out_port_spec.rb
spnet-0.1.0 spec/message_out_port_spec.rb