summaryrefslogtreecommitdiff
path: root/spec/ruby/library/stringio/readlines_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/stringio/readlines_spec.rb')
-rw-r--r--spec/ruby/library/stringio/readlines_spec.rb51
1 files changed, 34 insertions, 17 deletions
diff --git a/spec/ruby/library/stringio/readlines_spec.rb b/spec/ruby/library/stringio/readlines_spec.rb
index 11217d1e59..821a8169e7 100644
--- a/spec/ruby/library/stringio/readlines_spec.rb
+++ b/spec/ruby/library/stringio/readlines_spec.rb
@@ -1,5 +1,5 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
+require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe "StringIO#readlines when passed [separator]" do
before :each do
@@ -12,12 +12,12 @@ describe "StringIO#readlines when passed [separator]" do
it "updates self's position based on the number of read bytes" do
@io.readlines(">")
- @io.pos.should eql(18)
+ @io.pos.should.eql?(18)
end
it "updates self's lineno based on the number of read lines" do
@io.readlines(">")
- @io.lineno.should eql(4)
+ @io.lineno.should.eql?(4)
end
it "does not change $_" do
@@ -51,21 +51,22 @@ describe "StringIO#readlines when passed no argument" do
it "returns an Array containing lines based on $/" do
begin
- old_sep, $/ = $/, " "
+ old_sep = $/;
+ suppress_warning {$/ = " "}
@io.readlines.should == ["this ", "is\nan ", "example\nfor ", "StringIO#readlines"]
ensure
- $/ = old_sep
+ suppress_warning {$/ = old_sep}
end
end
it "updates self's position based on the number of read bytes" do
@io.readlines
- @io.pos.should eql(41)
+ @io.pos.should.eql?(41)
end
it "updates self's lineno based on the number of read lines" do
@io.readlines
- @io.lineno.should eql(3)
+ @io.lineno.should.eql?(3)
end
it "does not change $_" do
@@ -82,20 +83,36 @@ end
describe "StringIO#readlines when in write-only mode" do
it "raises an IOError" do
- io = StringIO.new("xyz", "w")
- lambda { io.readlines }.should raise_error(IOError)
+ io = StringIO.new(+"xyz", "w")
+ -> { io.readlines }.should.raise(IOError)
io = StringIO.new("xyz")
io.close_read
- lambda { io.readlines }.should raise_error(IOError)
+ -> { io.readlines }.should.raise(IOError)
end
end
-ruby_version_is "2.4" do
- describe "StringIO#readlines when passed [chomp]" do
- it "returns the data read without a trailing newline character" do
- io = StringIO.new("this>is\nan>example\r\n")
- io.readlines(chomp: true).should == ["this>is", "an>example"]
- end
+describe "StringIO#readlines when passed [chomp]" do
+ it "returns the data read without a trailing newline character" do
+ io = StringIO.new("this>is\nan>example\r\n")
+ io.readlines(chomp: true).should == ["this>is", "an>example"]
+ end
+end
+
+describe "StringIO#readlines when passed [limit]" do
+ before :each do
+ @io = StringIO.new("a b c d e\n1 2 3 4 5")
+ end
+
+ it "returns the data read until the limit is met" do
+ @io.readlines(4).should == ["a b ", "c d ", "e\n", "1 2 ", "3 4 ", "5"]
+ end
+
+ it "raises ArgumentError when limit is 0" do
+ -> { @io.readlines(0) }.should.raise(ArgumentError)
+ end
+
+ it "ignores it when the limit is negative" do
+ @io.readlines(-4).should == ["a b c d e\n", "1 2 3 4 5"]
end
end