summaryrefslogtreecommitdiff
path: root/spec/ruby/library/stringio/read_nonblock_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/stringio/read_nonblock_spec.rb')
-rw-r--r--spec/ruby/library/stringio/read_nonblock_spec.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/ruby/library/stringio/read_nonblock_spec.rb b/spec/ruby/library/stringio/read_nonblock_spec.rb
new file mode 100644
index 0000000000..38ae7541ca
--- /dev/null
+++ b/spec/ruby/library/stringio/read_nonblock_spec.rb
@@ -0,0 +1,53 @@
+require_relative '../../spec_helper'
+require "stringio"
+require_relative 'shared/read'
+require_relative 'shared/sysread'
+
+describe "StringIO#read_nonblock when passed length, buffer" do
+ it_behaves_like :stringio_read, :read_nonblock
+
+ it "accepts :exception option" do
+ io = StringIO.new("example")
+ io.read_nonblock(3, buffer = +"", exception: true)
+ buffer.should == "exa"
+ end
+end
+
+describe "StringIO#read_nonblock when passed length" do
+ it_behaves_like :stringio_read_length, :read_nonblock
+
+ it "accepts :exception option" do
+ io = StringIO.new("example")
+ io.read_nonblock(3, exception: true).should == "exa"
+ end
+end
+
+describe "StringIO#read_nonblock when passed nil" do
+ it_behaves_like :stringio_read_nil, :read_nonblock
+end
+
+describe "StringIO#read_nonblock when passed length" do
+ it_behaves_like :stringio_sysread_length, :read_nonblock
+end
+
+describe "StringIO#read_nonblock" do
+
+ it "accepts an exception option" do
+ stringio = StringIO.new('foo')
+ stringio.read_nonblock(3, exception: false).should == 'foo'
+ end
+
+ context "when exception option is set to false" do
+ context "when the end is reached" do
+ it "returns nil" do
+ stringio = StringIO.new(+'')
+ stringio << "hello"
+ stringio.rewind
+
+ stringio.read_nonblock(5).should == "hello"
+ stringio.read_nonblock(5, exception: false).should == nil
+ end
+ end
+ end
+
+end