summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-socket/test/unix.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-12-07 18:11:13 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-12-07 18:11:13 +0900
commit73ef548c6386a1101b5d95654bcb142ab83149c7 (patch)
tree8b9a653db38f95ab8bc6858cfc62c9277e6362fb /mrbgems/mruby-socket/test/unix.rb
parentd75266dd1bade53255044460a9cd74596addaa84 (diff)
parentab54185005ec87fe4f5b10df95ad29659884141b (diff)
downloadmruby-73ef548c6386a1101b5d95654bcb142ab83149c7.tar.gz
mruby-73ef548c6386a1101b5d95654bcb142ab83149c7.zip
Add 'mrbgems/mruby-socket/' from commit 'ab54185005ec87fe4f5b10df95ad29659884141b'
git-subtree-dir: mrbgems/mruby-socket git-subtree-mainline: d75266dd1bade53255044460a9cd74596addaa84 git-subtree-split: ab54185005ec87fe4f5b10df95ad29659884141b
Diffstat (limited to 'mrbgems/mruby-socket/test/unix.rb')
-rw-r--r--mrbgems/mruby-socket/test/unix.rb126
1 files changed, 126 insertions, 0 deletions
diff --git a/mrbgems/mruby-socket/test/unix.rb b/mrbgems/mruby-socket/test/unix.rb
new file mode 100644
index 000000000..88ad17101
--- /dev/null
+++ b/mrbgems/mruby-socket/test/unix.rb
@@ -0,0 +1,126 @@
+def unixserver_test_block
+ path = SocketTest.tmppath
+ File.unlink path rescue nil
+ begin
+ result = yield path
+ ensure
+ File.unlink path rescue nil
+ end
+ result
+end
+
+def with_unix_server
+ unixserver_test_block do |path|
+ UNIXServer.open(path) { |server|
+ yield path, server
+ }
+ end
+end
+
+def with_unix_client
+ with_unix_server do |path, server|
+ UNIXSocket.open(path) do |csock|
+ ssock = server.accept
+ begin
+ yield path, server, ssock, csock
+ ensure
+ ssock.close unless ssock.closed? rescue nil
+ end
+ end
+ end
+end
+
+assert('UNIXServer.new') do
+ unixserver_test_block do |path|
+ server = UNIXServer.new(path)
+ assert_true server.is_a? UNIXServer
+ server.close
+ File.unlink path
+
+ s2 = nil
+ result = UNIXServer.open(path) { |s1|
+ assert_true s1.is_a? UNIXServer
+ s2 = s1
+ 1234
+ }
+ assert_equal 1234, result
+ assert_true s2.is_a? UNIXServer
+ assert_true s2.closed?
+ end
+end
+
+# assert('UNIXServer#accept_nonblock') - would block if fails
+
+assert('UNIXServer#addr') do
+ with_unix_server do |path, server|
+ assert_equal [ "AF_UNIX", path], server.addr
+ end
+end
+
+assert('UNIXServer#path') do
+ with_unix_server do |path, server|
+ assert_equal path, server.path
+ end
+end
+
+# assert('UNIXServer#peeraddr') - will raise a runtime exception
+
+assert('UNIXServer#listen') do
+ with_unix_server do |path, server|
+ assert_equal 0, server.listen(1)
+ end
+end
+
+assert('UNIXServer#sysaccept') do
+ with_unix_server do |path, server|
+ UNIXSocket.open(path) do |csock|
+ begin
+ fd = server.sysaccept
+ assert_true fd.kind_of? Integer
+ ensure
+ IO._sysclose(fd) rescue nil
+ end
+ end
+ end
+end
+
+assert('UNIXSocket.new') do
+ with_unix_server do |path, server|
+ c = UNIXSocket.new(path)
+ assert_true c.is_a? UNIXSocket
+ c.close
+ true
+ end
+end
+
+assert('UNIXSocket#addr') do
+ with_unix_client do |path, server, ssock, csock|
+ assert_equal [ "AF_UNIX", path ], ssock.addr
+ assert_equal [ "AF_UNIX", "" ], csock.addr
+ end
+end
+
+assert('UNIXSocket#path') do
+ with_unix_client do |path, server, ssock, csock|
+ assert_equal path, ssock.path
+ assert_equal "", csock.path
+ end
+end
+
+assert('UNIXSocket#peeraddr') do
+ with_unix_client do |path, server, ssock, csock|
+ assert_equal [ "AF_UNIX", "" ], ssock.peeraddr
+ assert_equal [ "AF_UNIX", path ], csock.peeraddr
+ end
+end
+
+assert('UNIXSocket#recvfrom') do
+ with_unix_client do |path, server, ssock, csock|
+ str = "0123456789"
+ ssock.send str, 0
+ a = csock.recvfrom(8)
+ assert_equal str[0, 8], a[0]
+ assert_equal "AF_UNIX", a[1][0]
+ # a[1][1] would be "" or something
+ end
+end