about summary refs log tree commit homepage
path: root/test/test_peek.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_peek.rb')
-rw-r--r--test/test_peek.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/test_peek.rb b/test/test_peek.rb
new file mode 100644
index 0000000..9d4475d
--- /dev/null
+++ b/test/test_peek.rb
@@ -0,0 +1,35 @@
+require 'test/unit'
+$-w = true
+require 'kgio'
+
+class TestPeek < Test::Unit::TestCase
+  class EIEIO < Errno::EIO
+  end
+
+  def teardown
+    @rd.close
+    @wr.close
+  end
+
+  def test_peek
+    @rd, @wr = Kgio::UNIXSocket.pair
+    @wr.kgio_write "HELLO"
+    assert_equal "HELLO", @rd.kgio_peek(5)
+    assert_equal "HELLO", @rd.kgio_trypeek(5)
+    assert_equal "HELLO", @rd.kgio_read(5)
+    assert_equal :wait_readable, @rd.kgio_trypeek(5)
+    def @rd.kgio_wait_readable
+      raise EIEIO
+    end
+    assert_raises(EIEIO) { @rd.kgio_peek(5) }
+  end
+
+  def test_peek_singleton
+    @rd, @wr = UNIXSocket.pair
+    @wr.syswrite "HELLO"
+    assert_equal "HELLO", Kgio.trypeek(@rd, 666)
+    assert_equal "HELLO", Kgio.trypeek(@rd, 666)
+    assert_equal "HELLO", Kgio.tryread(@rd, 666)
+    assert_equal :wait_readable, Kgio.trypeek(@rd, 5)
+  end
+end