PageRenderTime 55ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/test-mri/test/socket/test_ancdata.rb

http://github.com/MacRuby/MacRuby
Ruby | 66 lines | 62 code | 4 blank | 0 comment | 5 complexity | 95b345ecac102f0b85fe8571bc81abb3 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, LGPL-2.1
  1. require 'test/unit'
  2. require 'socket'
  3. class TestSocketAncData < Test::Unit::TestCase
  4. def test_int
  5. ancdata = Socket::AncillaryData.int(0, 0, 0, 123)
  6. assert_equal(123, ancdata.int)
  7. assert_equal([123].pack("i"), ancdata.data)
  8. end
  9. def test_ip_pktinfo
  10. addr = Addrinfo.ip("127.0.0.1")
  11. ifindex = 0
  12. spec_dst = Addrinfo.ip("127.0.0.2")
  13. begin
  14. ancdata = Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dst)
  15. rescue NotImplementedError
  16. return
  17. end
  18. assert_equal(Socket::AF_INET, ancdata.family)
  19. assert_equal(Socket::IPPROTO_IP, ancdata.level)
  20. assert_equal(Socket::IP_PKTINFO, ancdata.type)
  21. assert_equal(addr.ip_address, ancdata.ip_pktinfo[0].ip_address)
  22. assert_equal(ifindex, ancdata.ip_pktinfo[1])
  23. assert_equal(spec_dst.ip_address, ancdata.ip_pktinfo[2].ip_address)
  24. assert(ancdata.cmsg_is?(:IP, :PKTINFO))
  25. assert(ancdata.cmsg_is?("IP", "PKTINFO"))
  26. assert(ancdata.cmsg_is?(Socket::IPPROTO_IP, Socket::IP_PKTINFO))
  27. if defined? Socket::IPV6_PKTINFO
  28. assert(!ancdata.cmsg_is?(:IPV6, :PKTINFO))
  29. end
  30. ancdata2 = Socket::AncillaryData.ip_pktinfo(addr, ifindex)
  31. assert_equal(addr.ip_address, ancdata2.ip_pktinfo[2].ip_address)
  32. end
  33. def test_ipv6_pktinfo
  34. addr = Addrinfo.ip("::1")
  35. ifindex = 0
  36. begin
  37. ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
  38. rescue NotImplementedError
  39. return
  40. end
  41. assert_equal(Socket::AF_INET6, ancdata.family)
  42. assert_equal(Socket::IPPROTO_IPV6, ancdata.level)
  43. assert_equal(Socket::IPV6_PKTINFO, ancdata.type)
  44. assert_equal(addr.ip_address, ancdata.ipv6_pktinfo[0].ip_address)
  45. assert_equal(ifindex, ancdata.ipv6_pktinfo[1])
  46. assert_equal(addr.ip_address, ancdata.ipv6_pktinfo_addr.ip_address)
  47. assert_equal(ifindex, ancdata.ipv6_pktinfo_ifindex)
  48. assert(ancdata.cmsg_is?(:IPV6, :PKTINFO))
  49. assert(ancdata.cmsg_is?("IPV6", "PKTINFO"))
  50. assert(ancdata.cmsg_is?(Socket::IPPROTO_IPV6, Socket::IPV6_PKTINFO))
  51. if defined? Socket::IP_PKTINFO
  52. assert(!ancdata.cmsg_is?(:IP, :PKTINFO))
  53. end
  54. end
  55. if defined?(Socket::SCM_RIGHTS) && defined?(Socket::SCM_TIMESTAMP)
  56. def test_unix_rights
  57. assert_raise(TypeError) {
  58. Socket::AncillaryData.int(:UNIX, :SOL_SOCKET, :TIMESTAMP, 1).unix_rights
  59. }
  60. end
  61. end
  62. end if defined? Socket::AncillaryData