diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-20 20:18:52 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-20 20:18:52 +0000 |
commit | 1d15d5f08032acf1b7bceacbb450d617ff6e0931 (patch) | |
tree | a3785a79899302bc149e4a6e72f624ac27dc1f10 /spec/rubyspec/library/stringio | |
parent | 75bfc6440d595bf339007f4fb280fd4d743e89c1 (diff) |
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory.
[Misc #13792] [ruby-core:82287]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/rubyspec/library/stringio')
78 files changed, 0 insertions, 3380 deletions
diff --git a/spec/rubyspec/library/stringio/append_spec.rb b/spec/rubyspec/library/stringio/append_spec.rb deleted file mode 100644 index ff0dc233cd..0000000000 --- a/spec/rubyspec/library/stringio/append_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#<< when passed [Object]" do - before :each do - @io = StringIO.new("example") - end - - it "returns self" do - (@io << "just testing").should equal(@io) - end - - it "writes the passed argument onto self" do - (@io << "just testing") - @io.string.should == "just testing" - (@io << " and more testing") - @io.string.should == "just testing and more testing" - end - - it "writes the passed argument at the current position" do - @io.pos = 5 - @io << "<test>" - @io.string.should == "examp<test>" - end - - it "pads self with \\000 when the current position is after the end" do - @io.pos = 15 - @io << "just testing" - @io.string.should == "example\000\000\000\000\000\000\000\000just testing" - end - - it "taints self's String when the passed argument is tainted" do - (@io << "test".taint) - @io.string.tainted?.should be_true - end - - it "does not taint self when the passed argument is tainted" do - (@io << "test".taint) - @io.tainted?.should be_false - end - - it "updates self's position" do - @io << "test" - @io.pos.should eql(4) - end - - it "tries to convert the passed argument to a String using #to_s" do - obj = mock("to_s") - obj.should_receive(:to_s).and_return("Test") - - (@io << obj).string.should == "Testple" - end -end - -describe "StringIO#<< when self is not writable" do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io << "test" }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io << "test" }.should raise_error(IOError) - end -end - -describe "StringIO#<< when in append mode" do - before :each do - @io = StringIO.new("example", "a") - end - - it "appends the passed argument to the end of self, ignoring current position" do - (@io << ", just testing") - @io.string.should == "example, just testing" - - @io.pos = 3 - (@io << " and more testing") - @io.string.should == "example, just testing and more testing" - end - - it "correctly updates self's position" do - @io << ", testing" - @io.pos.should eql(16) - end -end diff --git a/spec/rubyspec/library/stringio/binmode_spec.rb b/spec/rubyspec/library/stringio/binmode_spec.rb deleted file mode 100644 index 11fbbaadeb..0000000000 --- a/spec/rubyspec/library/stringio/binmode_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#binmode" do - it "returns self" do - io = StringIO.new("example") - io.binmode.should equal(io) - end -end diff --git a/spec/rubyspec/library/stringio/bytes_spec.rb b/spec/rubyspec/library/stringio/bytes_spec.rb deleted file mode 100644 index 22d990dff7..0000000000 --- a/spec/rubyspec/library/stringio/bytes_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/each_byte', __FILE__) - -describe "StringIO#bytes" do - it_behaves_like :stringio_each_byte, :bytes -end - -describe "StringIO#bytes when self is not readable" do - it_behaves_like :stringio_each_byte_not_readable, :bytes -end diff --git a/spec/rubyspec/library/stringio/chars_spec.rb b/spec/rubyspec/library/stringio/chars_spec.rb deleted file mode 100644 index c5ffde23db..0000000000 --- a/spec/rubyspec/library/stringio/chars_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/each_char', __FILE__) - -describe "StringIO#chars" do - it_behaves_like :stringio_each_char, :chars -end - -describe "StringIO#chars when self is not readable" do - it_behaves_like :stringio_each_char_not_readable, :chars -end diff --git a/spec/rubyspec/library/stringio/close_read_spec.rb b/spec/rubyspec/library/stringio/close_read_spec.rb deleted file mode 100644 index 59e16385d2..0000000000 --- a/spec/rubyspec/library/stringio/close_read_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#close_read" do - before :each do - @io = StringIO.new("example") - end - - it "returns nil" do - @io.close_read.should be_nil - end - - it "prevents further reading" do - @io.close_read - lambda { @io.read(1) }.should raise_error(IOError) - end - - it "allows further writing" do - @io.close_read - @io.write("x").should == 1 - end - - it "raises an IOError when in write-only mode" do - io = StringIO.new("example", "w") - lambda { io.close_read }.should raise_error(IOError) - - io = StringIO.new("example") - io.close_read - ruby_version_is ''...'2.3' do - lambda { io.close_read }.should raise_error(IOError) - end - ruby_version_is '2.3' do - io.close_read.should == nil - end - end -end diff --git a/spec/rubyspec/library/stringio/close_spec.rb b/spec/rubyspec/library/stringio/close_spec.rb deleted file mode 100644 index 423aad4bd1..0000000000 --- a/spec/rubyspec/library/stringio/close_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#close" do - before :each do - @io = StringIOSpecs.build - end - - it "returns nil" do - @io.close.should be_nil - end - - it "prevents further reading and/or writing" do - @io.close - lambda { @io.read(1) }.should raise_error(IOError) - lambda { @io.write('x') }.should raise_error(IOError) - end - - ruby_version_is ''...'2.3' do - it "raises an IOError when self was already closed" do - @io.close - lambda { @io.close }.should raise_error(IOError) - end - end - - ruby_version_is "2.3" do - it "does not raise anything when self was already closed" do - @io.close - lambda { @io.close }.should_not raise_error(IOError) - end - end -end diff --git a/spec/rubyspec/library/stringio/close_write_spec.rb b/spec/rubyspec/library/stringio/close_write_spec.rb deleted file mode 100644 index 6637fe6043..0000000000 --- a/spec/rubyspec/library/stringio/close_write_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#close_write" do - before :each do - @io = StringIO.new("example") - end - - it "returns nil" do - @io.close_write.should be_nil - end - - it "prevents further writing" do - @io.close_write - lambda { @io.write('x') }.should raise_error(IOError) - end - - it "allows further reading" do - @io.close_write - @io.read(1).should == 'e' - end - - it "raises an IOError when in read-only mode" do - io = StringIO.new("example", "r") - lambda { io.close_write }.should raise_error(IOError) - - io = StringIO.new("example") - io.close_write - ruby_version_is ''...'2.3' do - lambda { io.close_write }.should raise_error(IOError) - end - ruby_version_is '2.3' do - io.close_write.should == nil - end - end -end diff --git a/spec/rubyspec/library/stringio/closed_read_spec.rb b/spec/rubyspec/library/stringio/closed_read_spec.rb deleted file mode 100644 index 971eb5f71c..0000000000 --- a/spec/rubyspec/library/stringio/closed_read_spec.rb +++ /dev/null @@ -1,12 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#closed_read?" do - it "returns true if self is not readable" do - io = StringIO.new("example", "r+") - io.close_write - io.closed_read?.should be_false - io.close_read - io.closed_read?.should be_true - end -end diff --git a/spec/rubyspec/library/stringio/closed_spec.rb b/spec/rubyspec/library/stringio/closed_spec.rb deleted file mode 100644 index 4026d78775..0000000000 --- a/spec/rubyspec/library/stringio/closed_spec.rb +++ /dev/null @@ -1,16 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#closed?" do - it "returns true if self is completely closed" do - io = StringIO.new("example", "r+") - io.close_read - io.closed?.should be_false - io.close_write - io.closed?.should be_true - - io = StringIO.new("example", "r+") - io.close - io.closed?.should be_true - end -end diff --git a/spec/rubyspec/library/stringio/closed_write_spec.rb b/spec/rubyspec/library/stringio/closed_write_spec.rb deleted file mode 100644 index 52707aa240..0000000000 --- a/spec/rubyspec/library/stringio/closed_write_spec.rb +++ /dev/null @@ -1,12 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#closed_write?" do - it "returns true if self is not writable" do - io = StringIO.new("example", "r+") - io.close_read - io.closed_write?.should be_false - io.close_write - io.closed_write?.should be_true - end -end diff --git a/spec/rubyspec/library/stringio/codepoints_spec.rb b/spec/rubyspec/library/stringio/codepoints_spec.rb deleted file mode 100644 index 098bd3c4c3..0000000000 --- a/spec/rubyspec/library/stringio/codepoints_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -# -*- encoding: utf-8 -*- -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/codepoints', __FILE__) - -# See redmine #1667 -describe "StringIO#codepoints" do - it_behaves_like(:stringio_codepoints, :codepoints) -end diff --git a/spec/rubyspec/library/stringio/each_byte_spec.rb b/spec/rubyspec/library/stringio/each_byte_spec.rb deleted file mode 100644 index 8e88997bc0..0000000000 --- a/spec/rubyspec/library/stringio/each_byte_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/each_byte', __FILE__) - -describe "StringIO#each_byte" do - it_behaves_like :stringio_each_byte, :each_byte -end - -describe "StringIO#each_byte when self is not readable" do - it_behaves_like :stringio_each_byte_not_readable, :each_byte -end diff --git a/spec/rubyspec/library/stringio/each_char_spec.rb b/spec/rubyspec/library/stringio/each_char_spec.rb deleted file mode 100644 index a141ae03fe..0000000000 --- a/spec/rubyspec/library/stringio/each_char_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/each_char', __FILE__) - -describe "StringIO#each_char" do - it_behaves_like :stringio_each_char, :each_char -end - -describe "StringIO#each_char when self is not readable" do - it_behaves_like :stringio_each_char_not_readable, :chars -end diff --git a/spec/rubyspec/library/stringio/each_codepoint_spec.rb b/spec/rubyspec/library/stringio/each_codepoint_spec.rb deleted file mode 100644 index 25a0bf4c81..0000000000 --- a/spec/rubyspec/library/stringio/each_codepoint_spec.rb +++ /dev/null @@ -1,10 +0,0 @@ -# -*- encoding: utf-8 -*- -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/codepoints', __FILE__) - -# See redmine #1667 -describe "StringIO#each_codepoint" do - it_behaves_like(:stringio_codepoints, :codepoints) -end - diff --git a/spec/rubyspec/library/stringio/each_line_spec.rb b/spec/rubyspec/library/stringio/each_line_spec.rb deleted file mode 100644 index e4deb9b3e9..0000000000 --- a/spec/rubyspec/library/stringio/each_line_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/each', __FILE__) - -describe "StringIO#each_line when passed a separator" do - it_behaves_like :stringio_each_separator, :each_line -end - -describe "StringIO#each_line when passed no arguments" do - it_behaves_like :stringio_each_no_arguments, :each_line -end - -describe "StringIO#each_line when self is not readable" do - it_behaves_like :stringio_each_not_readable, :each_line -end diff --git a/spec/rubyspec/library/stringio/each_spec.rb b/spec/rubyspec/library/stringio/each_spec.rb deleted file mode 100644 index 07ad070192..0000000000 --- a/spec/rubyspec/library/stringio/each_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/each', __FILE__) - -describe "StringIO#each when passed a separator" do - it_behaves_like :stringio_each_separator, :each -end - -describe "StringIO#each when passed no arguments" do - it_behaves_like :stringio_each_no_arguments, :each -end - -describe "StringIO#each when self is not readable" do - it_behaves_like :stringio_each_not_readable, :each -end diff --git a/spec/rubyspec/library/stringio/eof_spec.rb b/spec/rubyspec/library/stringio/eof_spec.rb deleted file mode 100644 index a5bb3dbe3d..0000000000 --- a/spec/rubyspec/library/stringio/eof_spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/eof', __FILE__) - -describe "StringIO#eof?" do - it_behaves_like :stringio_eof, :eof? -end - -describe "StringIO#eof" do - it_behaves_like :stringio_eof, :eof -end diff --git a/spec/rubyspec/library/stringio/external_encoding_spec.rb b/spec/rubyspec/library/stringio/external_encoding_spec.rb deleted file mode 100644 index 9bf2d8ee8c..0000000000 --- a/spec/rubyspec/library/stringio/external_encoding_spec.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'stringio' -require File.expand_path('../../../spec_helper', __FILE__) - -describe "StringIO#external_encoding" do - it "gets the encoding of the underlying String" do - io = StringIO.new - io.set_encoding Encoding::EUC_JP - io.external_encoding.should == Encoding::EUC_JP - end - - ruby_version_is "2.3" do - it "does not set the encoding of its buffer string if the string is frozen" do - str = "foo".freeze - enc = str.encoding - io = StringIO.new(str) - io.set_encoding Encoding::EUC_JP - io.external_encoding.should == Encoding::EUC_JP - str.encoding.should == enc - end - end -end diff --git a/spec/rubyspec/library/stringio/fcntl_spec.rb b/spec/rubyspec/library/stringio/fcntl_spec.rb deleted file mode 100644 index 5250359a79..0000000000 --- a/spec/rubyspec/library/stringio/fcntl_spec.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#fcntl" do - it "raises a NotImplementedError" do - lambda { StringIO.new("boom").fcntl }.should raise_error(NotImplementedError) - end -end diff --git a/spec/rubyspec/library/stringio/fileno_spec.rb b/spec/rubyspec/library/stringio/fileno_spec.rb deleted file mode 100644 index a5ae820830..0000000000 --- a/spec/rubyspec/library/stringio/fileno_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/each', __FILE__) - -describe "StringIO#fileno" do - it "returns nil" do - StringIO.new("nuffin").fileno.should be_nil - end -end diff --git a/spec/rubyspec/library/stringio/fixtures/classes.rb b/spec/rubyspec/library/stringio/fixtures/classes.rb deleted file mode 100644 index bb8dc354cc..0000000000 --- a/spec/rubyspec/library/stringio/fixtures/classes.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'stringio' - -class StringSubclass < String; end - -module StringIOSpecs - def self.build - str = <<-EOS - each - peach - pear - plum - EOS - StringIO.new(str) - end -end diff --git a/spec/rubyspec/library/stringio/flush_spec.rb b/spec/rubyspec/library/stringio/flush_spec.rb deleted file mode 100644 index 75a92db85a..0000000000 --- a/spec/rubyspec/library/stringio/flush_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#flush" do - it "returns self" do - io = StringIO.new("flush") - io.flush.should equal(io) - end -end diff --git a/spec/rubyspec/library/stringio/fsync_spec.rb b/spec/rubyspec/library/stringio/fsync_spec.rb deleted file mode 100644 index 509f4a972f..0000000000 --- a/spec/rubyspec/library/stringio/fsync_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#fsync" do - it "returns zero" do - io = StringIO.new("fsync") - io.fsync.should eql(0) - end -end diff --git a/spec/rubyspec/library/stringio/getbyte_spec.rb b/spec/rubyspec/library/stringio/getbyte_spec.rb deleted file mode 100644 index 163cb9d0c6..0000000000 --- a/spec/rubyspec/library/stringio/getbyte_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/getc', __FILE__) - -describe "StringIO#getbyte" do - it_behaves_like :stringio_getc, :getbyte - - it "returns the 8-bit byte at the current position" do - io = StringIO.new("example") - - io.send(@method).should == 101 - io.send(@method).should == 120 - io.send(@method).should == 97 - end -end - -describe "StringIO#getbyte when self is not readable" do - it_behaves_like :stringio_getc_not_readable, :getbyte -end diff --git a/spec/rubyspec/library/stringio/getc_spec.rb b/spec/rubyspec/library/stringio/getc_spec.rb deleted file mode 100644 index f7e98d2a33..0000000000 --- a/spec/rubyspec/library/stringio/getc_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/getc', __FILE__) - -describe "StringIO#getc" do - it_behaves_like :stringio_getc, :getc - - it "returns the charactor at the current position" do - io = StringIO.new("example") - - io.send(@method).should == ?e - io.send(@method).should == ?x - io.send(@method).should == ?a - end -end - -describe "StringIO#getc when self is not readable" do - it_behaves_like :stringio_getc_not_readable, :getc -end diff --git a/spec/rubyspec/library/stringio/getch_spec.rb b/spec/rubyspec/library/stringio/getch_spec.rb deleted file mode 100644 index c7fdfe9080..0000000000 --- a/spec/rubyspec/library/stringio/getch_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -# -*- encoding: utf-8 -*- -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/getc', __FILE__) - -# This method is added by io/console on require. -describe "StringIO#getch" do - require 'io/console' - - it_behaves_like :stringio_getc, :getch - - it "returns the charactor at the current position" do - io = StringIO.new("example") - - io.send(@method).should == ?e - io.send(@method).should == ?x - io.send(@method).should == ?a - end - - with_feature :encoding do - it "increments #pos by the byte size of the character in multibyte strings" do - io = StringIO.new("föóbar") - - io.send(@method); io.pos.should == 1 # "f" has byte size 1 - io.send(@method); io.pos.should == 3 # "ö" has byte size 2 - io.send(@method); io.pos.should == 5 # "ó" has byte size 2 - io.send(@method); io.pos.should == 6 # "b" has byte size 1 - end - end - - it "returns nil at the end of the string" do - # empty string case - io = StringIO.new("") - io.send(@method).should == nil - io.send(@method).should == nil - - # non-empty string case - io = StringIO.new("a") - io.send(@method) # skip one - io.send(@method).should == nil - end - - describe "StringIO#getch when self is not readable" do - it_behaves_like :stringio_getc_not_readable, :getch - end -end diff --git a/spec/rubyspec/library/stringio/gets_spec.rb b/spec/rubyspec/library/stringio/gets_spec.rb deleted file mode 100644 index 307f564a6e..0000000000 --- a/spec/rubyspec/library/stringio/gets_spec.rb +++ /dev/null @@ -1,238 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" - -describe "StringIO#gets when passed [separator]" do - before :each do - @io = StringIO.new("this>is>an>example") - end - - it "returns the data read till the next occurence of the passed separator" do - @io.gets(">").should == "this>" - @io.gets(">").should == "is>" - @io.gets(">").should == "an>" - @io.gets(">").should == "example" - end - - it "sets $_ to the read content" do - @io.gets(">") - $_.should == "this>" - @io.gets(">") - $_.should == "is>" - @io.gets(">") - $_.should == "an>" - @io.gets(">") - $_.should == "example" - @io.gets(">") - $_.should be_nil - end - - it "accepts string as separator" do - @io.gets("is>") - $_.should == "this>" - @io.gets("an>") - $_.should == "is>an>" - @io.gets("example") - $_.should == "example" - @io.gets("ple") - $_.should be_nil - end - - it "updates self's lineno by one" do - @io.gets(">") - @io.lineno.should eql(1) - - @io.gets(">") - @io.lineno.should eql(2) - - @io.gets(">") - @io.lineno.should eql(3) - end - - it "returns the next paragraph when the passed separator is an empty String" do - io = StringIO.new("this is\n\nan example") - io.gets("").should == "this is\n\n" - io.gets("").should == "an example" - end - - it "returns the remaining content starting at the current position when passed nil" do - io = StringIO.new("this is\n\nan example") - io.pos = 5 - io.gets(nil).should == "is\n\nan example" - end - - it "tries to convert the passed separator to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return(">") - @io.gets(obj).should == "this>" - end -end - -describe "StringIO#gets when passed no argument" do - before :each do - @io = StringIO.new("this is\nan example\nfor StringIO#gets") - end - - it "returns the data read till the next occurence of $/ or till eof" do - @io.gets.should == "this is\n" - - begin - old_sep, $/ = $/, " " - @io.gets.should == "an " - @io.gets.should == "example\nfor " - @io.gets.should == "StringIO#gets" - ensure - $/ = old_sep - end - end - - it "sets $_ to the read content" do - @io.gets - $_.should == "this is\n" - @io.gets - $_.should == "an example\n" - @io.gets - $_.should == "for StringIO#gets" - @io.gets - $_.should be_nil - end - - it "updates self's position" do - @io.gets - @io.pos.should eql(8) - - @io.gets - @io.pos.should eql(19) - - @io.gets - @io.pos.should eql(36) - end - - it "updates self's lineno" do - @io.gets - @io.lineno.should eql(1) - - @io.gets - @io.lineno.should eql(2) - - @io.gets - @io.lineno.should eql(3) - end - - it "returns nil if self is at the end" do - @io.pos = 36 - @io.gets.should be_nil - @io.gets.should be_nil - end -end - -describe "StringIO#gets when passed [limit]" do - before :each do - @io = StringIO.new("this>is>an>example") - end - - it "returns the data read until the limit is met" do - @io.gets(4).should == "this" - @io.gets(3).should == ">is" - @io.gets(5).should == ">an>e" - @io.gets(6).should == "xample" - end - - it "sets $_ to the read content" do - @io.gets(4) - $_.should == "this" - @io.gets(3) - $_.should == ">is" - @io.gets(5) - $_.should == ">an>e" - @io.gets(6) - $_.should == "xample" - @io.gets(3) - $_.should be_nil - end - - it "updates self's lineno by one" do - @io.gets(3) - @io.lineno.should eql(1) - - @io.gets(3) - @io.lineno.should eql(2) - - @io.gets(3) - @io.lineno.should eql(3) - end - - it "tries to convert the passed limit to an Integer using #to_int" do - obj = mock('to_int') - obj.should_receive(:to_int).and_return(4) - @io.gets(obj).should == "this" - end - - it "returns a blank string when passed a limit of 0" do - @io.gets(0).should == "" - end -end - -describe "StringIO#gets when passed [separator] and [limit]" do - before :each do - @io = StringIO.new("this>is>an>example") - end - - it "returns the data read until the limit is consumed or the separator is met" do - @io.gets('>', 8).should == "this>" - @io.gets('>', 2).should == "is" - @io.gets('>', 10).should == ">" - @io.gets('>', 6).should == "an>" - @io.gets('>', 5).should == "examp" - end - - it "sets $_ to the read content" do - @io.gets('>', 8) - $_.should == "this>" - @io.gets('>', 2) - $_.should == "is" - @io.gets('>', 10) - $_.should == ">" - @io.gets('>', 6) - $_.should == "an>" - @io.gets('>', 5) - $_.should == "examp" - end - - it "updates self's lineno by one" do - @io.gets('>', 3) - @io.lineno.should eql(1) - - @io.gets('>', 3) - @io.lineno.should eql(2) - - @io.gets('>', 3) - @io.lineno.should eql(3) - end - - it "tries to convert the passed separator to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return('>') - @io.gets(obj, 5).should == "this>" - end - - it "does not raise TypeError if passed separator is nil" do - @io.gets(nil, 5).should == "this>" - end - - it "tries to convert the passed limit to an Integer using #to_int" do - obj = mock('to_int') - obj.should_receive(:to_int).and_return(5) - @io.gets('>', obj).should == "this>" - end -end - -describe "StringIO#gets when in write-only mode" do - it "raises an IOError" do - io = StringIO.new("xyz", "w") - lambda { io.gets }.should raise_error(IOError) - - io = StringIO.new("xyz") - io.close_read - lambda { io.gets }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/initialize_spec.rb b/spec/rubyspec/library/stringio/initialize_spec.rb deleted file mode 100644 index 8b661a3790..0000000000 --- a/spec/rubyspec/library/stringio/initialize_spec.rb +++ /dev/null @@ -1,185 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' - -describe "StringIO#initialize when passed [Object, mode]" do - before :each do - @io = StringIO.allocate - end - - it "uses the passed Object as the StringIO backend" do - @io.send(:initialize, str = "example", "r") - @io.string.should equal(str) - end - - it "sets the mode based on the passed mode" do - io = StringIO.allocate - io.send(:initialize, "example", "r") - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.allocate - io.send(:initialize, "example", "rb") - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.allocate - io.send(:initialize, "example", "r+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "rb+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "w") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "wb") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "w+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "wb+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "a") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "ab") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "a+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", "ab+") - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "allows passing the mode as an Integer" do - io = StringIO.allocate - io.send(:initialize, "example", IO::RDONLY) - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.allocate - io.send(:initialize, "example", IO::RDWR) - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", IO::WRONLY) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", IO::WRONLY | IO::TRUNC) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", IO::RDWR | IO::TRUNC) - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", IO::WRONLY | IO::APPEND) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.allocate - io.send(:initialize, "example", IO::RDWR | IO::APPEND) - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "raises a RuntimeError when passed a frozen String in truncate mode as StringIO backend" do - io = StringIO.allocate - lambda { io.send(:initialize, "example".freeze, IO::TRUNC) }.should raise_error(RuntimeError) - end - - it "tries to convert the passed mode to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return("r") - @io.send(:initialize, "example", obj) - - @io.closed_read?.should be_false - @io.closed_write?.should be_true - end - - it "raises an Errno::EACCES error when passed a frozen string with a write-mode" do - (str = "example").freeze - lambda { @io.send(:initialize, str, "r+") }.should raise_error(Errno::EACCES) - lambda { @io.send(:initialize, str, "w") }.should raise_error(Errno::EACCES) - lambda { @io.send(:initialize, str, "a") }.should raise_error(Errno::EACCES) - end -end - -describe "StringIO#initialize when passed [Object]" do - before :each do - @io = StringIO.allocate - end - - it "uses the passed Object as the StringIO backend" do - @io.send(:initialize, str = "example") - @io.string.should equal(str) - end - - it "sets the mode to read-write" do - @io.send(:initialize, "example") - @io.closed_read?.should be_false - @io.closed_write?.should be_false - end - - it "tries to convert the passed Object to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return("example") - @io.send(:initialize, obj) - @io.string.should == "example" - end - - it "automatically sets the mode to read-only when passed a frozen string" do - (str = "example").freeze - @io.send(:initialize, str) - @io.closed_read?.should be_false - @io.closed_write?.should be_true - end -end - -describe "StringIO#initialize when passed no arguments" do - before :each do - @io = StringIO.allocate - end - - it "is private" do - StringIO.should have_private_instance_method(:initialize) - end - - it "sets the mode to read-write" do - @io.send(:initialize, "example") - @io.closed_read?.should be_false - @io.closed_write?.should be_false - end - - it "uses an empty String as the StringIO backend" do - @io.send(:initialize) - @io.string.should == "" - end -end diff --git a/spec/rubyspec/library/stringio/internal_encoding_spec.rb b/spec/rubyspec/library/stringio/internal_encoding_spec.rb deleted file mode 100644 index f8ecb35989..0000000000 --- a/spec/rubyspec/library/stringio/internal_encoding_spec.rb +++ /dev/null @@ -1,10 +0,0 @@ -require 'stringio' -require File.expand_path('../../../spec_helper', __FILE__) - -describe "StringIO#internal_encoding" do - it "returns nil" do - io = StringIO.new - io.set_encoding Encoding::UTF_8 - io.internal_encoding.should == nil - end -end diff --git a/spec/rubyspec/library/stringio/isatty_spec.rb b/spec/rubyspec/library/stringio/isatty_spec.rb deleted file mode 100644 index c07dc2f6cc..0000000000 --- a/spec/rubyspec/library/stringio/isatty_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/isatty', __FILE__) - -describe "StringIO#isatty" do - it_behaves_like :stringio_isatty, :isatty -end diff --git a/spec/rubyspec/library/stringio/length_spec.rb b/spec/rubyspec/library/stringio/length_spec.rb deleted file mode 100644 index ae8eb15502..0000000000 --- a/spec/rubyspec/library/stringio/length_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/length', __FILE__) - -describe "StringIO#length" do - it_behaves_like :stringio_length, :length -end diff --git a/spec/rubyspec/library/stringio/lineno_spec.rb b/spec/rubyspec/library/stringio/lineno_spec.rb deleted file mode 100644 index b7ef83c7e1..0000000000 --- a/spec/rubyspec/library/stringio/lineno_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" - -describe "StringIO#lineno" do - before :each do - @io = StringIO.new("this\nis\nan\nexample") - end - - it "returns the number of lines read" do - @io.gets - @io.gets - @io.gets - @io.lineno.should eql(3) - end -end - -describe "StringIO#lineno=" do - before :each do - @io = StringIO.new("this\nis\nan\nexample") - end - - it "sets the current line number, but has no impact on the position" do - @io.lineno = 3 - @io.pos.should eql(0) - - @io.gets.should == "this\n" - @io.lineno.should eql(4) - @io.pos.should eql(5) - end -end diff --git a/spec/rubyspec/library/stringio/lines_spec.rb b/spec/rubyspec/library/stringio/lines_spec.rb deleted file mode 100644 index 550b25549e..0000000000 --- a/spec/rubyspec/library/stringio/lines_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/each', __FILE__) - -describe "StringIO#lines when passed a separator" do - it_behaves_like :stringio_each_separator, :lines -end - -describe "StringIO#lines when passed no arguments" do - it_behaves_like :stringio_each_no_arguments, :lines -end - -describe "StringIO#lines when self is not readable" do - it_behaves_like :stringio_each_not_readable, :lines -end diff --git a/spec/rubyspec/library/stringio/open_spec.rb b/spec/rubyspec/library/stringio/open_spec.rb deleted file mode 100644 index 136ff5f972..0000000000 --- a/spec/rubyspec/library/stringio/open_spec.rb +++ /dev/null @@ -1,208 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' - -describe "StringIO.open when passed [Object, mode]" do - it "uses the passed Object as the StringIO backend" do - io = StringIO.open(str = "example", "r") - io.string.should equal(str) - end - - it "returns the blocks return value when yielding" do - ret = StringIO.open("example", "r") { :test } - ret.should equal(:test) - end - - it "yields self to the passed block" do - io = nil - StringIO.open("example", "r") { |strio| io = strio } - io.should be_kind_of(StringIO) - end - - it "closes self after yielding" do - io = nil - StringIO.open("example", "r") { |strio| io = strio } - io.closed?.should be_true - end - - it "even closes self when an exception is raised while yielding" do - io = nil - begin - StringIO.open("example", "r") do |strio| - io = strio - raise "Error" - end - rescue - end - io.closed?.should be_true - end - - it "sets self's string to nil after yielding" do - io = nil - StringIO.open("example", "r") { |strio| io = strio } - io.string.should be_nil - end - - it "even sets self's string to nil when an exception is raised while yielding" do - io = nil - begin - StringIO.open("example", "r") do |strio| - io = strio - raise "Error" - end - rescue - end - io.string.should be_nil - end - - it "sets the mode based on the passed mode" do - io = StringIO.open("example", "r") - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.open("example", "rb") - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.open("example", "r+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", "rb+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", "w") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", "wb") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", "w+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", "wb+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", "a") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", "ab") - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", "a+") - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", "ab+") - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "allows passing the mode as an Integer" do - io = StringIO.open("example", IO::RDONLY) - io.closed_read?.should be_false - io.closed_write?.should be_true - - io = StringIO.open("example", IO::RDWR) - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", IO::WRONLY) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", IO::WRONLY | IO::TRUNC) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", IO::RDWR | IO::TRUNC) - io.closed_read?.should be_false - io.closed_write?.should be_false - - io = StringIO.open("example", IO::WRONLY | IO::APPEND) - io.closed_read?.should be_true - io.closed_write?.should be_false - - io = StringIO.open("example", IO::RDWR | IO::APPEND) - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "raises a RuntimeError when passed a frozen String in truncate mode as StringIO backend" do - lambda { StringIO.open("example".freeze, IO::TRUNC) }.should raise_error(RuntimeError) - end - - it "tries to convert the passed mode to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return("r") - io = StringIO.open("example", obj) - - io.closed_read?.should be_false - io.closed_write?.should be_true - end - - it "raises an Errno::EACCES error when passed a frozen string with a write-mode" do - (str = "example").freeze - lambda { StringIO.open(str, "r+") }.should raise_error(Errno::EACCES) - lambda { StringIO.open(str, "w") }.should raise_error(Errno::EACCES) - lambda { StringIO.open(str, "a") }.should raise_error(Errno::EACCES) - end -end - -describe "StringIO.open when passed [Object]" do - it "uses the passed Object as the StringIO backend" do - io = StringIO.open(str = "example") - io.string.should equal(str) - end - - it "yields self to the passed block" do - io = nil - ret = StringIO.open("example") { |strio| io = strio } - io.should equal(ret) - end - - it "sets the mode to read-write" do - io = StringIO.open("example") - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "tries to convert the passed Object to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return("example") - io = StringIO.open(obj) - io.string.should == "example" - end - - it "automatically sets the mode to read-only when passed a frozen string" do - (str = "example").freeze - io = StringIO.open(str) - io.closed_read?.should be_false - io.closed_write?.should be_true - end -end - -describe "StringIO.open when passed no arguments" do - it "yields self to the passed block" do - io = nil - ret = StringIO.open { |strio| io = strio } - io.should equal(ret) - end - - it "sets the mode to read-write" do - io = StringIO.open - io.closed_read?.should be_false - io.closed_write?.should be_false - end - - it "uses an empty String as the StringIO backend" do - StringIO.open.string.should == "" - end -end - diff --git a/spec/rubyspec/library/stringio/path_spec.rb b/spec/rubyspec/library/stringio/path_spec.rb deleted file mode 100644 index 6165cf97c4..0000000000 --- a/spec/rubyspec/library/stringio/path_spec.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#path" do - it "is not defined" do - lambda { StringIO.new("path").path }.should raise_error(NoMethodError) - end -end diff --git a/spec/rubyspec/library/stringio/pid_spec.rb b/spec/rubyspec/library/stringio/pid_spec.rb deleted file mode 100644 index 41e60880cc..0000000000 --- a/spec/rubyspec/library/stringio/pid_spec.rb +++ /dev/null @@ -1,8 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#pid" do - it "returns nil" do - StringIO.new("pid").pid.should be_nil - end -end diff --git a/spec/rubyspec/library/stringio/pos_spec.rb b/spec/rubyspec/library/stringio/pos_spec.rb deleted file mode 100644 index 59d0a43f12..0000000000 --- a/spec/rubyspec/library/stringio/pos_spec.rb +++ /dev/null @@ -1,28 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/tell', __FILE__) - -describe "StringIO#pos" do - it_behaves_like :stringio_tell, :pos -end - -describe "StringIO#pos=" do - before :each do - @io = StringIOSpecs.build - end - - it "updates the current byte offset" do - @io.pos = 26 - @io.read(1).should == "r" - end - - it "raises an EINVAL if given a negative argument" do - lambda { @io.pos = -10 }.should raise_error(Errno::EINVAL) - end - - it "updates the current byte offset after reaching EOF" do - @io.read - @io.pos = 26 - @io.read(1).should == "r" - end -end diff --git a/spec/rubyspec/library/stringio/print_spec.rb b/spec/rubyspec/library/stringio/print_spec.rb deleted file mode 100644 index 0f67aeb921..0000000000 --- a/spec/rubyspec/library/stringio/print_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#print" do - before :each do - @io = StringIO.new('example') - end - - it "prints $_ when passed no arguments" do - $_ = nil - @io.print - @io.string.should == "example" - - $_ = "blah" - @io.print - @io.string.should == "blahple" - end - - it "prints the passed arguments to self" do - @io.print(5, 6, 7, 8) - @io.string.should == "5678ple" - end - - it "tries to convert the passed Object to a String using #to_s" do - obj = mock("to_s") - obj.should_receive(:to_s).and_return("to_s") - @io.print(obj) - @io.string.should == "to_sple" - end - - it "returns nil" do - @io.print(1, 2, 3).should be_nil - end - - it "pads self with \\000 when the current position is after the end" do - @io.pos = 10 - @io.print(1, 2, 3) - @io.string.should == "example\000\000\000123" - end - - it "honors the output record separator global" do - old_rs, $\ = $\, 'x' - - begin - @io.print(5, 6, 7, 8) - @io.string.should == '5678xle' - ensure - $\ = old_rs - end - end - - it "updates the current position" do - @io.print(1, 2, 3) - @io.pos.should eql(3) - - @io.print(1, 2, 3) - @io.pos.should eql(6) - end - - it "correctly updates the current position when honoring the output record separator global" do - old_rs, $\ = $\, 'x' - - begin - @io.print(5, 6, 7, 8) - @io.pos.should eql(5) - ensure - $\ = old_rs - end - end -end - -describe "StringIO#print when in append mode" do - before :each do - @io = StringIO.new("example", "a") - end - - it "appends the passed argument to the end of self" do - @io.print(", just testing") - @io.string.should == "example, just testing" - - @io.print(" and more testing") - @io.string.should == "example, just testing and more testing" - end - - it "correctly updates self's position" do - @io.print(", testing") - @io.pos.should eql(16) - end -end - -describe "StringIO#print when self is not writable" do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io.print("test") }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io.print("test") }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/printf_spec.rb b/spec/rubyspec/library/stringio/printf_spec.rb deleted file mode 100644 index 5f811547bc..0000000000 --- a/spec/rubyspec/library/stringio/printf_spec.rb +++ /dev/null @@ -1,61 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#printf" do - before :each do - @io = StringIO.new('example') - end - - it "returns nil" do - @io.printf("%d %04x", 123, 123).should be_nil - end - - it "pads self with \\000 when the current position is after the end" do - @io.pos = 10 - @io.printf("%d", 123) - @io.string.should == "example\000\000\000123" - end - - it "performs format conversion" do - @io.printf("%d %04x", 123, 123) - @io.string.should == "123 007b" - end - - it "updates the current position" do - @io.printf("%d %04x", 123, 123) - @io.pos.should eql(8) - - @io.printf("%d %04x", 123, 123) - @io.pos.should eql(16) - end -end - -describe "StringIO#printf when in append mode" do - before :each do - @io = StringIO.new("example", "a") - end - - it "appends the passed argument to the end of self" do - @io.printf("%d %04x", 123, 123) - @io.string.should == "example123 007b" - - @io.printf("%d %04x", 123, 123) - @io.string.should == "example123 007b123 007b" - end - - it "correctly updates self's position" do - @io.printf("%d %04x", 123, 123) - @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") - io.close_write - lambda { io.printf("test") }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/putc_spec.rb b/spec/rubyspec/library/stringio/putc_spec.rb deleted file mode 100644 index 783e5a405b..0000000000 --- a/spec/rubyspec/library/stringio/putc_spec.rb +++ /dev/null @@ -1,88 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#putc when passed [String]" do - before :each do - @io = StringIO.new('example') - end - - it "overwrites the character at the current position" do - @io.putc("t") - @io.string.should == "txample" - - @io.pos = 3 - @io.putc("t") - @io.string.should == "txatple" - end - - it "only writes the first character from the passed String" do - @io.putc("test") - @io.string.should == "txample" - end - - it "returns the passed String" do - str = "test" - @io.putc(str).should equal(str) - end - - it "correctly updates the current position" do - @io.putc("t") - @io.pos.should == 1 - - @io.putc("test") - @io.pos.should == 2 - - @io.putc("t") - @io.pos.should == 3 - end -end - -describe "StringIO#putc when passed [Object]" do - before :each do - @io = StringIO.new('example') - end - - it "it writes the passed Integer % 256 to self" do - @io.putc(333) # 333 % 256 == ?M - @io.string.should == "Mxample" - - @io.putc(-450) # -450 % 256 == ?> - @io.string.should == "M>ample" - end - - it "pads self with \\000 when the current position is after the end" do - @io.pos = 10 - @io.putc(?A) - @io.string.should == "example\000\000\000A" - end - - it "tries to convert the passed argument to an Integer using #to_int" do - obj = mock('to_int') - obj.should_receive(:to_int).and_return(116) - @io.putc(obj) - @io.string.should == "txample" - end - - it "raises a TypeError when the passed argument can't be coerced to Integer" do - lambda { @io.putc(Object.new) }.should raise_error(TypeError) - end -end - -describe "StringIO#putc when in append mode" do - it "appends to the end of self" do - io = StringIO.new("test", "a") - io.putc(?t) - io.string.should == "testt" - end -end - -describe "StringIO#putc when self is not writable" do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io.putc(?a) }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io.putc("t") }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/puts_spec.rb b/spec/rubyspec/library/stringio/puts_spec.rb deleted file mode 100644 index 93a676aa15..0000000000 --- a/spec/rubyspec/library/stringio/puts_spec.rb +++ /dev/null @@ -1,159 +0,0 @@ -# -*- encoding: utf-8 -*- - -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#puts when passed an Array" do - before :each do - @io = StringIO.new - end - - it "writes each element of the passed Array to self, separated by a newline" do - @io.puts([1, 2, 3, 4]) - @io.string.should == "1\n2\n3\n4\n" - - @io.puts([1, 2], [3, 4]) - @io.string.should == "1\n2\n3\n4\n1\n2\n3\n4\n" - end - - it "flattens nested Arrays" do - @io.puts([1, [2, [3, [4]]]]) - @io.string.should == "1\n2\n3\n4\n" - end - - it "handles self-recursive arrays correctly" do - (ary = [5]) - ary << ary - @io.puts(ary) - @io.string.should == "5\n[...]\n" - end - - it "does not honor the global output record separator $\\" do - begin - old_rs, $\ = $\, "test" - @io.puts([1, 2, 3, 4]) - @io.string.should == "1\n2\n3\n4\n" - ensure - $\ = old_rs - end - end - - it "first tries to convert each Array element to an Array using #to_ary" do - obj = mock("Object") - obj.should_receive(:to_ary).and_return(["to_ary"]) - @io.puts([obj]) - @io.string.should == "to_ary\n" - end - - it "then tries to convert each Array element to a String using #to_s" do - obj = mock("Object") - obj.should_receive(:to_s).and_return("to_s") - @io.puts([obj]) - @io.string.should == "to_s\n" - end -end - -describe "StringIO#puts when passed 1 or more objects" do - before :each do - @io = StringIO.new - end - - it "does not honor the global output record separator $\\" do - begin - old_rs, $\ = $\, "test" - @io.puts(1, 2, 3, 4) - @io.string.should == "1\n2\n3\n4\n" - ensure - $\ = old_rs - end - end - - it "does not put a \\n after each Objects that end in a newline" do - @io.puts("1\n", "2\n", "3\n") - @io.string.should == "1\n2\n3\n" - end - - it "first tries to convert each Object to an Array using #to_ary" do - obj = mock("Object") - obj.should_receive(:to_ary).and_return(["to_ary"]) - @io.puts(obj) - @io.string.should == "to_ary\n" - end - - it "then tries to convert each Object to a String using #to_s" do - obj = mock("Object") - obj.should_receive(:to_s).and_return("to_s") - @io.puts(obj) - @io.string.should == "to_s\n" - end - - it "prints a newline when passed an empty string" do - @io.puts '' - @io.string.should == "\n" - end -end - -describe "StringIO#puts when passed no arguments" do - before :each do - @io = StringIO.new - end - - it "returns nil" do - @io.puts.should be_nil - end - - it "prints a newline" do - @io.puts - @io.string.should == "\n" - end - - it "does not honor the global output record separator $\\" do - begin - old_rs, $\ = $\, "test" - @io.puts - @io.string.should == "\n" - ensure - $\ = old_rs - end - end -end - -describe "StringIO#puts when in append mode" do - before :each do - @io = StringIO.new("example", "a") - end - - it "appends the passed argument to the end of self" do - @io.puts(", just testing") - @io.string.should == "example, just testing\n" - - @io.puts(" and more testing") - @io.string.should == "example, just testing\n and more testing\n" - end - - it "correctly updates self's position" do - @io.puts(", testing") - @io.pos.should eql(17) - end -end - -describe "StringIO#puts when self is not writable" do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io.puts }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io.puts }.should raise_error(IOError) - end -end - -describe "StringIO#puts when passed an encoded string" do - it "stores the bytes unmodified" do - io = StringIO.new("") - io.puts "\x00\x01\x02" - io.puts "æåø" - - io.string.should == "\x00\x01\x02\næåø\n" - end -end diff --git a/spec/rubyspec/library/stringio/read_nonblock_spec.rb b/spec/rubyspec/library/stringio/read_nonblock_spec.rb deleted file mode 100644 index 84aefe8de7..0000000000 --- a/spec/rubyspec/library/stringio/read_nonblock_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" -require File.expand_path('../shared/read', __FILE__) -require File.expand_path('../shared/sysread', __FILE__) - -describe "StringIO#read_nonblock when passed length, buffer" do - it_behaves_like :stringio_read, :read_nonblock -end - -describe "StringIO#read_nonblock when passed length" do - it_behaves_like :stringio_read_length, :read_nonblock -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 diff --git a/spec/rubyspec/library/stringio/read_spec.rb b/spec/rubyspec/library/stringio/read_spec.rb deleted file mode 100644 index 2b9c6e10b2..0000000000 --- a/spec/rubyspec/library/stringio/read_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" -require File.expand_path('../shared/read', __FILE__) - -describe "StringIO#read when passed length, buffer" do - it_behaves_like :stringio_read, :read -end - -describe "StringIO#read when passed [length]" do - it_behaves_like :stringio_read_length, :read -end - -describe "StringIO#read when passed no arguments" do - it_behaves_like :stringio_read_no_arguments, :read - - it "returns an empty string if at EOF" do - @io.read.should == "example" - @io.read.should == "" - end -end - -describe "StringIO#read when passed nil" do - it_behaves_like :stringio_read_nil, :read - - it "returns an empty string if at EOF" do - @io.read(nil).should == "example" - @io.read(nil).should == "" - end -end - -describe "StringIO#read when self is not readable" do - it_behaves_like :stringio_read_not_readable, :read -end - -describe "StringIO#read when passed [length]" do - before :each do - @io = StringIO.new("example") - end - - it "returns nil when self's position is at the end" do - @io.pos = 7 - @io.read(10).should be_nil - end - - it "returns an empty String when length is 0" do - @io.read(0).should == "" - end -end - -describe "StringIO#read when passed length and a buffer" do - before :each do - @io = StringIO.new("abcdefghijklmnopqrstuvwxyz") - end - - it "reads [length] characters into the buffer" do - buf = "foo" - result = @io.read(10, buf) - - buf.should == "abcdefghij" - result.should equal(buf) - end -end diff --git a/spec/rubyspec/library/stringio/readbyte_spec.rb b/spec/rubyspec/library/stringio/readbyte_spec.rb deleted file mode 100644 index 0fbc49a4dd..0000000000 --- a/spec/rubyspec/library/stringio/readbyte_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/readchar', __FILE__) - -describe "StringIO#readbyte" do - it_behaves_like :stringio_readchar, :readbyte - - it "reads the next 8-bit byte from self's current position" do - io = StringIO.new("example") - - io.send(@method).should == 101 - - io.pos = 4 - io.send(@method).should == 112 - end -end - -describe "StringIO#readbyte when self is not readable" do - it_behaves_like :stringio_readchar_not_readable, :readbyte -end diff --git a/spec/rubyspec/library/stringio/readchar_spec.rb b/spec/rubyspec/library/stringio/readchar_spec.rb deleted file mode 100644 index af673c871a..0000000000 --- a/spec/rubyspec/library/stringio/readchar_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' -require File.expand_path('../shared/readchar', __FILE__) - -describe "StringIO#readchar" do - it_behaves_like :stringio_readchar, :readchar - - it "reads the next 8-bit byte from self's current position" do - io = StringIO.new("example") - - io.send(@method).should == ?e - - io.pos = 4 - io.send(@method).should == ?p - end -end - -describe "StringIO#readchar when self is not readable" do - it_behaves_like :stringio_readchar_not_readable, :readchar -end diff --git a/spec/rubyspec/library/stringio/readline_spec.rb b/spec/rubyspec/library/stringio/readline_spec.rb deleted file mode 100644 index 90890e3ad1..0000000000 --- a/spec/rubyspec/library/stringio/readline_spec.rb +++ /dev/null @@ -1,122 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - - -describe "StringIO#readline when passed [separator]" do - before :each do - @io = StringIO.new("this>is>an>example") - end - - it "returns the data read till the next occurence of the passed separator" do - @io.readline(">").should == "this>" - @io.readline(">").should == "is>" - @io.readline(">").should == "an>" - @io.readline(">").should == "example" - end - - it "sets $_ to the read content" do - @io.readline(">") - $_.should == "this>" - @io.readline(">") - $_.should == "is>" - @io.readline(">") - $_.should == "an>" - @io.readline(">") - $_.should == "example" - end - - it "updates self's lineno by one" do - @io.readline(">") - @io.lineno.should eql(1) - - @io.readline(">") - @io.lineno.should eql(2) - - @io.readline(">") - @io.lineno.should eql(3) - end - - it "returns the next paragraph when the passed separator is an empty String" do - io = StringIO.new("this is\n\nan example") - io.readline("").should == "this is\n\n" - io.readline("").should == "an example" - end - - it "returns the remaining content starting at the current position when passed nil" do - io = StringIO.new("this is\n\nan example") - io.pos = 5 - io.readline(nil).should == "is\n\nan example" - end - - it "tries to convert the passed separator to a String using #to_str" do - obj = mock('to_str') - obj.should_receive(:to_str).and_return(">") - @io.readline(obj).should == "this>" - end -end - -describe "StringIO#readline when passed no argument" do - before :each do - @io = StringIO.new("this is\nan example\nfor StringIO#readline") - end - - it "returns the data read till the next occurence of $/ or till eof" do - @io.readline.should == "this is\n" - - begin - old_sep, $/ = $/, " " - @io.readline.should == "an " - @io.readline.should == "example\nfor " - @io.readline.should == "StringIO#readline" - ensure - $/ = old_sep - end - end - - it "sets $_ to the read content" do - @io.readline - $_.should == "this is\n" - @io.readline - $_.should == "an example\n" - @io.readline - $_.should == "for StringIO#readline" - end - - it "updates self's position" do - @io.readline - @io.pos.should eql(8) - - @io.readline - @io.pos.should eql(19) - - @io.readline - @io.pos.should eql(40) - end - - it "updates self's lineno" do - @io.readline - @io.lineno.should eql(1) - - @io.readline - @io.lineno.should eql(2) - - @io.readline - @io.lineno.should eql(3) - end - - it "raises an IOError if self is at the end" do - @io.pos = 40 - lambda { @io.readline }.should raise_error(IOError) - end -end - -describe "StringIO#readline when in write-only mode" do - it "raises an IOError" do - io = StringIO.new("xyz", "w") - lambda { io.readline }.should raise_error(IOError) - - io = StringIO.new("xyz") - io.close_read - lambda { io.readline }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/readlines_spec.rb b/spec/rubyspec/library/stringio/readlines_spec.rb deleted file mode 100644 index 215a6cbb2a..0000000000 --- a/spec/rubyspec/library/stringio/readlines_spec.rb +++ /dev/null @@ -1,92 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#readlines when passed [separator]" do - before :each do - @io = StringIO.new("this>is>an>example") - end - - it "returns an Array containing lines based on the passed separator" do - @io.readlines(">").should == ["this>", "is>", "an>", "example"] - end - - it "updates self's position based on the number of read bytes" do - @io.readlines(">") - @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) - end - - it "does not change $_" do - $_ = "test" - @io.readlines(">") - $_.should == "test" - end - - it "returns an Array containing all paragraphs when the passed separator is an empty String" do - io = StringIO.new("this is\n\nan example") - io.readlines("").should == ["this is\n\n", "an example"] - end - - it "returns the remaining content as one line starting at the current position when passed nil" do - io = StringIO.new("this is\n\nan example") - io.pos = 5 - io.readlines(nil).should == ["is\n\nan example"] - end - - it "tries to convert the passed separator to a String using #to_str" do - obj = mock('to_str') - obj.stub!(:to_str).and_return(">") - @io.readlines(obj).should == ["this>", "is>", "an>", "example"] - end -end - -describe "StringIO#readlines when passed no argument" do - before :each do - @io = StringIO.new("this is\nan example\nfor StringIO#readlines") - end - - it "returns an Array containing lines based on $/" do - begin - old_sep, $/ = $/, " " - @io.readlines.should == ["this ", "is\nan ", "example\nfor ", "StringIO#readlines"] - ensure - $/ = old_sep - end - end - - it "updates self's position based on the number of read bytes" do - @io.readlines - @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) - end - - it "does not change $_" do - $_ = "test" - @io.readlines(">") - $_.should == "test" - end - - it "returns an empty Array when self is at the end" do - @io.pos = 41 - @io.readlines.should == [] - end -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") - io.close_read - lambda { io.readlines }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/readpartial_spec.rb b/spec/rubyspec/library/stringio/readpartial_spec.rb deleted file mode 100644 index e65e50fa41..0000000000 --- a/spec/rubyspec/library/stringio/readpartial_spec.rb +++ /dev/null @@ -1,80 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#readpartial" do - before :each do - @string = StringIO.new('Stop, look, listen') - end - - after :each do - @string.close unless @string.closed? - end - - it "raises IOError on closed stream" do - @string.close - lambda { @string.readpartial(10) }.should raise_error(IOError) - end - - it "reads at most the specified number of bytes" do - - # buffered read - @string.read(1).should == 'S' - # return only specified number, not the whole buffer - @string.readpartial(1).should == "t" - end - - it "reads after ungetc with data in the buffer" do - c = @string.getc - @string.ungetc(c) - @string.readpartial(4).should == "Stop" - @string.readpartial(3).should == ", l" - end - - it "reads after ungetc without data in the buffer" do - @string = StringIO.new - @string.write("f").should == 1 - @string.rewind - c = @string.getc - c.should == 'f' - @string.ungetc(c).should == nil - - @string.readpartial(2).should == "f" - @string.rewind - # now, also check that the ungot char is cleared and - # not returned again - @string.write("b").should == 1 - @string.rewind - @string.readpartial(2).should == "b" - end - - it "discards the existing buffer content upon successful read" do - buffer = "existing" - @string.readpartial(11, buffer) - buffer.should == "Stop, look," - end - - it "raises EOFError on EOF" do - @string.readpartial(18).should == 'Stop, look, listen' - lambda { @string.readpartial(10) }.should raise_error(EOFError) - end - - it "discards the existing buffer content upon error" do - buffer = 'hello' - @string.readpartial(100) - lambda { @string.readpartial(1, buffer) }.should raise_error(EOFError) - buffer.should be_empty - end - - it "raises IOError if the stream is closed" do - @string.close - lambda { @string.readpartial(1) }.should raise_error(IOError) - end - - it "raises ArgumentError if the negative argument is provided" do - lambda { @string.readpartial(-1) }.should raise_error(ArgumentError) - end - - it "immediately returns an empty string if the length argument is 0" do - @string.readpartial(0).should == "" - end -end diff --git a/spec/rubyspec/library/stringio/reopen_spec.rb b/spec/rubyspec/library/stringio/reopen_spec.rb deleted file mode 100644 index abdecdf9de..0000000000 --- a/spec/rubyspec/library/stringio/reopen_spec.rb +++ /dev/null @@ -1,288 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#reopen when passed [Object, Integer]" do - before :each do - @io = StringIO.new("example") - end - - it "reopens self with the passed Object in the passed mode" do - @io.reopen("reopened", IO::RDONLY) - @io.closed_read?.should be_false - @io.closed_write?.should be_true - @io.string.should == "reopened" - - @io.reopen("reopened, twice", IO::WRONLY) - @io.closed_read?.should be_true - @io.closed_write?.should be_false - @io.string.should == "reopened, twice" - - @io.reopen("reopened, another time", IO::RDWR) - @io.closed_read?.should be_false - @io.closed_write?.should be_false - @io.string.should == "reopened, another time" - end - - # NOTE: WEIRD! - it "does not taint self when the passed Object was tainted" do - @io.reopen("reopened".taint, IO::RDONLY) - @io.tainted?.should be_false - - @io.reopen("reopened".taint, IO::WRONLY) - @io.tainted?.should be_false - end - - it "tries to convert the passed Object to a String using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return("to_str") - @io.reopen(obj, IO::RDWR) - @io.string.should == "to_str" - end - - it "raises a TypeError when the passed Object can't be converted to a String" do - lambda { @io.reopen(Object.new, IO::RDWR) }.should raise_error(TypeError) - end - - it "raises an Errno::EACCES when trying to reopen self with a frozen String in write-mode" do - lambda { @io.reopen("burn".freeze, IO::WRONLY) }.should raise_error(Errno::EACCES) - lambda { @io.reopen("burn".freeze, IO::WRONLY | IO::APPEND) }.should raise_error(Errno::EACCES) - end - - it "raises a RuntimeError when trying to reopen self with a frozen String in truncate-mode" do - lambda { @io.reopen("burn".freeze, IO::RDONLY | IO::TRUNC) }.should raise_error(RuntimeError) - end - - it "does not raise IOError when passed a frozen String in read-mode" do - @io.reopen("burn".freeze, IO::RDONLY) - @io.string.should == "burn" - end -end - -describe "StringIO#reopen when passed [Object, Object]" do - before :each do - @io = StringIO.new("example") - end - - it "reopens self with the passed Object in the passed mode" do - @io.reopen("reopened", "r") - @io.closed_read?.should be_false - @io.closed_write?.should be_true - @io.string.should == "reopened" - - @io.reopen("reopened, twice", "r+") - @io.closed_read?.should be_false - @io.closed_write?.should be_false - @io.string.should == "reopened, twice" - - @io.reopen("reopened, another", "w+") - @io.closed_read?.should be_false - @io.closed_write?.should be_false - @io.string.should == "" - - @io.reopen("reopened, another time", "r+") - @io.closed_read?.should be_false - @io.closed_write?.should be_false - @io.string.should == "reopened, another time" - end - - it "truncates the passed String when opened in truncate mode" do - @io.reopen(str = "reopened", "w") - str.should == "" - end - - # NOTE: WEIRD! - it "does not taint self when the passed Object was tainted" do - @io.reopen("reopened".taint, "r") - @io.tainted?.should be_false - - @io.reopen("reopened".taint, "w") - @io.tainted?.should be_false - end - - it "tries to convert the passed Object to a String using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return("to_str") - @io.reopen(obj, "r") - @io.string.should == "to_str" - end - - it "raises a TypeError when the passed Object can't be converted to a String using #to_str" do - lambda { @io.reopen(Object.new, "r") }.should raise_error(TypeError) - end - - it "resets self's position to 0" do - @io.read(5) - @io.reopen("reopened") - @io.pos.should eql(0) - end - - it "resets self's line number to 0" do - @io.gets - @io.reopen("reopened") - @io.lineno.should eql(0) - end - - it "tries to convert the passed mode Object to an Integer using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return("r") - @io.reopen("reopened", obj) - @io.closed_read?.should be_false - @io.closed_write?.should be_true - @io.string.should == "reopened" - end - - it "raises an Errno::EACCES error when trying to reopen self with a frozen String in write-mode" do - lambda { @io.reopen("burn".freeze, 'w') }.should raise_error(Errno::EACCES) - lambda { @io.reopen("burn".freeze, 'w+') }.should raise_error(Errno::EACCES) - lambda { @io.reopen("burn".freeze, 'a') }.should raise_error(Errno::EACCES) - lambda { @io.reopen("burn".freeze, "r+") }.should raise_error(Errno::EACCES) - end - - it "does not raise IOError if a frozen string is passed in read mode" do - @io.reopen("burn".freeze, "r") - @io.string.should == "burn" - end -end - -describe "StringIO#reopen when passed [String]" do - before :each do - @io = StringIO.new("example") - end - - it "reopens self with the passed String in read-write mode" do - @io.close - - @io.reopen("reopened") - - @io.closed_write?.should be_false - @io.closed_read?.should be_false - - @io.string.should == "reopened" - end - - # NOTE: WEIRD! - it "does not taint self when the passed Object was tainted" do - @io.reopen("reopened".taint) - @io.tainted?.should be_false - end - - it "resets self's position to 0" do - @io.read(5) - @io.reopen("reopened") - @io.pos.should eql(0) - end - - it "resets self's line number to 0" do - @io.gets - @io.reopen("reopened") - @io.lineno.should eql(0) - end -end - -describe "StringIO#reopen when passed [Object]" do - before :each do - @io = StringIO.new("example") - end - - it "raises a TypeError when passed an Object that can't be converted to a StringIO" do - lambda { @io.reopen(Object.new) }.should raise_error(TypeError) - end - - it "does not try to convert the passed Object to a String using #to_str" do - obj = mock("not to_str") - obj.should_not_receive(:to_str) - lambda { @io.reopen(obj) }.should raise_error(TypeError) - end - - it "tries to convert the passed Object to a StringIO using #to_strio" do - obj = mock("to_strio") - obj.should_receive(:to_strio).and_return(StringIO.new("to_strio")) - @io.reopen(obj) - @io.string.should == "to_strio" - end - - # NOTE: WEIRD! - it "taints self when the passed Object was tainted" do - @io.reopen(StringIO.new("reopened").taint) - @io.tainted?.should be_true - end -end - -describe "StringIO#reopen when passed no arguments" do - before :each do - @io = StringIO.new("example\nsecond line") - end - - it "resets self's mode to read-write" do - @io.close - @io.reopen - @io.closed_read?.should be_false - @io.closed_write?.should be_false - end - - it "resets self's position to 0" do - @io.read(5) - @io.reopen - @io.pos.should eql(0) - end - - it "resets self's line number to 0" do - @io.gets - @io.reopen - @io.lineno.should eql(0) - end -end - -# NOTE: Some reopen specs disabled due to MRI bugs. See: -# http://rubyforge.org/tracker/index.php?func=detail&aid=13919&group_id=426&atid=1698 -# for details. -describe "StringIO#reopen" do - before :each do - @io = StringIO.new('hello','a') - end - - # TODO: find out if this is really a bug - it "reopens a stream when given a String argument" do - @io.reopen('goodbye').should == @io - @io.string.should == 'goodbye' - @io << 'x' - @io.string.should == 'xoodbye' - end - - it "reopens a stream in append mode when flagged as such" do - @io.reopen('goodbye', 'a').should == @io - @io.string.should == 'goodbye' - @io << 'x' - @io.string.should == 'goodbyex' - end - - it "reopens and truncate when reopened in write mode" do - @io.reopen('goodbye', 'wb').should == @io - @io.string.should == '' - @io << 'x' - @io.string.should == 'x' - end - - it "truncates the given string, not a copy" do - str = 'goodbye' - @io.reopen(str, 'w') - @io.string.should == '' - str.should == '' - end - - it "taints self if the provided StringIO argument is tainted" do - new_io = StringIO.new("tainted") - new_io.taint - @io.reopen(new_io) - @io.tainted?.should == true - end - - it "does not truncate the content even when the StringIO argument is in the truncate mode" do - orig_io = StringIO.new("Original StringIO", IO::RDWR|IO::TRUNC) - orig_io.write("BLAH") # make sure the content is not empty - - @io.reopen(orig_io) - @io.string.should == "BLAH" - end - -end diff --git a/spec/rubyspec/library/stringio/rewind_spec.rb b/spec/rubyspec/library/stringio/rewind_spec.rb deleted file mode 100644 index ef144a9f5f..0000000000 --- a/spec/rubyspec/library/stringio/rewind_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#rewind" do - before :each do - @io = StringIO.new("hello\nworld") - @io.pos = 3 - @io.lineno = 1 - end - - it "returns 0" do - @io.rewind.should eql(0) - end - - it "resets the position" do - @io.rewind - @io.pos.should == 0 - end - - it "resets the line number" do - @io.rewind - @io.lineno.should == 0 - end -end diff --git a/spec/rubyspec/library/stringio/seek_spec.rb b/spec/rubyspec/library/stringio/seek_spec.rb deleted file mode 100644 index ec79122039..0000000000 --- a/spec/rubyspec/library/stringio/seek_spec.rb +++ /dev/null @@ -1,67 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#seek" do - before :each do - @io = StringIO.new("12345678") - end - - it "seeks from the current position when whence is IO::SEEK_CUR" do - @io.pos = 1 - @io.seek(1, IO::SEEK_CUR) - @io.pos.should eql(2) - - @io.seek(-1, IO::SEEK_CUR) - @io.pos.should eql(1) - end - - it "seeks from the end of self when whence is IO::SEEK_END" do - @io.seek(3, IO::SEEK_END) - @io.pos.should eql(11) # Outside of the StringIO's content - - @io.seek(-2, IO::SEEK_END) - @io.pos.should eql(6) - end - - it "seeks to an absolute position when whence is IO::SEEK_SET" do - @io.seek(5, IO::SEEK_SET) - @io.pos.should == 5 - - @io.pos = 3 - @io.seek(5, IO::SEEK_SET) - @io.pos.should == 5 - end - - it "raises an Errno::EINVAL error on negative amounts when whence is IO::SEEK_SET" do - lambda { @io.seek(-5, IO::SEEK_SET) }.should raise_error(Errno::EINVAL) - end - - it "raises an Errno::EINVAL error on incorrect whence argument" do - lambda { @io.seek(0, 3) }.should raise_error(Errno::EINVAL) - lambda { @io.seek(0, -1) }.should raise_error(Errno::EINVAL) - lambda { @io.seek(0, 2**16) }.should raise_error(Errno::EINVAL) - lambda { @io.seek(0, -2**16) }.should raise_error(Errno::EINVAL) - end - - it "tries to convert the passed Object to a String using #to_int" do - obj = mock("to_int") - obj.should_receive(:to_int).and_return(2) - @io.seek(obj) - @io.pos.should eql(2) - end - - it "raises a TypeError when the passed Object can't be converted to an Integer" do - lambda { @io.seek(Object.new) }.should raise_error(TypeError) - end -end - -describe "StringIO#seek when self is closed" do - before :each do - @io = StringIO.new("example") - @io.close - end - - it "raises an IOError" do - lambda { @io.seek(5) }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/set_encoding_spec.rb b/spec/rubyspec/library/stringio/set_encoding_spec.rb deleted file mode 100644 index c66c70ab04..0000000000 --- a/spec/rubyspec/library/stringio/set_encoding_spec.rb +++ /dev/null @@ -1,10 +0,0 @@ -require 'stringio' -require File.expand_path('../../../spec_helper', __FILE__) - -describe "StringIO#set_encoding" do - it "sets the encoding of the underlying String" do - io = StringIO.new - io.set_encoding Encoding::UTF_8 - io.string.encoding.should == Encoding::UTF_8 - end -end diff --git a/spec/rubyspec/library/stringio/shared/codepoints.rb b/spec/rubyspec/library/stringio/shared/codepoints.rb deleted file mode 100644 index c8ca03329f..0000000000 --- a/spec/rubyspec/library/stringio/shared/codepoints.rb +++ /dev/null @@ -1,45 +0,0 @@ -# -*- encoding: utf-8 -*- -describe :stringio_codepoints, shared: true do - before :each do - @io = StringIO.new("∂φ/∂x = gaîté") - @enum = @io.send(@method) - end - - it "returns an Enumerator" do - @enum.should be_an_instance_of(Enumerator) - end - - it "yields each codepoint code in turn" do - @enum.to_a.should == [8706, 966, 47, 8706, 120, 32, 61, 32, 103, 97, 238, 116, 233] - end - - it "yields each codepoint starting from the current position" do - @io.pos = 15 - @enum.to_a.should == [238, 116, 233] - end - - it "raises an error if reading invalid sequence" do - @io.pos = 1 # inside of a multibyte sequence - lambda { @enum.first }.should raise_error(ArgumentError) - end - - it "raises an IOError if not readable" do - @io.close_read - lambda { @enum.to_a }.should raise_error(IOError) - - io = StringIO.new("xyz", "w") - lambda { io.send(@method).to_a }.should raise_error(IOError) - end - - - it "calls the given block" do - r = [] - @io.send(@method){|c| r << c } - r.should == [8706, 966, 47, 8706, 120, 32, 61, 32, 103, 97, 238, 116, 233] - end - - it "returns self" do - @io.send(@method) {|l| l }.should equal(@io) - end - -end diff --git a/spec/rubyspec/library/stringio/shared/each.rb b/spec/rubyspec/library/stringio/shared/each.rb deleted file mode 100644 index 0fde23634e..0000000000 --- a/spec/rubyspec/library/stringio/shared/each.rb +++ /dev/null @@ -1,105 +0,0 @@ -describe :stringio_each_separator, shared: true do - before :each do - @io = StringIO.new("a b c d e\n1 2 3 4 5") - end - - it "uses the passed argument as the line separator" do - seen = [] - @io.send(@method, " ") {|s| seen << s} - seen.should == ["a ", "b ", "c ", "d ", "e\n1 ", "2 ", "3 ", "4 ", "5"] - end - - it "does not change $_" do - $_ = "test" - @io.send(@method, " ") { |s| s} - $_.should == "test" - end - - it "returns self" do - @io.send(@method) {|l| l }.should equal(@io) - end - - it "tries to convert the passed separator to a String using #to_str" do - obj = mock("to_str") - obj.stub!(:to_str).and_return(" ") - - seen = [] - @io.send(@method, obj) { |l| seen << l } - seen.should == ["a ", "b ", "c ", "d ", "e\n1 ", "2 ", "3 ", "4 ", "5"] - end - - it "yields self's content starting from the current position when the passed separator is nil" do - seen = [] - io = StringIO.new("1 2 1 2 1 2") - io.pos = 2 - io.send(@method, nil) {|s| seen << s} - seen.should == ["2 1 2 1 2"] - end - - it "yields each paragraph when passed an empty String as separator" do - seen = [] - io = StringIO.new("para1\n\npara2\n\n\npara3") - io.send(@method, "") {|s| seen << s} - seen.should == ["para1\n\n", "para2\n\n", "para3"] - end -end - -describe :stringio_each_no_arguments, shared: true do - before :each do - @io = StringIO.new("a b c d e\n1 2 3 4 5") - end - - it "yields each line to the passed block" do - seen = [] - @io.send(@method) {|s| seen << s } - seen.should == ["a b c d e\n", "1 2 3 4 5"] - end - - it "yields each line starting from the current position" do - seen = [] - @io.pos = 4 - @io.send(@method) {|s| seen << s } - seen.should == ["c d e\n", "1 2 3 4 5"] - end - - it "does not change $_" do - $_ = "test" - @io.send(@method) { |s| s} - $_.should == "test" - end - - it "uses $/ as the default line separator" do - seen = [] - begin - old_rs, $/ = $/, " " - @io.send(@method) {|s| seen << s } - seen.should eql(["a ", "b ", "c ", "d ", "e\n1 ", "2 ", "3 ", "4 ", "5"]) - ensure - $/ = old_rs - end - end - - it "returns self" do - @io.send(@method) {|l| l }.should equal(@io) - end - - it "returns an Enumerator when passed no block" do - enum = @io.send(@method) - enum.instance_of?(Enumerator).should be_true - - seen = [] - enum.each { |b| seen << b } - seen.should == ["a b c d e\n", "1 2 3 4 5"] - end -end - -describe :stringio_each_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("a b c d e", "w") - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - - io = StringIO.new("a b c d e") - io.close_read - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/each_byte.rb b/spec/rubyspec/library/stringio/shared/each_byte.rb deleted file mode 100644 index 1dc48ee437..0000000000 --- a/spec/rubyspec/library/stringio/shared/each_byte.rb +++ /dev/null @@ -1,48 +0,0 @@ -describe :stringio_each_byte, shared: true do - before :each do - @io = StringIO.new("xyz") - end - - it "yields each character code in turn" do - seen = [] - @io.send(@method) { |b| seen << b } - seen.should == [120, 121, 122] - end - - it "updates the position before each yield" do - seen = [] - @io.send(@method) { |b| seen << @io.pos } - seen.should == [1, 2, 3] - end - - it "does not yield if the current position is out of bounds" do - @io.pos = 1000 - seen = nil - @io.send(@method) { |b| seen = b } - seen.should be_nil - end - - it "returns self" do - @io.send(@method) {}.should equal(@io) - end - - it "returns an Enumerator when passed no block" do - enum = @io.send(@method) - enum.instance_of?(Enumerator).should be_true - - seen = [] - enum.each { |b| seen << b } - seen.should == [120, 121, 122] - end -end - -describe :stringio_each_byte_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("xyz", "w") - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - - io = StringIO.new("xyz") - io.close_read - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/each_char.rb b/spec/rubyspec/library/stringio/shared/each_char.rb deleted file mode 100644 index 35efdcb749..0000000000 --- a/spec/rubyspec/library/stringio/shared/each_char.rb +++ /dev/null @@ -1,36 +0,0 @@ -# -*- encoding: utf-8 -*- -describe :stringio_each_char, shared: true do - before :each do - @io = StringIO.new("xyz äöü") - end - - it "yields each character code in turn" do - seen = [] - @io.send(@method) { |c| seen << c } - seen.should == ["x", "y", "z", " ", "ä", "ö", "ü"] - end - - it "returns self" do - @io.send(@method) {}.should equal(@io) - end - - it "returns an Enumerator when passed no block" do - enum = @io.send(@method) - enum.instance_of?(Enumerator).should be_true - - seen = [] - enum.each { |c| seen << c } - seen.should == ["x", "y", "z", " ", "ä", "ö", "ü"] - end -end - -describe :stringio_each_char_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("xyz", "w") - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - - io = StringIO.new("xyz") - io.close_read - lambda { io.send(@method) { |b| b } }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/eof.rb b/spec/rubyspec/library/stringio/shared/eof.rb deleted file mode 100644 index e0368a2892..0000000000 --- a/spec/rubyspec/library/stringio/shared/eof.rb +++ /dev/null @@ -1,24 +0,0 @@ -describe :stringio_eof, shared: true do - before :each do - @io = StringIO.new("eof") - end - - it "returns true when self's position is greater than or equal to self's size" do - @io.pos = 3 - @io.send(@method).should be_true - - @io.pos = 6 - @io.send(@method).should be_true - end - - it "returns false when self's position is less than self's size" do - @io.pos = 0 - @io.send(@method).should be_false - - @io.pos = 1 - @io.send(@method).should be_false - - @io.pos = 2 - @io.send(@method).should be_false - end -end diff --git a/spec/rubyspec/library/stringio/shared/getc.rb b/spec/rubyspec/library/stringio/shared/getc.rb deleted file mode 100644 index 3e064f9c1e..0000000000 --- a/spec/rubyspec/library/stringio/shared/getc.rb +++ /dev/null @@ -1,43 +0,0 @@ -describe :stringio_getc, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "increases self's position by one" do - @io.send(@method) - @io.pos.should eql(1) - - @io.send(@method) - @io.pos.should eql(2) - - @io.send(@method) - @io.pos.should eql(3) - end - - it "returns nil when called at the end of self" do - @io.pos = 7 - @io.send(@method).should be_nil - @io.send(@method).should be_nil - @io.send(@method).should be_nil - end - - it "does not increase self's position when called at the end of file" do - @io.pos = 7 - @io.send(@method) - @io.pos.should eql(7) - - @io.send(@method) - @io.pos.should eql(7) - end -end - -describe :stringio_getc_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("xyz", "w") - lambda { io.send(@method) }.should raise_error(IOError) - - io = StringIO.new("xyz") - io.close_read - lambda { io.send(@method) }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/isatty.rb b/spec/rubyspec/library/stringio/shared/isatty.rb deleted file mode 100644 index 3da5999953..0000000000 --- a/spec/rubyspec/library/stringio/shared/isatty.rb +++ /dev/null @@ -1,5 +0,0 @@ -describe :stringio_isatty, shared: true do - it "returns false" do - StringIO.new('tty').send(@method).should be_false - end -end diff --git a/spec/rubyspec/library/stringio/shared/length.rb b/spec/rubyspec/library/stringio/shared/length.rb deleted file mode 100644 index 60a4eb1bdd..0000000000 --- a/spec/rubyspec/library/stringio/shared/length.rb +++ /dev/null @@ -1,5 +0,0 @@ -describe :stringio_length, shared: true do - it "returns the length of the wrapped string" do - StringIO.new("example").send(@method).should == 7 - end -end diff --git a/spec/rubyspec/library/stringio/shared/read.rb b/spec/rubyspec/library/stringio/shared/read.rb deleted file mode 100644 index 025829a2b1..0000000000 --- a/spec/rubyspec/library/stringio/shared/read.rb +++ /dev/null @@ -1,121 +0,0 @@ -describe :stringio_read, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "returns the passed buffer String" do - # Note: Rubinius bug: - # @io.send(@method, 7, buffer = "").should equal(buffer) - ret = @io.send(@method, 7, buffer = "") - ret.should equal(buffer) - end - - it "reads length bytes and writes them to the buffer String" do - @io.send(@method, 7, buffer = "") - buffer.should == "example" - end - - it "tries to convert the passed buffer Object to a String using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return(buffer = "") - - @io.send(@method, 7, obj) - buffer.should == "example" - end - - it "raises a TypeError when the passed buffer Object can't be converted to a String" do - lambda { @io.send(@method, 7, Object.new) }.should raise_error(TypeError) - end - - it "raises an error when passed a frozen String as buffer" do - lambda { @io.send(@method, 7, "".freeze) }.should raise_error(RuntimeError) - end -end - -describe :stringio_read_length, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "reads length bytes from the current position and returns them" do - @io.pos = 3 - @io.send(@method, 4).should == "mple" - end - - it "reads at most the whole content" do - @io.send(@method, 999).should == "example" - end - - it "correctly updates the position" do - @io.send(@method, 3) - @io.pos.should eql(3) - - @io.send(@method, 999) - @io.pos.should eql(7) - end - - it "tries to convert the passed length to an Integer using #to_int" do - obj = mock("to_int") - obj.should_receive(:to_int).and_return(7) - @io.send(@method, obj).should == "example" - end - - it "raises a TypeError when the passed length can't be converted to an Integer" do - lambda { @io.send(@method, Object.new) }.should raise_error(TypeError) - end - - it "raises a TypeError when the passed length is negative" do - lambda { @io.send(@method, -2) }.should raise_error(ArgumentError) - end - - it "returns a binary String" do - @io.send(@method, 4).encoding.should == Encoding::ASCII_8BIT - end -end - -describe :stringio_read_no_arguments, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "reads the whole content starting from the current position" do - @io.send(@method).should == "example" - - @io.pos = 3 - @io.send(@method).should == "mple" - end - - it "correctly updates the current position" do - @io.send(@method) - @io.pos.should eql(7) - end -end - -describe :stringio_read_nil, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "returns the remaining content from the current position" do - @io.send(@method, nil).should == "example" - - @io.pos = 4 - @io.send(@method, nil).should == "ple" - end - - it "updates the current position" do - @io.send(@method, nil) - @io.pos.should eql(7) - end -end - -describe :stringio_read_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("test", "w") - lambda { io.send(@method) }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_read - lambda { io.send(@method) }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/readchar.rb b/spec/rubyspec/library/stringio/shared/readchar.rb deleted file mode 100644 index 19194f0680..0000000000 --- a/spec/rubyspec/library/stringio/shared/readchar.rb +++ /dev/null @@ -1,29 +0,0 @@ -describe :stringio_readchar, shared: true do - before :each do - @io = StringIO.new("example") - end - - it "correctly updates the current position" do - @io.send(@method) - @io.pos.should == 1 - - @io.send(@method) - @io.pos.should == 2 - end - - it "raises an EOFError when self is at the end" do - @io.pos = 7 - lambda { @io.send(@method) }.should raise_error(EOFError) - end -end - -describe :stringio_readchar_not_readable, shared: true do - it "raises an IOError" do - io = StringIO.new("a b c d e", "w") - lambda { io.send(@method) }.should raise_error(IOError) - - io = StringIO.new("a b c d e") - io.close_read - lambda { io.send(@method) }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/sysread.rb b/spec/rubyspec/library/stringio/shared/sysread.rb deleted file mode 100644 index 9800b2339b..0000000000 --- a/spec/rubyspec/library/stringio/shared/sysread.rb +++ /dev/null @@ -1,15 +0,0 @@ -describe :stringio_sysread_length, :shared => true do - before :each do - @io = StringIO.new("example") - end - - it "returns an empty String when passed 0 and no data remains" do - @io.send(@method, 8).should == "example" - @io.send(@method, 0).should == "" - end - - it "raises an EOFError when passed length > 0 and no data remains" do - @io.read.should == "example" - lambda { @io.sysread(1) }.should raise_error(EOFError) - end -end diff --git a/spec/rubyspec/library/stringio/shared/tell.rb b/spec/rubyspec/library/stringio/shared/tell.rb deleted file mode 100644 index 852c51c192..0000000000 --- a/spec/rubyspec/library/stringio/shared/tell.rb +++ /dev/null @@ -1,12 +0,0 @@ -describe :stringio_tell, shared: true do - before :each do - @io = StringIOSpecs.build - end - - it "returns the current byte offset" do - @io.getc - @io.send(@method).should == 1 - @io.read(7) - @io.send(@method).should == 8 - end -end diff --git a/spec/rubyspec/library/stringio/shared/write.rb b/spec/rubyspec/library/stringio/shared/write.rb deleted file mode 100644 index bcb548bbd0..0000000000 --- a/spec/rubyspec/library/stringio/shared/write.rb +++ /dev/null @@ -1,87 +0,0 @@ -describe :stringio_write, shared: true do - before :each do - @io = StringIO.new('12345') - end - - it "tries to convert the passed Object to a String using #to_s" do - obj = mock("to_s") - obj.should_receive(:to_s).and_return("to_s") - @io.send(@method, obj) - @io.string.should == "to_s5" - end -end - -describe :stringio_write_string, shared: true do - before :each do - @io = StringIO.new('12345') - end - - # TODO: RDoc says that #write appends at the current position. - it "writes the passed String at the current buffer position" do - @io.pos = 2 - @io.send(@method, 'x').should == 1 - @io.string.should == '12x45' - @io.send(@method, 7).should == 1 - @io.string.should == '12x75' - end - - it "pads self with \\000 when the current position is after the end" do - @io.pos = 8 - @io.send(@method, 'x') - @io.string.should == "12345\000\000\000x" - @io.send(@method, 9) - @io.string.should == "12345\000\000\000x9" - end - - it "returns the number of bytes written" do - @io.send(@method, '').should == 0 - @io.send(@method, nil).should == 0 - str = "1" * 100 - @io.send(@method, str).should == 100 - end - - it "updates self's position" do - @io.send(@method, 'test') - @io.pos.should eql(4) - end - - it "taints self's String when the passed argument is tainted" do - @io.send(@method, "test".taint) - @io.string.tainted?.should be_true - end - - it "does not taint self when the passed argument is tainted" do - @io.send(@method, "test".taint) - @io.tainted?.should be_false - end -end - -describe :stringio_write_not_writable, shared: true do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io.send(@method, "test") }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io.send(@method, "test") }.should raise_error(IOError) - end -end - -describe :stringio_write_append, shared: true do - before :each do - @io = StringIO.new("example", "a") - end - - it "appends the passed argument to the end of self" do - @io.send(@method, ", just testing") - @io.string.should == "example, just testing" - - @io.send(@method, " and more testing") - @io.string.should == "example, just testing and more testing" - end - - it "correctly updates self's position" do - @io.send(@method, ", testing") - @io.pos.should eql(16) - end -end diff --git a/spec/rubyspec/library/stringio/size_spec.rb b/spec/rubyspec/library/stringio/size_spec.rb deleted file mode 100644 index 1d6a7fc15e..0000000000 --- a/spec/rubyspec/library/stringio/size_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/length', __FILE__) - -describe "StringIO#size" do - it_behaves_like :stringio_length, :size -end diff --git a/spec/rubyspec/library/stringio/string_spec.rb b/spec/rubyspec/library/stringio/string_spec.rb deleted file mode 100644 index 7c4181b6de..0000000000 --- a/spec/rubyspec/library/stringio/string_spec.rb +++ /dev/null @@ -1,50 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#string" do - it "returns the underlying string" do - io = StringIO.new(str = "hello") - io.string.should equal(str) - end -end - -describe "StringIO#string=" do - before :each do - @io = StringIO.new("example\nstring") - end - - it "returns the passed String" do - str = "test" - (@io.string = str).should equal(str) - end - - it "changes the underlying string" do - str = "hello" - @io.string = str - @io.string.should equal(str) - end - - it "resets the position" do - @io.pos = 1 - @io.string = "other" - @io.pos.should eql(0) - end - - it "resets the line number" do - @io.lineno = 1 - @io.string = "other" - @io.lineno.should eql(0) - end - - it "tries to convert the passed Object to a String using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return("to_str") - - @io.string = obj - @io.string.should == "to_str" - end - - it "raises a TypeError when the passed Object can't be converted to an Integer" do - lambda { @io.seek(Object.new) }.should raise_error(TypeError) - end -end diff --git a/spec/rubyspec/library/stringio/stringio_spec.rb b/spec/rubyspec/library/stringio/stringio_spec.rb deleted file mode 100644 index 9e2cb9cf90..0000000000 --- a/spec/rubyspec/library/stringio/stringio_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" - -describe "StringIO" do - it "includes the Enumerable module" do - StringIO.should include(Enumerable) - end -end - diff --git a/spec/rubyspec/library/stringio/sync_spec.rb b/spec/rubyspec/library/stringio/sync_spec.rb deleted file mode 100644 index b662d7b7cc..0000000000 --- a/spec/rubyspec/library/stringio/sync_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#sync" do - it "returns true" do - StringIO.new('').sync.should be_true - end -end - -describe "StringIO#sync=" do - before :each do - @io = StringIO.new('') - end - - it "does not change 'sync' status" do - @io.sync = false - @io.sync.should be_true - end -end diff --git a/spec/rubyspec/library/stringio/sysread_spec.rb b/spec/rubyspec/library/stringio/sysread_spec.rb deleted file mode 100644 index cce8d8c88a..0000000000 --- a/spec/rubyspec/library/stringio/sysread_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" -require File.expand_path('../shared/read', __FILE__) - -describe "StringIO#sysread when passed length, buffer" do - it_behaves_like :stringio_read, :sysread -end - -describe "StringIO#sysread when passed [length]" do - it_behaves_like :stringio_read_length, :sysread -end - -describe "StringIO#sysread when passed no arguments" do - it_behaves_like :stringio_read_no_arguments, :sysread - - it "returns an empty String if at EOF" do - @io.sysread.should == "example" - @io.sysread.should == "" - end -end - -describe "StringIO#sysread when self is not readable" do - it_behaves_like :stringio_read_not_readable, :sysread -end - -describe "StringIO#sysread when passed nil" do - it_behaves_like :stringio_read_nil, :sysread - - it "returns an empty String if at EOF" do - @io.sysread(nil).should == "example" - @io.sysread(nil).should == "" - end -end - -describe "StringIO#sysread when passed [length]" do - before :each do - @io = StringIO.new("example") - end - - it "raises an EOFError when self's position is at the end" do - @io.pos = 7 - lambda { @io.sysread(10) }.should raise_error(EOFError) - end - - it "returns an empty String when length is 0" do - @io.sysread(0).should == "" - end -end diff --git a/spec/rubyspec/library/stringio/syswrite_spec.rb b/spec/rubyspec/library/stringio/syswrite_spec.rb deleted file mode 100644 index 8b65e81a05..0000000000 --- a/spec/rubyspec/library/stringio/syswrite_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/write', __FILE__) - -describe "StringIO#syswrite when passed [Object]" do - it_behaves_like :stringio_write, :syswrite -end - -describe "StringIO#syswrite when passed [String]" do - it_behaves_like :stringio_write_string, :syswrite -end - -describe "StringIO#syswrite when self is not writable" do - it_behaves_like :stringio_write_not_writable, :syswrite -end - -describe "StringIO#syswrite when in append mode" do - it_behaves_like :stringio_write_append, :syswrite -end diff --git a/spec/rubyspec/library/stringio/tell_spec.rb b/spec/rubyspec/library/stringio/tell_spec.rb deleted file mode 100644 index af6a01497e..0000000000 --- a/spec/rubyspec/library/stringio/tell_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/tell', __FILE__) - -describe "StringIO#tell" do - it_behaves_like :stringio_tell, :tell -end diff --git a/spec/rubyspec/library/stringio/truncate_spec.rb b/spec/rubyspec/library/stringio/truncate_spec.rb deleted file mode 100644 index 1023b3d13c..0000000000 --- a/spec/rubyspec/library/stringio/truncate_spec.rb +++ /dev/null @@ -1,70 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require "stringio" - -describe "StringIO#truncate when passed [length]" do - before :each do - @io = StringIO.new('123456789') - end - - # TODO: Report to Ruby-Core: The RDoc says it always returns 0 - it "returns the passed length" do - @io.truncate(4).should eql(4) - @io.truncate(10).should eql(10) - end - - it "truncated the underlying string down to the passed length" do - @io.truncate(4) - @io.string.should == "1234" - end - - it "does not create a copy of the underlying string" do - io = StringIO.new(str = "123456789") - io.truncate(4) - io.string.should equal(str) - end - - it "does not change the position" do - @io.pos = 7 - @io.truncate(4) - @io.pos.should eql(7) - end - - it "can grow a string to a larger size, padding it with \\000" do - @io.truncate(12) - @io.string.should == "123456789\000\000\000" - end - - it "raises an Errno::EINVAL when the passed length is negative" do - lambda { @io.truncate(-1) }.should raise_error(Errno::EINVAL) - lambda { @io.truncate(-10) }.should raise_error(Errno::EINVAL) - end - - it "tries to convert the passed length to an Integer using #to_int" do - obj = mock("to_int") - obj.should_receive(:to_int).and_return(4) - - @io.truncate(obj) - @io.string.should == "1234" - end - - it "returns the passed length Object, NOT the result of #to_int" do - obj = mock("to_int") - obj.should_receive(:to_int).and_return(4) - @io.truncate(obj).should equal(obj) - end - - it "raises a TypeError when the passed length can't be converted to an Integer" do - lambda { @io.truncate(Object.new) }.should raise_error(TypeError) - end -end - -describe "StringIO#truncate when self is not writable" do - it "raises an IOError" do - io = StringIO.new("test", "r") - lambda { io.truncate(2) }.should raise_error(IOError) - - io = StringIO.new("test") - io.close_write - lambda { io.truncate(2) }.should raise_error(IOError) - end -end diff --git a/spec/rubyspec/library/stringio/tty_spec.rb b/spec/rubyspec/library/stringio/tty_spec.rb deleted file mode 100644 index 7540e68a2b..0000000000 --- a/spec/rubyspec/library/stringio/tty_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/isatty', __FILE__) - -describe "StringIO#tty?" do - it_behaves_like :stringio_isatty, :tty? -end diff --git a/spec/rubyspec/library/stringio/ungetbyte_spec.rb b/spec/rubyspec/library/stringio/ungetbyte_spec.rb deleted file mode 100644 index a7d9b28024..0000000000 --- a/spec/rubyspec/library/stringio/ungetbyte_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require 'stringio' - -describe "StringIO#ungetbyte" do - it "needs to be reviewed for spec completeness" -end diff --git a/spec/rubyspec/library/stringio/ungetc_spec.rb b/spec/rubyspec/library/stringio/ungetc_spec.rb deleted file mode 100644 index 613d49cfbd..0000000000 --- a/spec/rubyspec/library/stringio/ungetc_spec.rb +++ /dev/null @@ -1,72 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) - -describe "StringIO#ungetc when passed [char]" do - before :each do - @io = StringIO.new('1234') - end - - it "writes the passed char before the current position" do - @io.pos = 1 - @io.ungetc(?A) - @io.string.should == 'A234' - end - - it "returns nil" do - @io.pos = 1 - @io.ungetc(?A).should be_nil - end - - it "decreases the current position by one" do - @io.pos = 2 - @io.ungetc(?A) - @io.pos.should eql(1) - end - - it "pads with \\000 when the current position is after the end" do - @io.pos = 15 - @io.ungetc(?A) - @io.string.should == "1234\000\000\000\000\000\000\000\000\000\000A" - end - - it "tries to convert the passed argument to an String using #to_str" do - obj = mock("to_str") - obj.should_receive(:to_str).and_return(?A) - - @io.pos = 1 - @io.ungetc(obj) - @io.string.should == "A234" - end - - it "raises a TypeError when the passed length can't be converted to an Integer or String" do - lambda { @io.ungetc(Object.new) }.should raise_error(TypeError) - end -end - -describe "StringIO#ungetc when self is not readable" do - it "raises an IOError" do - io = StringIO.new("test", "w") - io.pos = 1 - lambda { io.ungetc(?A) }.should raise_error(IOError) - - io = StringIO.new("test") - io.pos = 1 - io.close_read - lambda { io.ungetc(?A) }.should raise_error(IOError) - end -end - -# Note: This is incorrect. -# -# describe "StringIO#ungetc when self is not writable" do -# it "raises an IOError" do -# io = StringIO.new("test", "r") -# io.pos = 1 -# lambda { io.ungetc(?A) }.should raise_error(IOError) -# -# io = StringIO.new("test") -# io.pos = 1 -# io.close_write -# lambda { io.ungetc(?A) }.should raise_error(IOError) -# end -# end diff --git a/spec/rubyspec/library/stringio/write_nonblock_spec.rb b/spec/rubyspec/library/stringio/write_nonblock_spec.rb deleted file mode 100644 index d4d5ab5a85..0000000000 --- a/spec/rubyspec/library/stringio/write_nonblock_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/write', __FILE__) - -describe "StringIO#write_nonblock when passed [Object]" do - it_behaves_like :stringio_write, :write_nonblock -end - -describe "StringIO#write_nonblock when passed [String]" do - it_behaves_like :stringio_write_string, :write_nonblock -end - -describe "StringIO#write_nonblock when self is not writable" do - it_behaves_like :stringio_write_not_writable, :write_nonblock -end - -describe "StringIO#write_nonblock when in append mode" do - it_behaves_like :stringio_write_append, :write_nonblock -end diff --git a/spec/rubyspec/library/stringio/write_spec.rb b/spec/rubyspec/library/stringio/write_spec.rb deleted file mode 100644 index 706234da7e..0000000000 --- a/spec/rubyspec/library/stringio/write_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes', __FILE__) -require File.expand_path('../shared/write', __FILE__) - -describe "StringIO#write when passed [Object]" do - it_behaves_like :stringio_write, :write -end - -describe "StringIO#write when passed [String]" do - it_behaves_like :stringio_write_string, :write -end - -describe "StringIO#write when self is not writable" do - it_behaves_like :stringio_write_not_writable, :write -end - -describe "StringIO#write when in append mode" do - it_behaves_like :stringio_write_append, :write -end |