Sha256: cecb09f15c7aeb8295d6f44d94dab0e6dfabb9d39f1f90bb3aa02fc315b5bc50

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

require File.expand_path('../../fixtures/classes', __FILE__)

describe "Socket::IPSocket#recvfrom" do

  before :each do
    @server = TCPServer.new("127.0.0.1", SocketSpecs.port)
    @client = TCPSocket.new("127.0.0.1", SocketSpecs.port)
  end

  after :each do
    @server.close unless @server.closed?
    @client.close unless @client.closed?
  end

  it "reads data from the connection" do
    data = nil
    t = Thread.new do
      client = @server.accept
      data = client.recvfrom(6)
      client.close
    end

    @client.send('hello', 0)
    @client.shutdown rescue nil
    # shutdown may raise Errno::ENOTCONN when sent data is pending.
    t.join

    data.first.should == 'hello'
  end

  it "reads up to len bytes" do
    data = nil
    t = Thread.new do
      client = @server.accept
      data = client.recvfrom(3)
      client.close
    end

    @client.send('hello', 0)
    @client.shutdown rescue nil
    t.join

    data.first.should == 'hel'
  end

  it "returns an array with the data and connection info" do
    data = nil
    t = Thread.new do
      client = @server.accept
      data = client.recvfrom(3)
      client.close
    end

    @client.send('hello', 0)
    @client.shutdown rescue nil
    t.join

    data.size.should == 2
    data.first.should == "hel"
    # This does not apply to every platform, dependant on recvfrom(2)
    # data.last.should == nil
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rubysl-socket-1.0.1 spec/ipsocket/recvfrom_spec.rb
rubysl-socket-2.0.1 spec/ipsocket/recvfrom_spec.rb
rubysl-socket-1.0.0 spec/ipsocket/recvfrom_spec.rb
rubysl-socket-2.0.0 spec/ipsocket/recvfrom_spec.rb