1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/library/stringscanner/shared/peek.rb
Jeremy Evans ffd0820ab3 Deprecate taint/trust and related methods, and make the methods no-ops
This removes the related tests, and puts the related specs behind
version guards.  This affects all code in lib, including some
libraries that may want to support older versions of Ruby.
2019-11-18 01:00:25 +02:00

49 lines
1.3 KiB
Ruby

describe :strscan_peek, shared: true do
before :each do
@s = StringScanner.new('This is a test')
end
it "returns at most the specified number of bytes from the current position" do
@s.send(@method, 4).should == "This"
@s.pos.should == 0
@s.pos = 5
@s.send(@method, 2).should == "is"
@s.send(@method, 1000).should == "is a test"
s = StringScanner.new("été")
s.send(@method, 2).should == "é"
end
it "returns an empty string when the passed argument is zero" do
@s.send(@method, 0).should == ""
end
it "raises a ArgumentError when the passed argument is negative" do
-> { @s.send(@method, -2) }.should raise_error(ArgumentError)
end
it "raises a RangeError when the passed argument is a Bignum" do
-> { @s.send(@method, bignum_value) }.should raise_error(RangeError)
end
it "returns an instance of String when passed a String subclass" do
cls = Class.new(String)
sub = cls.new("abc")
s = StringScanner.new(sub)
ch = s.send(@method, 1)
ch.should_not be_kind_of(cls)
ch.should be_an_instance_of(String)
end
ruby_version_is ''...'2.7' do
it "taints the returned String if the input was tainted" do
str = 'abc'
str.taint
s = StringScanner.new(str)
s.send(@method, 1).tainted?.should be_true
end
end
end