summaryrefslogtreecommitdiff
path: root/spec/ruby/library/stringio/printf_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/stringio/printf_spec.rb')
-rw-r--r--spec/ruby/library/stringio/printf_spec.rb49
1 files changed, 35 insertions, 14 deletions
diff --git a/spec/ruby/library/stringio/printf_spec.rb b/spec/ruby/library/stringio/printf_spec.rb
index 3978896621..ae7e0af729 100644
--- a/spec/ruby/library/stringio/printf_spec.rb
+++ b/spec/ruby/library/stringio/printf_spec.rb
@@ -4,17 +4,17 @@ require_relative '../../core/kernel/shared/sprintf'
describe "StringIO#printf" do
before :each do
- @io = StringIO.new('example')
+ @io = StringIO.new()
end
it "returns nil" do
- @io.printf("%d %04x", 123, 123).should be_nil
+ @io.printf("%d %04x", 123, 123).should == nil
end
it "pads self with \\000 when the current position is after the end" do
- @io.pos = 10
+ @io.pos = 3
@io.printf("%d", 123)
- @io.string.should == "example\000\000\000123"
+ @io.string.should == "\000\000\000123"
end
it "performs format conversion" do
@@ -24,24 +24,45 @@ describe "StringIO#printf" do
it "updates the current position" do
@io.printf("%d %04x", 123, 123)
- @io.pos.should eql(8)
+ @io.pos.should.eql?(8)
@io.printf("%d %04x", 123, 123)
- @io.pos.should eql(16)
+ @io.pos.should.eql?(16)
end
describe "formatting" do
- it_behaves_like :kernel_sprintf, -> (format, *args) {
- io = StringIO.new
+ it_behaves_like :kernel_sprintf, -> format, *args {
+ io = StringIO.new(+"")
io.printf(format, *args)
io.string
}
end
end
+describe "StringIO#printf when in read-write mode" do
+ before :each do
+ @io = StringIO.new(+"example", "r+")
+ end
+
+ it "starts from the beginning" do
+ @io.printf("%s", "abcdefghijk")
+ @io.string.should == "abcdefghijk"
+ end
+
+ it "does not truncate existing string" do
+ @io.printf("%s", "abc")
+ @io.string.should == "abcmple"
+ end
+
+ it "correctly updates self's position" do
+ @io.printf("%s", "abc")
+ @io.pos.should.eql?(3)
+ end
+end
+
describe "StringIO#printf when in append mode" do
before :each do
- @io = StringIO.new("example", "a")
+ @io = StringIO.new(+"example", "a")
end
it "appends the passed argument to the end of self" do
@@ -54,17 +75,17 @@ describe "StringIO#printf when in append mode" do
it "correctly updates self's position" do
@io.printf("%d %04x", 123, 123)
- @io.pos.should eql(15)
+ @io.pos.should.eql?(15)
end
end
describe "StringIO#printf when self is not writable" do
it "raises an IOError" do
- io = StringIO.new("test", "r")
- lambda { io.printf("test") }.should raise_error(IOError)
+ io = StringIO.new(+"test", "r")
+ -> { io.printf("test") }.should.raise(IOError)
- io = StringIO.new("test")
+ io = StringIO.new(+"test")
io.close_write
- lambda { io.printf("test") }.should raise_error(IOError)
+ -> { io.printf("test") }.should.raise(IOError)
end
end