kgio 1.3.1 - fix zero-length reads
[kgio.git] / test / test_accept_class.rb
blob3b5d34320656d21f0137638184c6249c57e33a27
1 require 'test/unit'
2 require 'io/nonblock'
3 $-w = true
4 require 'kgio'
6 class TestAcceptClass < Test::Unit::TestCase
7   def setup
8     assert_equal Kgio::Socket, Kgio.accept_class
9   end
11   def teardown
12     assert_nothing_raised { Kgio.accept_class = nil }
13     assert_equal Kgio::Socket, Kgio.accept_class
14   end
16   def test_tcp_socket
17     assert_nothing_raised { Kgio.accept_class = Kgio::TCPSocket }
18     assert_equal Kgio::TCPSocket, Kgio.accept_class
19   end
21   def test_invalid
22     assert_raises(TypeError) { Kgio.accept_class = TCPSocket }
23     assert_equal Kgio::Socket, Kgio.accept_class
24   end
26   def test_accepted_class
27     @host = ENV["TEST_HOST"] || '127.0.0.1'
28     @srv = Kgio::TCPServer.new(@host, 0)
29     @port = @srv.addr[1]
31     assert_nothing_raised { Kgio.accept_class = Kgio::TCPSocket }
32     client = TCPSocket.new(@host, @port)
33     assert_instance_of Kgio::TCPSocket, @srv.kgio_accept
34     client = TCPSocket.new(@host, @port)
35     IO.select([@srv])
36     assert_instance_of Kgio::TCPSocket, @srv.kgio_tryaccept
38     assert_nothing_raised { Kgio.accept_class = nil }
39     client = TCPSocket.new(@host, @port)
40     assert_instance_of Kgio::Socket, @srv.kgio_accept
41     client = TCPSocket.new(@host, @port)
42     IO.select([@srv])
43     assert_instance_of Kgio::Socket, @srv.kgio_tryaccept
45     assert_nothing_raised { Kgio.accept_class = Kgio::UNIXSocket }
46     client = TCPSocket.new(@host, @port)
47     assert_instance_of Kgio::UNIXSocket, @srv.kgio_accept
48     client = TCPSocket.new(@host, @port)
49     IO.select([@srv])
50     assert_instance_of Kgio::UNIXSocket, @srv.kgio_tryaccept
51   end
52 end