~ubuntu-branches/ubuntu/raring/jruby/raring

« back to all changes in this revision

Viewing changes to test/externals/ruby1.9/socket/test_basicsocket.rb

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Delafond
  • Date: 2010-05-12 15:56:25 UTC
  • mfrom: (1.2.1 upstream) (4.1.1 maverick)
  • Revision ID: james.westby@ubuntu.com-20100512155625-sgdfaj1hn8k84090
Tags: 1.5.0~rc3-1
New upstream release (Closes: #581360).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
begin
 
2
  require "socket"
 
3
  require "test/unit"
 
4
rescue LoadError
 
5
end
 
6
 
 
7
class TestSocket_BasicSocket < Test::Unit::TestCase
 
8
  def inet_stream
 
9
    sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
 
10
    yield sock
 
11
  ensure
 
12
    assert_raise(IOError) {sock.close}
 
13
  end
 
14
 
 
15
  def test_getsockopt
 
16
    inet_stream do |s|
 
17
      n = s.getsockopt(Socket::SOL_SOCKET, Socket::SO_TYPE)
 
18
      assert_equal([Socket::SOCK_STREAM].pack("i"), n.data)
 
19
 
 
20
      n = s.getsockopt("SOL_SOCKET", "SO_TYPE")
 
21
      assert_equal([Socket::SOCK_STREAM].pack("i"), n.data)
 
22
 
 
23
      n = s.getsockopt(:SOL_SOCKET, :SO_TYPE)
 
24
      assert_equal([Socket::SOCK_STREAM].pack("i"), n.data)
 
25
 
 
26
      n = s.getsockopt(:SOCKET, :TYPE)
 
27
      assert_equal([Socket::SOCK_STREAM].pack("i"), n.data)
 
28
 
 
29
      n = s.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR)
 
30
      assert_equal([0].pack("i"), n.data)
 
31
 
 
32
      val = Object.new
 
33
      class << val; self end.send(:define_method, :to_int) {
 
34
        s.close
 
35
        Socket::SO_TYPE
 
36
      }
 
37
      assert_raise(IOError) {
 
38
        n = s.getsockopt(Socket::SOL_SOCKET, val)
 
39
      }
 
40
    end
 
41
  end
 
42
 
 
43
  def test_setsockopt
 
44
    s = nil
 
45
    linger = [0, 0].pack("ii")
 
46
 
 
47
    val = Object.new
 
48
    class << val; self end.send(:define_method, :to_str) {
 
49
      s.close
 
50
      linger
 
51
    }
 
52
    inet_stream do |sock|
 
53
      s = sock
 
54
      assert_equal(0, s.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, linger))
 
55
 
 
56
      assert_raise(IOError, "[ruby-dev:25039]") {
 
57
        s.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, val)
 
58
      }
 
59
    end
 
60
 
 
61
    val = Object.new
 
62
    class << val; self end.send(:define_method, :to_int) {
 
63
      s.close
 
64
      Socket::SO_LINGER
 
65
    }
 
66
    inet_stream do |sock|
 
67
      s = sock
 
68
      assert_raise(IOError) {
 
69
        s.setsockopt(Socket::SOL_SOCKET, val, linger)
 
70
      }
 
71
    end
 
72
  end
 
73
 
 
74
  def test_listen
 
75
    s = nil
 
76
    log = Object.new
 
77
    class << log; self end.send(:define_method, :to_int) {
 
78
      s.close
 
79
      2
 
80
    }
 
81
    inet_stream do |sock|
 
82
      s = sock
 
83
      assert_raise(IOError) {
 
84
        s.listen(log)
 
85
      }
 
86
    end
 
87
  end
 
88
end if defined?(BasicSocket)