1require 'test/unit' 2require 'socket' 3 4class TestSocketOption < Test::Unit::TestCase 5 def test_new 6 data = [1].pack("i") 7 sockopt = Socket::Option.new(:INET, :SOCKET, :KEEPALIVE, data) 8 assert_equal(Socket::AF_INET, sockopt.family) 9 assert_equal(Socket::SOL_SOCKET, sockopt.level) 10 assert_equal(Socket::SO_KEEPALIVE, sockopt.optname) 11 assert_equal(Socket::SO_KEEPALIVE, sockopt.optname) 12 assert_equal(data, sockopt.data) 13 end 14 15 def test_bool 16 opt = Socket::Option.bool(:INET, :SOCKET, :KEEPALIVE, true) 17 assert_equal(1, opt.int) 18 opt = Socket::Option.bool(:INET, :SOCKET, :KEEPALIVE, false) 19 assert_equal(0, opt.int) 20 opt = Socket::Option.int(:INET, :SOCKET, :KEEPALIVE, 0) 21 assert_equal(false, opt.bool) 22 opt = Socket::Option.int(:INET, :SOCKET, :KEEPALIVE, 1) 23 assert_equal(true, opt.bool) 24 opt = Socket::Option.int(:INET, :SOCKET, :KEEPALIVE, 2) 25 assert_equal(true, opt.bool) 26 end 27 28 def test_unpack 29 sockopt = Socket::Option.new(:INET, :SOCKET, :KEEPALIVE, [1].pack("i")) 30 assert_equal([1], sockopt.unpack("i")) 31 assert_equal([1], sockopt.data.unpack("i")) 32 end 33end 34