summaryrefslogtreecommitdiff
path: root/spec/ruby/core/kernel/printf_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/kernel/printf_spec.rb')
-rw-r--r--spec/ruby/core/kernel/printf_spec.rb21
1 files changed, 16 insertions, 5 deletions
diff --git a/spec/ruby/core/kernel/printf_spec.rb b/spec/ruby/core/kernel/printf_spec.rb
index 4592c08aaf..50939b3794 100644
--- a/spec/ruby/core/kernel/printf_spec.rb
+++ b/spec/ruby/core/kernel/printf_spec.rb
@@ -1,11 +1,10 @@
require_relative '../../spec_helper'
require_relative 'fixtures/classes'
require_relative 'shared/sprintf'
-require "stringio"
describe "Kernel#printf" do
it "is a private method" do
- Kernel.should have_private_instance_method(:printf)
+ Kernel.private_instance_methods(false).should.include?(:printf)
end
end
@@ -33,10 +32,23 @@ describe "Kernel.printf" do
Kernel.printf(object, "%s", "string")
end
+ it "calls #to_str to convert the format object to a String" do
+ object = mock('format string')
+ object.should_receive(:to_str).and_return("to_str: %i")
+ $stdout.should_receive(:write).with("to_str: 42")
+ Kernel.printf($stdout, object, 42)
+ end
+end
+
+describe "Kernel.printf" do
describe "formatting" do
+ before :each do
+ require "stringio"
+ end
+
context "io is specified" do
it_behaves_like :kernel_sprintf, -> format, *args {
- io = StringIO.new
+ io = StringIO.new(+"")
Kernel.printf(io, format, *args)
io.string
}
@@ -45,9 +57,8 @@ describe "Kernel.printf" do
context "io is not specified" do
it_behaves_like :kernel_sprintf, -> format, *args {
stdout = $stdout
-
begin
- $stdout = io = StringIO.new
+ $stdout = io = StringIO.new(+"")
Kernel.printf(format, *args)
io.string
ensure