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.rb28
1 files changed, 19 insertions, 9 deletions
diff --git a/spec/ruby/core/kernel/printf_spec.rb b/spec/ruby/core/kernel/printf_spec.rb
index ca88082694..61bf955c25 100644
--- a/spec/ruby/core/kernel/printf_spec.rb
+++ b/spec/ruby/core/kernel/printf_spec.rb
@@ -1,7 +1,6 @@
require_relative '../../spec_helper'
require_relative 'fixtures/classes'
require_relative 'shared/sprintf'
-require "stringio"
describe "Kernel#printf" do
it "is a private method" do
@@ -10,7 +9,6 @@ describe "Kernel#printf" do
end
describe "Kernel.printf" do
-
before :each do
@stdout = $stdout
@name = tmp("kernel_puts.txt")
@@ -34,22 +32,34 @@ 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
- printf(io, format, *args)
+ it_behaves_like :kernel_sprintf, -> format, *args {
+ io = StringIO.new(+"")
+ Kernel.printf(io, format, *args)
io.string
}
end
context "io is not specified" do
- it_behaves_like :kernel_sprintf, -> (format, *args) {
+ it_behaves_like :kernel_sprintf, -> format, *args {
stdout = $stdout
-
begin
- $stdout = io = StringIO.new
- printf(format, *args)
+ $stdout = io = StringIO.new(+"")
+ Kernel.printf(format, *args)
io.string
ensure
$stdout = stdout