Skip to content

Instantly share code, notes, and snippets.

@pochi
Created October 29, 2012 11:41
Show Gist options
  • Save pochi/3973114 to your computer and use it in GitHub Desktop.
Save pochi/3973114 to your computer and use it in GitHub Desktop.
Sample IO.select
# coding: utf-8
require 'socket'
describe IO do
describe 'memo' do
before do
@test = nil
Thread.new { @test = "test" }.join
end
it { @test.should == "test" }
end
describe '#select(readers, writers, expects, timer)' do
before do
udp1 = UDPSocket.open()
udp2 = UDPSocket.open()
udp = UDPSocket.open()
udp1.bind('0.0.0.0', 10000)
udp2.bind('0.0.0.0', 10001)
@readers = [udp1, udp2]
@writers = []
@expects = nil
# 待ち受け時間
@timer = 3
@write_socket = Socket.pack_sockaddr_in(10000, '0.0.0.0')
@write_socket_1 = Socket.pack_sockaddr_in(10001, '0.0.0.0')
udp.send('Bowbow!', 0, @write_socket)
udp.send('Pochi', 0, @write_socket_1)
udp.close
end
context 'when send packet' do
subject { select(@readers) }
it { should be_instance_of(Array) }
end
context 'when send two packets' do
subject { select(@readers)[0] }
its(:size) { should == 2 }
end
describe 'read packet' do
subject { select(@readers)[0][0] }
it { should be_instance_of(UDPSocket) }
it { subject.recvfrom(10).should be_include('Bowbow!') }
end
after do
@readers.each { |s| s.close }
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment