[macruby-changes] [2810] MacRuby/trunk/spec/frozen
source_changes at macosforge.org
source_changes at macosforge.org
Thu Oct 15 11:49:10 PDT 2009
Revision: 2810
http://trac.macosforge.org/projects/ruby/changeset/2810
Author: eloy.de.enige at gmail.com
Date: 2009-10-15 11:49:08 -0700 (Thu, 15 Oct 2009)
Log Message:
-----------
Updated RubySpec to 2d102bae115e11719ff355d99ef336c0889b769a
Modified Paths:
--------------
MacRuby/trunk/spec/frozen/core/binding/eval_spec.rb
MacRuby/trunk/spec/frozen/core/exception/system_call_error_spec.rb
MacRuby/trunk/spec/frozen/core/file/new_spec.rb
MacRuby/trunk/spec/frozen/core/file/open_spec.rb
MacRuby/trunk/spec/frozen/core/file/truncate_spec.rb
MacRuby/trunk/spec/frozen/core/fixnum/divide_spec.rb
MacRuby/trunk/spec/frozen/core/fixnum/right_shift_spec.rb
MacRuby/trunk/spec/frozen/core/io/fixtures/classes.rb
MacRuby/trunk/spec/frozen/core/io/gets_spec.rb
MacRuby/trunk/spec/frozen/core/io/inspect_spec.rb
MacRuby/trunk/spec/frozen/core/io/output_spec.rb
MacRuby/trunk/spec/frozen/core/kernel/Integer_spec.rb
MacRuby/trunk/spec/frozen/core/kernel/eval_spec.rb
MacRuby/trunk/spec/frozen/core/kernel/exit_spec.rb
MacRuby/trunk/spec/frozen/core/kernel/fixtures/classes.rb
MacRuby/trunk/spec/frozen/core/kernel/taint_spec.rb
MacRuby/trunk/spec/frozen/core/random/rand_spec.rb
MacRuby/trunk/spec/frozen/core/string/inspect_spec_disabled.rb
MacRuby/trunk/spec/frozen/core/string/modulo_spec.rb
MacRuby/trunk/spec/frozen/core/string/try_convert_spec.rb
MacRuby/trunk/spec/frozen/core/string/upto_spec.rb
MacRuby/trunk/spec/frozen/core/thread/raise_spec.rb
MacRuby/trunk/spec/frozen/language/hash_spec.rb
MacRuby/trunk/spec/frozen/language/regexp/encoding_spec.rb
MacRuby/trunk/spec/frozen/language/return_spec.rb
MacRuby/trunk/spec/frozen/library/getoptlong/error_message_spec.rb
MacRuby/trunk/spec/frozen/library/getoptlong/ordering_spec.rb
MacRuby/trunk/spec/frozen/library/getoptlong/shared/get.rb
MacRuby/trunk/spec/frozen/library/mutex/lock_spec.rb
MacRuby/trunk/spec/frozen/library/mutex/try_lock_spec.rb
MacRuby/trunk/spec/frozen/library/mutex/unlock_spec.rb
MacRuby/trunk/spec/frozen/library/socket/fixtures/classes.rb
MacRuby/trunk/spec/frozen/library/tmpdir/dir/mktmpdir_spec.rb
MacRuby/trunk/spec/frozen/library/zlib/deflate/params_spec.rb
MacRuby/trunk/spec/frozen/library/zlib/inflate/append_spec.rb
MacRuby/trunk/spec/frozen/library/zlib/inflate/inflate_spec.rb
MacRuby/trunk/spec/frozen/shared/rational/div.rb
MacRuby/trunk/spec/frozen/tags/1.9/core/argf/bytes_tags.txt
MacRuby/trunk/spec/frozen/tags/1.9/core/argf/chars_tags.txt
MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_byte_tags.txt
MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_char_tags.txt
MacRuby/trunk/spec/frozen/upstream
Added Paths:
-----------
MacRuby/trunk/spec/frozen/core/file/shared/open.rb
MacRuby/trunk/spec/frozen/core/io/try_convert_spec.rb
MacRuby/trunk/spec/frozen/library/delegate/
MacRuby/trunk/spec/frozen/library/delegate/fixtures/
MacRuby/trunk/spec/frozen/library/delegate/fixtures/classes.rb
MacRuby/trunk/spec/frozen/library/delegate/method_spec.rb
MacRuby/trunk/spec/frozen/library/delegate/send_spec.rb
Removed Paths:
-------------
MacRuby/trunk/spec/frozen/library/date/neww_spec.rb
MacRuby/trunk/spec/frozen/tags/1.9/core/argf/lineno_tags.txt
Modified: MacRuby/trunk/spec/frozen/core/binding/eval_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/binding/eval_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/binding/eval_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -9,8 +9,7 @@
bind2 = obj.dup.get_binding
{ "@secret += square(3)" => 10,
"a" => true,
- "class Inside ; end" => nil,
- "Inside.name" => "BindingSpecs::Demo::Inside"
+ "class Inside ; end ; Inside.name" => "BindingSpecs::Demo::Inside"
}.each do |test, result|
r1 = bind1.eval(test)
r2 = Kernel.eval(test, bind2)
Modified: MacRuby/trunk/spec/frozen/core/exception/system_call_error_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/exception/system_call_error_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/exception/system_call_error_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -14,6 +14,15 @@
SystemCallError.new(42).errno.should == 42
SystemCallError.new(2**24).errno.should == 2**24
end
+
+ it "constructs the appropriate Errno class" do
+ # EINVAL should be more or less mortable across the platforms,
+ # so let's use it then.
+ SystemCallError.new(22).should be_kind_of(SystemCallError)
+ SystemCallError.new(22).should be_an_instance_of(Errno::EINVAL)
+
+ SystemCallError.new(2**28).should be_an_instance_of(SystemCallError)
+ end
end
describe "SystemCallError#errno" do
Modified: MacRuby/trunk/spec/frozen/core/file/new_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/file/new_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/file/new_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,4 +1,5 @@
require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/shared/open'
describe "File.new" do
before :each do
@@ -154,4 +155,6 @@
lambda { File.new(@fh.fileno, @flags) }.should raise_error(Errno::EINVAL)
end
end
+
+ it_behaves_like :open_directory, :new
end
Modified: MacRuby/trunk/spec/frozen/core/file/open_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/file/open_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/file/open_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,4 +1,5 @@
require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/shared/open'
describe "File.open" do
before :all do
@@ -542,4 +543,6 @@
it "raises an ArgumentError if passed an invalid string for mode" do
lambda { File.open(@file, 'fake') }.should raise_error(ArgumentError)
end
+
+ it_behaves_like :open_directory, :open
end
Added: MacRuby/trunk/spec/frozen/core/file/shared/open.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/file/shared/open.rb (rev 0)
+++ MacRuby/trunk/spec/frozen/core/file/shared/open.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../../dir/fixtures/common'
+
+describe :open_directory, :shared => true do
+ it "opens directories" do
+ lambda { File.send(@method, DirSpecs.mock_dir) }.should_not raise_error
+ File.directory?(DirSpecs.mock_dir).should == true
+ end
+end
\ No newline at end of file
Modified: MacRuby/trunk/spec/frozen/core/file/truncate_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/file/truncate_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/file/truncate_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -94,7 +94,7 @@
platform_is_not :windows do
it "truncates an absolute pathname file" do
- absolute_pathname_file = "/tmp/#{@name}"
+ absolute_pathname_file = tmp("#{@name}")
File.open(absolute_pathname_file,"w") { |f| f.write("1234567890") }
File.truncate(absolute_pathname_file, 5)
File.size(absolute_pathname_file).should == 5
Modified: MacRuby/trunk/spec/frozen/core/fixnum/divide_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/fixnum/divide_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/fixnum/divide_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -5,6 +5,10 @@
(2 / 2).should == 1
(3 / 2).should == 1
end
+
+ it "supports dividing negative numbers" do
+ (-1 / 10).should == -1
+ end
it "raises a ZeroDivisionError if the given argument is zero and not a Float" do
lambda { 1 / 0 }.should raise_error(ZeroDivisionError)
Modified: MacRuby/trunk/spec/frozen/core/fixnum/right_shift_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/fixnum/right_shift_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/fixnum/right_shift_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -43,5 +43,11 @@
(-3 >> obj).should == -1
end
+ it "wraps to 0 when shifting all bits off" do
+ # test for both Fixnum size boundaries
+ (5 >> 32).should == 0
+ (5 >> 64).should == 0
+ end
+
end
Modified: MacRuby/trunk/spec/frozen/core/io/fixtures/classes.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/io/fixtures/classes.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/io/fixtures/classes.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -32,4 +32,9 @@
}
end
+ class NotConvertable
+ def to_io
+ raise TypeError
+ end
+ end
end
Modified: MacRuby/trunk/spec/frozen/core/io/gets_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/io/gets_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/io/gets_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -174,6 +174,7 @@
f.fileno.should == g.fileno
lambda { g.gets }.should raise_error(IOError)
g.close
+ lambda { f.close }.should raise_error(Errno::EBADF)
File.unlink(tmp("gets_specs"))
end
Modified: MacRuby/trunk/spec/frozen/core/io/inspect_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/io/inspect_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/io/inspect_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -7,13 +7,16 @@
end
after :each do
- @file.close
+ @file.close if !@file.closed?
File.unlink(tmp("inspect_spec"))
end
it "returns a string describing a stream" do
# don't hardcode the tmp path
@file.inspect.should =~ /#<File.*inspect_spec>/
- IO.new(@file.to_i).inspect.should =~ /<IO:[\w\s?\d]+>/
+ io = IO.new(@file.to_i)
+ io.inspect.should =~ /<IO:[\w\s?\d]+>/
+ io.close
+ lambda { @file.close }.should raise_error(Errno::EBADF)
end
end
Modified: MacRuby/trunk/spec/frozen/core/io/output_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/io/output_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/io/output_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -18,4 +18,10 @@
io = IOSpecs.closed_file
lambda { io << "test" }.should raise_error(IOError)
end
+
+ it "returns self" do
+ lambda {
+ ($stderr << "to_stderr").should == $stderr
+ }.should output(nil, "to_stderr")
+ end
end
Added: MacRuby/trunk/spec/frozen/core/io/try_convert_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/io/try_convert_spec.rb (rev 0)
+++ MacRuby/trunk/spec/frozen/core/io/try_convert_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -0,0 +1,36 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/fixtures/classes'
+
+describe "IO.try_convert" do
+ ruby_version_is "1.9" do
+ it "returns self for IO objects" do
+ fd_1 = IO.new(1)
+ IO.try_convert(fd_1).should equal(fd_1)
+ end
+
+ it "converts using :to_io" do
+ io = File.new(__FILE__)
+ obj = mock('ioish')
+ obj.should_receive(:to_io).and_return(io)
+ IO.try_convert(obj).should equal(io)
+ end
+
+ it "returns nil when the argument doesn't respond to :to_io" do
+ IO.try_convert(-1).should be_nil
+ end
+
+ it "should not rescue errors" do
+ lambda{
+ IO.try_convert(IOSpecs::NotConvertible.new)
+ }.should raise_error
+ end
+
+ it "checks the result of the conversion" do
+ obj = mock('middle child')
+ obj.should_receive(:to_io).and_return(:confused)
+ lambda{
+ IO.try_convert(obj)
+ }.should raise_error(TypeError)
+ end
+ end
+end
Modified: MacRuby/trunk/spec/frozen/core/kernel/Integer_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/kernel/Integer_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/kernel/Integer_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -493,6 +493,10 @@
lambda { Integer("0#{d}1", base) }.should raise_error(ArgumentError)
end
end
+
+ it "raises an ArgumentError if a base is given for a non-String value" do
+ lambda { Integer(98, 15) }.should raise_error(ArgumentError)
+ end
end
end
Modified: MacRuby/trunk/spec/frozen/core/kernel/eval_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/kernel/eval_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/kernel/eval_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,15 +1,8 @@
require File.dirname(__FILE__) + '/../../spec_helper'
require File.dirname(__FILE__) + '/fixtures/classes'
-class A
- eval "class B; end"
- def c
- eval "class C; end"
- end
-end
+EvalSpecs::A.new.c
-A.new.c
-
describe "Kernel#eval" do
it "is a private method" do
Kernel.should have_private_instance_method(:eval)
@@ -24,13 +17,53 @@
end
it "evaluates within the scope of the eval" do
- A::B.name.should == "A::B"
+ EvalSpecs::A::B.name.should == "EvalSpecs::A::B"
end
it "evaluates such that consts are scoped to the class of the eval" do
- A::C.name.should == "A::C"
+ EvalSpecs::A::C.name.should == "EvalSpecs::A::C"
end
+ it "finds a local in an enclosing scope" do
+ a = 1
+ eval("a").should == 1
+ end
+
+ it "updates a local in an enclosing scope" do
+ a = 1
+ eval("a = 2").should == 2
+ a.should == 2
+ end
+
+ it "creates an eval-scope local" do
+ eval("eval_only_local = 1; eval_only_local").should == 1
+ lambda { eval_only_local }.should raise_error(NameError)
+ end
+
+ it "updates a local in a surrounding block scope" do
+ EvalSpecs.new.f do
+ a = 1
+ eval("a = 2").should == 2
+ a.should == 2
+ end
+ end
+
+ it "updates a local in a scope above a surrounding block scope" do
+ a = 1
+ EvalSpecs.new.f do
+ eval("a = 2").should == 2
+ a.should == 2
+ end
+ a.should == 2
+ end
+
+ it "updates a local in a scope above when modified in a nested block scope" do
+ a = 1
+ es = EvalSpecs.new
+ eval("es.f { es.f { a = 2 } }").should == 2
+ a.should == 2
+ end
+
ruby_version_is ""..."1.9" do
it "accepts a Proc object as a binding" do
x = 1
Modified: MacRuby/trunk/spec/frozen/core/kernel/exit_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/kernel/exit_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/kernel/exit_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -13,9 +13,75 @@
end
end
+describe "Kernel.exit" do
+ before :each do
+ ScratchPad.clear
+ end
-describe "Kernel.exit" do
- it "needs to be reviewed for spec completeness"
+ it "raises a SystemExit with status 0" do
+ begin
+ exit
+ ScratchPad.record :no_exit
+ rescue SystemExit => e
+ e.status.should == 0
+ end
+ ScratchPad.recorded.should be_nil
+ end
+
+ it "raises a SystemExit with the specified status" do
+ [-2**16, -2**8, -8, -1, 0, 1 , 8, 2**8, 2**16].each { |value|
+ begin
+ exit(value)
+ ScratchPad.record :no_exit
+ rescue SystemExit => e
+ e.status.should == value
+ end
+ ScratchPad.recorded.should be_nil
+ }
+ end
+
+ it "raises a SystemExit with the specified boolean status" do
+ { true => 0, false => 1 }.each { |value, status|
+ begin
+ exit(value)
+ ScratchPad.record :no_exit
+ rescue SystemExit => e
+ e.status.should == status
+ end
+ ScratchPad.recorded.should be_nil
+ }
+ end
+
+ it "tries to convert the passed argument to an Integer using #to_int" do
+ obj = mock('5')
+ obj.should_receive(:to_int).and_return(5)
+ begin
+ exit(obj)
+ ScratchPad.record :no_exit
+ rescue SystemExit => e
+ e.status.should == 5
+ end
+ ScratchPad.recorded.should be_nil
+ end
+
+ it "converts the passed Float argument to an Integer" do
+ { -2.2 => -2, -0.1 => 0, 5.5 => 5, 827.999 => 827 }.each { |value, status|
+ begin
+ exit(value)
+ ScratchPad.record :no_exit
+ rescue SystemExit => e
+ e.status.should == status
+ end
+ ScratchPad.recorded.should be_nil
+ }
+ end
+
+ it "raises TypeError if can't convert the argument to an Integer" do
+ lambda { exit(Object.new) }.should raise_error(TypeError)
+ lambda { exit('0') }.should raise_error(TypeError)
+ lambda { exit([0]) }.should raise_error(TypeError)
+ lambda { exit(nil) }.should raise_error(TypeError)
+ end
end
describe "Kernel.exit!" do
Modified: MacRuby/trunk/spec/frozen/core/kernel/fixtures/classes.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/kernel/fixtures/classes.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/kernel/fixtures/classes.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -229,6 +229,19 @@
end
end
+class EvalSpecs
+ class A
+ eval "class B; end"
+ def c
+ eval "class C; end"
+ end
+ end
+
+ def f
+ yield
+ end
+end
+
# for Kernel#sleep to have Channel in it's specs
# TODO: switch directly to queue for both Kernel#sleep and Thread specs?
unless defined? Channel
Modified: MacRuby/trunk/spec/frozen/core/kernel/taint_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/kernel/taint_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/kernel/taint_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -7,7 +7,7 @@
end
it "has no effect on immediate values" do
- inmediate_values = [a = nil, b = true, c = false, d = 1, e = "a string"]
- inmediate_values.each{ |v| v.tainted?.should == false}
+ imediate_values = [nil, true, false, 1, :sym]
+ imediate_values.each{ |v| v.taint; v.tainted?.should be_false}
end
end
Modified: MacRuby/trunk/spec/frozen/core/random/rand_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/random/rand_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/random/rand_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -93,7 +93,7 @@
describe "Random#rand with Bignum" do
it "returns a Bignum" do
- Random.new.rand(bignum_value).should be_an_instance_of(Bignum)
+ Random.new(1).rand(bignum_value).should be_an_instance_of(Bignum)
end
it "returns a Bignum greater than or equal to 0" do
Modified: MacRuby/trunk/spec/frozen/core/string/inspect_spec_disabled.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/string/inspect_spec_disabled.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/string/inspect_spec_disabled.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -15,7 +15,7 @@
end
it "returns a string with nonprinting, non-ASCII characters replaced by \\u notation for Unicode strings" do
- (127..150).map{|o| o.chr('utf-8')}.to_a.join('').inspect.should == "\"\\u007F\\u0080\\u0081\\u0082\\u0083\\u0084\u0085\\u0086\\u0087\\u0088\\u0089\\u008A\\u008B\\u008C\\u008D\\u008E\\u008F\\u0090\\u0091\\u0092\\u0093\\u0094\\u0095\\u0096\""
+ (127..150).map{|o| o.chr('utf-8')}.to_a.join('').inspect.should == "\"\\u007F\\u0080\\u0081\\u0082\\u0083\\u0084\\u0085\\u0086\\u0087\\u0088\\u0089\\u008A\\u008B\\u008C\\u008D\\u008E\\u008F\\u0090\\u0091\\u0092\\u0093\\u0094\\u0095\\u0096\""
end
end
Modified: MacRuby/trunk/spec/frozen/core/string/modulo_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/string/modulo_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/string/modulo_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -440,21 +440,11 @@
end
ruby_version_is "1.9" do
- platform_is :darwin do
- it "pads with zeros using %E with Inf, -Inf, and NaN" do
- ("%010E" % -1e1020).should == "-000000Inf"
- ("%010E" % 1e1020).should == "0000000Inf"
- ("%010E" % (0.0/0)).should == "0000000NaN"
- end
+ it "pads with spaces for %E with Inf, -Inf, and NaN" do
+ ("%010E" % -1e1020).should == " -Inf"
+ ("%010E" % 1e1020).should == " Inf"
+ ("%010E" % (0.0/0)).should == " NaN"
end
-
- platform_is_not :darwin do
- it "pads with spaces for %E with Inf, -Inf, and NaN" do
- ("%010E" % -1e1020).should == " -Inf"
- ("%010E" % 1e1020).should == " Inf"
- ("%010E" % (0.0/0)).should == " NaN"
- end
- end
end
end
Modified: MacRuby/trunk/spec/frozen/core/string/try_convert_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/string/try_convert_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/string/try_convert_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -15,7 +15,7 @@
String.try_convert(obj).should equal(str)
end
- it "returns nil when there is no :to_ary" do
+ it "returns nil when there is no :to_str" do
String.try_convert(-1).should be_nil
end
@@ -33,4 +33,4 @@
}.should raise_error(TypeError)
end
end
-end
\ No newline at end of file
+end
Modified: MacRuby/trunk/spec/frozen/core/string/upto_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/string/upto_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/string/upto_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -14,13 +14,23 @@
a.should == ["abc"]
end
- # This is weird but MRI behaves like that
- it "calls block with self even if self is less than stop but stop length is less than self length" do
- a = []
- "25".upto("5") { |s| a << s }
- a.should == ["25"]
+ # This is weird (in 1.8), but MRI behaves like that
+ ruby_version_is '' ... '1.9' do
+ it "calls block with self even if self is less than stop but stop length is less than self length" do
+ a = []
+ "25".upto("5") { |s| a << s }
+ a.should == ["25"]
+ end
end
+ ruby_version_is '1.9' do
+ it "doesn't call block with self even if self is less than stop but stop length is less than self length" do
+ a = []
+ "25".upto("5") { |s| a << s }
+ a.should == []
+ end
+ end
+
it "doesn't call block if stop is less than self and stop length is less than self length" do
a = []
"25".upto("1") { |s| a << s }
Modified: MacRuby/trunk/spec/frozen/core/thread/raise_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/core/thread/raise_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/core/thread/raise_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -50,8 +50,8 @@
lambda {t.value}.should raise_error(RuntimeError)
end
- ruby_version_is "" ... "1.9" do
- it "re-raises active exception" do
+ ruby_version_is "1.9" do
+ it "raises a RuntimeError when called with no arguments" do
t = Thread.new do
begin
1/0
@@ -59,10 +59,13 @@
sleep 3
end
end
-
- Thread.pass while t.status and t.status != "sleep"
- t.raise
- lambda {t.value}.should raise_error(ZeroDivisionError)
+ begin
+ raise RangeError
+ rescue
+ Thread.pass while t.status and t.status != "sleep"
+ t.raise
+ end
+ lambda {t.value}.should raise_error(RuntimeError)
t.kill
end
end
@@ -107,23 +110,25 @@
lambda {t.value}.should raise_error(RuntimeError)
end
- ruby_version_is "" ... "1.9" do
- it "re-raises active exception" do
- raised = false
- t = Thread.new do
- begin
- 1/0
- rescue ZeroDivisionError
- raised = true
- loop { }
- end
+ it "raise the given argument even when there is an active exception" do
+ raised = false
+ t = Thread.new do
+ begin
+ 1/0
+ rescue ZeroDivisionError
+ raised = true
+ loop { }
end
-
+ end
+ begin
+ raise "Create an active exception for the current thread too"
+ rescue
Thread.pass until raised || !t.alive?
- t.raise
- lambda {t.value}.should raise_error(ZeroDivisionError)
+ t.raise RangeError
+ lambda {t.value}.should raise_error(RangeError)
end
end
+
end
describe "Thread#raise on same thread" do
Modified: MacRuby/trunk/spec/frozen/language/hash_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/language/hash_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/language/hash_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -38,4 +38,10 @@
h.keys.first.frozen?.should == true
key.should == "oof"
end
+
+ it "checks duplicated keys on initialization" do
+ h = {:foo => :bar, :foo => :foo}
+ h.keys.size.should == 1
+ h.should == {:foo => :foo}
+ end
end
Modified: MacRuby/trunk/spec/frozen/language/regexp/encoding_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/language/regexp/encoding_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/language/regexp/encoding_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -13,17 +13,51 @@
match.to_a.should == ["\303\251"]
end
+ it 'supports /e (EUC encoding) with interpolation' do
+ match = /#{/./}/e.match("\303\251")
+ match.to_a.should == ["\303\251"]
+ end
+
+ it 'supports /e (EUC encoding) with interpolation and /o' do
+ match = /#{/./}/e.match("\303\251")
+ match.to_a.should == ["\303\251"]
+ end
+
it 'supports /n (Normal encoding)' do
/./n.match("\303\251").to_a.should == ["\303"]
end
+ it 'supports /n (Normal encoding) with interpolation' do
+ /#{/./}/n.match("\303\251").to_a.should == ["\303"]
+ end
+
+ it 'supports /n (Normal encoding) with interpolation and /o' do
+ /#{/./}/no.match("\303\251").to_a.should == ["\303"]
+ end
+
it 'supports /s (SJIS encoding)' do
/./s.match("\303\251").to_a.should == ["\303"]
end
+ it 'supports /s (SJIS encoding) with interpolation' do
+ /#{/./}/s.match("\303\251").to_a.should == ["\303"]
+ end
+
+ it 'supports /s (SJIS encoding) with interpolation and /o' do
+ /#{/./}/so.match("\303\251").to_a.should == ["\303"]
+ end
+
it 'supports /u (UTF8 encoding)' do
/./u.match("\303\251").to_a.should == ["\303\251"]
end
+
+ it 'supports /u (UTF8 encoding) with interpolation' do
+ /#{/./}/u.match("\303\251").to_a.should == ["\303\251"]
+ end
+
+ it 'supports /u (UTF8 encoding) with interpolation and /o' do
+ /#{/./}/uo.match("\303\251").to_a.should == ["\303\251"]
+ end
it 'selects last of multiple encoding specifiers' do
/foo/ensuensuens.should == /foo/s
@@ -37,19 +71,55 @@
match.to_a.should == ["\303\251".force_encoding(Encoding::EUC_JP)]
end
+ it 'supports /e (EUC encoding) with interpolation' do
+ match = /#{/./}/e.match("\303\251".force_encoding(Encoding::EUC_JP))
+ match.to_a.should == ["\303\251".force_encoding(Encoding::EUC_JP)]
+ end
+
+ it 'supports /e (EUC encoding) with interpolation /o' do
+ match = /#{/./}/e.match("\303\251".force_encoding(Encoding::EUC_JP))
+ match.to_a.should == ["\303\251".force_encoding(Encoding::EUC_JP)]
+ end
+
it 'supports /n (No encoding)' do
/./n.match("\303\251").to_a.should == ["\303"]
end
+ it 'supports /n (No encoding) with interpolation' do
+ /#{/./}/n.match("\303\251").to_a.should == ["\303"]
+ end
+
+ it 'supports /n (No encoding) with interpolation /o' do
+ /#{/./}/n.match("\303\251").to_a.should == ["\303"]
+ end
+
it 'supports /s (Windows_31J encoding)' do
match = /./s.match("\303\251".force_encoding(Encoding::Windows_31J))
match.to_a.should == ["\303".force_encoding(Encoding::Windows_31J)]
end
+ it 'supports /s (Windows_31J encoding) with interpolation' do
+ match = /#{/./}/s.match("\303\251".force_encoding(Encoding::Windows_31J))
+ match.to_a.should == ["\303".force_encoding(Encoding::Windows_31J)]
+ end
+
+ it 'supports /s (Windows_31J encoding) with interpolation and /o' do
+ match = /#{/./}/s.match("\303\251".force_encoding(Encoding::Windows_31J))
+ match.to_a.should == ["\303".force_encoding(Encoding::Windows_31J)]
+ end
+
it 'supports /u (UTF8 encoding)' do
/./u.match("\303\251".force_encoding('utf-8')).to_a.should == ["\u{e9}"]
end
+ it 'supports /u (UTF8 encoding) with interpolation' do
+ /#{/./}/u.match("\303\251".force_encoding('utf-8')).to_a.should == ["\u{e9}"]
+ end
+
+ it 'supports /u (UTF8 encoding) with interpolation and /o' do
+ /#{/./}/u.match("\303\251".force_encoding('utf-8')).to_a.should == ["\u{e9}"]
+ end
+
# Fails on 1.9; reported as bug #2052
it 'selects last of multiple encoding specifiers' do
/foo/ensuensuens.should == /foo/s
Modified: MacRuby/trunk/spec/frozen/language/return_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/language/return_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/language/return_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -201,6 +201,17 @@
f().should == :outer_ensure
ScratchPad.recorded.should == [:inner_begin, :inner_ensure, :outer_ensure]
end
+
+ it "executes the ensure clause when begin/ensure are inside a lambda" do
+ lambda do
+ begin
+ return
+ ensure
+ ScratchPad.recorded << :ensure
+ end
+ end.call
+ ScratchPad.recorded.should == [:ensure]
+ end
end
describe "within a block" do
@@ -241,6 +252,7 @@
ReturnSpecs::NestedBlocks.new.enclosing_method.should == :return_value
ScratchPad.recorded.should == :before_return
end
+
end
describe "within two blocks" do
Deleted: MacRuby/trunk/spec/frozen/library/date/neww_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/date/neww_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/date/neww_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,13 +0,0 @@
-require 'date'
-require File.dirname(__FILE__) + '/../../spec_helper'
-require File.dirname(__FILE__) + '/shared/commercial'
-
-ruby_version_is "" ... "1.9" do
-
- describe "Date#neww" do
-
- it_behaves_like(:date_commercial, :neww)
-
- end
-
-end
Added: MacRuby/trunk/spec/frozen/library/delegate/fixtures/classes.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/delegate/fixtures/classes.rb (rev 0)
+++ MacRuby/trunk/spec/frozen/library/delegate/fixtures/classes.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -0,0 +1,24 @@
+module DelegateSpecs
+ class Simple
+ def pub
+ :foo
+ end
+
+ def respond_to_missing?(method, priv=false)
+ method == :pub_too ||
+ (priv && method == :priv_too)
+ end
+
+ def method_missing(method, *args)
+ super unless respond_to_missing?(method, true)
+ method
+ end
+
+ def priv(arg=nil)
+ yield arg if block_given?
+ [:priv, arg]
+ end
+ private :priv
+
+ end
+end
Added: MacRuby/trunk/spec/frozen/library/delegate/method_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/delegate/method_spec.rb (rev 0)
+++ MacRuby/trunk/spec/frozen/library/delegate/method_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -0,0 +1,38 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + "/fixtures/classes"
+require 'delegate'
+
+describe "SimpleDelegator#method" do
+ before :each do
+ @simple = DelegateSpecs::Simple.new
+ @delegate = SimpleDelegator.new(@simple)
+ end
+
+ it "returns a method object for a valid method" do
+ m = @delegate.method(:pub)
+ m.should be_an_instance_of(Method)
+ m.call.should == :foo
+ end
+
+ it "raises a NameError for an invalid method name" do
+ lambda {
+ @delegate.method(:invalid_and_silly_method_name)
+ }.should raise_error(NameError)
+ end
+
+ ruby_version_is "1.9" do
+ it "returns a method that respond_to_missing?" do
+ m = @delegate.method(:pub_too)
+ m.should be_an_instance_of(Method)
+ m.call.should == :pub_too
+ end
+ end
+
+ it "raises a NameError if method is no longer valid because object has changed" do
+ m = @delegate.method(:pub)
+ @delegate.__setobj__([1,2,3])
+ lambda {
+ m.call
+ }.should raise_error(NameError)
+ end
+end
Added: MacRuby/trunk/spec/frozen/library/delegate/send_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/delegate/send_spec.rb (rev 0)
+++ MacRuby/trunk/spec/frozen/library/delegate/send_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -0,0 +1,26 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + "/fixtures/classes"
+require 'delegate'
+
+describe "SimpleDelegator.new" do
+ before :each do
+ @simple = DelegateSpecs::Simple.new
+ @delegate = SimpleDelegator.new(@simple)
+ end
+
+ it "forwards public method calls" do
+ @delegate.pub.should == :foo
+ end
+
+ it "doesn't forward private method calls" do
+ lambda{ @delegate.priv }.should raise_error( NoMethodError )
+ end
+
+ ruby_bug "redmine:2206", "1.8.7" do
+ it "forwards private method calls made via send or __send__" do
+ @delegate.send(:priv, 42).should == [:priv, 42]
+ @delegate.__send__(:priv, 42).should == [:priv, 42]
+ lambda{ @delegate.__send__(:priv, 42){@delegate.priv} }.should raise_error( NoMethodError )
+ end
+ end
+end
Modified: MacRuby/trunk/spec/frozen/library/getoptlong/error_message_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/getoptlong/error_message_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/getoptlong/error_message_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -19,14 +19,14 @@
it "returns the error message of the last error that occurred" do
begin
- $stderr = IOStub.new
ARGV = []
opts = GetoptLong.new
+ opts.quiet = true
opts.get
opts.ordering = GetoptLong::PERMUTE
rescue ArgumentError
opts.error_message.should == "argument error"
end
end
-end
\ No newline at end of file
+end
Modified: MacRuby/trunk/spec/frozen/library/getoptlong/ordering_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/getoptlong/ordering_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/getoptlong/ordering_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -4,13 +4,12 @@
describe "GetoptLong#ordering=" do
it "raises an ArgumentError if called after processing has started" do
begin
- s = $stderr
- $stderr = IOStub.new
old_argv = ARGV
ARGV = [ "--size", "10k", "--verbose" ]
opts = GetoptLong.new([ '--size', GetoptLong::REQUIRED_ARGUMENT ],
[ '--verbose', GetoptLong::NO_ARGUMENT ])
+ opts.quiet = true
opts.get
lambda {
@@ -18,7 +17,6 @@
}.should raise_error(ArgumentError)
ensure
ARGV = old_argv
- $stderr = s
end
end
@@ -42,4 +40,4 @@
ENV['POSIXLY_CORRECT'] = old_env_value
end
end
-end
\ No newline at end of file
+end
Modified: MacRuby/trunk/spec/frozen/library/getoptlong/shared/get.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/getoptlong/shared/get.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/getoptlong/shared/get.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -6,6 +6,7 @@
[ '--query', '-q', GetoptLong::NO_ARGUMENT ],
[ '--check', '--valid', '-c', GetoptLong::NO_ARGUMENT ]
)
+ @opts.quiet = true # silence using $deferr
end
it "returns the next option name and its argument as an Array" do
@@ -63,15 +64,12 @@
it "raises a if an argument was required, but none given" do
begin
- s = $stderr
- $stderr = IOStub.new
old_argv = ARGV
ARGV = [ "--size" ]
lambda { @opts.send(@method) }.should raise_error(GetoptLong::MissingArgument)
ensure
ARGV = old_argv
- $stderr = s
end
end
end
Modified: MacRuby/trunk/spec/frozen/library/mutex/lock_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/mutex/lock_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/mutex/lock_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -26,4 +26,10 @@
th.join
v.should == 1
end
+
+ it "raises ThreadError if the current thread already locks this monitor" do
+ mutex = Mutex.new
+ mutex.lock
+ lambda { mutex.lock }.should raise_error(ThreadError)
+ end
end
Modified: MacRuby/trunk/spec/frozen/library/mutex/try_lock_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/mutex/try_lock_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/mutex/try_lock_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -5,8 +5,18 @@
it "returns true if lock can be aquired immediately" do
m = Mutex.new
m.try_lock.should be_true
+ m.try_lock.should be_false
end
+ it "actually locks" do
+ m = Mutex.new
+ m.try_lock
+
+ m.locked?.should be_true
+ lambda { m.lock }.should raise_error(ThreadError)
+ lambda { m.try_lock }.should_not raise_error(ThreadError)
+ end
+
it "returns false if lock can not be aquired immediately" do
m1 = Mutex.new
m2 = Mutex.new
Modified: MacRuby/trunk/spec/frozen/library/mutex/unlock_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/mutex/unlock_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/mutex/unlock_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -25,6 +25,17 @@
th.join
end
+ it "raises ThreadError if previously locking thread is gone" do
+ mutex = Mutex.new
+ th = Thread.new do
+ mutex.lock
+ end
+
+ th.join
+
+ lambda { mutex.unlock }.should raise_error(ThreadError)
+ end
+
it "returns nil if successful" do
mutex = Mutex.new
mutex.lock
Modified: MacRuby/trunk/spec/frozen/library/socket/fixtures/classes.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/socket/fixtures/classes.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/socket/fixtures/classes.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -22,6 +22,6 @@
end
def self.socket_path
- "/tmp/unix_server_spec.socket"
+ tmp("unix_server_spec.socket")
end
end
Modified: MacRuby/trunk/spec/frozen/library/tmpdir/dir/mktmpdir_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/tmpdir/dir/mktmpdir_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/tmpdir/dir/mktmpdir_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -50,6 +50,7 @@
end
it "returns the blocks return value" do
+ Dir.stub!(:mkdir)
Dir.mktmpdir { :test }.should equal(:test)
end
end
@@ -90,4 +91,4 @@
lambda { Dir.mktmpdir(10) }.should raise_error(ArgumentError)
end
end
-end
\ No newline at end of file
+end
Modified: MacRuby/trunk/spec/frozen/library/zlib/deflate/params_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/zlib/deflate/params_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/zlib/deflate/params_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -2,7 +2,7 @@
require 'zlib'
describe 'Zlib::Deflate#params' do
- ruby_bug '293', '1.9.0' do
+ ruby_bug '239', '1.9.0' do
it 'changes the deflate parameters' do
data = 'abcdefghijklm'
Modified: MacRuby/trunk/spec/frozen/library/zlib/inflate/append_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/zlib/inflate/append_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/zlib/inflate/append_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -2,11 +2,59 @@
require 'zlib'
describe 'Zlib::Inflate#<<' do
+ before :all do
+ @foo_deflated = "x\234K\313\317\a\000\002\202\001E"
+ end
+
+ before :each do
+ @z = Zlib::Inflate.new
+ end
+
+ after :each do
+ @z.close unless @z.closed?
+ end
+
it 'appends data to the input stream' do
- zs = Zlib::Inflate.new
- zs << "x\234K\313\317\a\000\002\202\001E"
+ @z << @foo_deflated
+ @z.finish.should == 'foo'
+ end
- zs.finish.should == 'foo'
+ it 'treats nil argument as the end of compressed data' do
+ @z = Zlib::Inflate.new
+ @z << @foo_deflated << nil
+ @z.finish.should == 'foo'
end
+
+ it 'just passes through the data after nil argument' do
+ @z = Zlib::Inflate.new
+ @z << @foo_deflated << nil
+ @z << "-after_nil_data"
+ @z.finish.should == 'foo-after_nil_data'
+ end
+
+ it 'properly handles data in chunks' do
+ # add bytes, one by one
+ @foo_deflated.each_byte { |d| @z << d.chr}
+ @z.finish.should == "foo"
+ end
+
+ it 'properly handles incomplete data' do
+ # add bytes, one by one
+ @foo_deflated[0, 5].each_byte { |d| @z << d.chr}
+ lambda { @z.finish }.should raise_error(Zlib::BufError)
+ end
+
+ it 'properly handles excessive data, byte-by-byte' do
+ # add bytes, one by one
+ data = @foo_deflated * 2
+ data.each_byte { |d| @z << d.chr}
+ @z.finish.should == "foo" + @foo_deflated
+ end
+
+ it 'properly handles excessive data, in one go' do
+ # add bytes, one by one
+ data = @foo_deflated * 2
+ @z << data
+ @z.finish.should == "foo" + @foo_deflated
+ end
end
-
Modified: MacRuby/trunk/spec/frozen/library/zlib/inflate/inflate_spec.rb
===================================================================
--- MacRuby/trunk/spec/frozen/library/zlib/inflate/inflate_spec.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/library/zlib/inflate/inflate_spec.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -25,6 +25,20 @@
unzipped.should == "\000" * 32 * 1024
end
+ it 'works in pass-through mode, once finished' do
+ data = "x\234c`\200\001\000\000\n\000\001"
+
+ unzipped = @inflator.inflate data
+ @inflator.finish # this is a precondition
+
+ out = @inflator.inflate('uncompressed_data')
+ out << @inflator.finish
+ out.should == 'uncompressed_data'
+
+ @inflator << ('uncompressed_data') << nil
+ @inflator.finish.should == 'uncompressed_data'
+ end
+
end
describe 'Zlib::Inflate::inflate' do
@@ -45,5 +59,51 @@
zipped.should == "\000" * 32 * 1024
end
+ it 'properly handles data in chunks' do
+ data = "x\234K\313\317\a\000\002\202\001E"
+ z = Zlib::Inflate.new
+ # add bytes, one by one
+ result = ""
+ data.each_byte { |d| result << z.inflate(d.chr)}
+ result << z.finish
+ result.should == "foo"
+ end
+
+ it 'properly handles incomplete data' do
+ data = "x\234K\313\317\a\000\002\202\001E"[0,5]
+ z = Zlib::Inflate.new
+ # add bytes, one by one, but not all
+ result = ""
+ data.each_byte { |d| result << z.inflate(d.chr)}
+ lambda { result << z.finish }.should raise_error(Zlib::BufError)
+ end
+
+ it 'properly handles excessive data, byte-by-byte' do
+ main_data = "x\234K\313\317\a\000\002\202\001E"
+ data = main_data * 2
+ result = ""
+
+ z = Zlib::Inflate.new
+ # add bytes, one by one
+ data.each_byte { |d| result << z.inflate(d.chr)}
+ result << z.finish
+
+ # the first chunk is inflated to its completion,
+ # the second chunk is just passed through.
+ result.should == "foo" + main_data
+ end
+
+ it 'properly handles excessive data, in one go' do
+ main_data = "x\234K\313\317\a\000\002\202\001E"
+ data = main_data * 2
+ result = ""
+
+ z = Zlib::Inflate.new
+ result << z.inflate(data)
+ result << z.finish
+
+ # the first chunk is inflated to its completion,
+ # the second chunk is just passed through.
+ result.should == "foo" + main_data
+ end
end
-
Modified: MacRuby/trunk/spec/frozen/shared/rational/div.rb
===================================================================
--- MacRuby/trunk/spec/frozen/shared/rational/div.rb 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/shared/rational/div.rb 2009-10-15 18:49:08 UTC (rev 2810)
@@ -2,38 +2,38 @@
require 'rational'
describe :rational_div_rat, :shared => true do
- it "performs integer division and returns the result" do
+ it "performs integer division and returns the result" do
Rational(2, 3).div(Rational(2, 3)).should == 1
Rational(-2, 9).div(Rational(-9, 2)).should == 0
end
-
+
it "raises a ZeroDivisionError when the argument has a numerator of 0" do
lambda { Rational(3, 4).div(Rational(0, 3)) }.should raise_error(ZeroDivisionError)
- end
-
+ end
+
# 1.8 doesn't accept Floats for Rational() arguments
ruby_version_is "1.9" do
it "raises a ZeroDivisionError when the argument has a numerator of 0.0" do
lambda { Rational(3, 4).div(Rational(0.0, 3)) }.should raise_error(ZeroDivisionError)
end
end
-end
+end
describe :rational_div_float, :shared => true do
# The version guard is necessary because 1.8 can't cope with Floats passed
# to Rational(), so we need to simplify the examples accordingly.
-
+
ruby_version_is "1.9" do
- it "performs integer division and returns the result" do
+ it "performs integer division and returns the result" do
Rational(2, 3).div(30.333).should == 0
Rational(2, 9).div(Rational(-8.6)).should == -1
Rational(3.12).div(0.5).should == 6
end
end
-
+
ruby_version_is ""..."1.9" do
- it "performs integer division and returns the result" do
+ it "performs integer division and returns the result" do
Rational(2, 3).div(30.333).should == 0
Rational(7, 12).div(0.5).should == 1
end
@@ -42,39 +42,40 @@
ruby_version_is ""..."1.9" do
it "raises a FloatDomainError when the argument is 0.0" do
lambda { Rational(3, 4).div(0.0) }.should raise_error(FloatDomainError)
- end
+ end
end
ruby_version_is "1.9" do
it "raises a ZeroDivisionError when the argument is 0.0" do
lambda { Rational(3, 4).div(0.0) }.should raise_error(ZeroDivisionError)
- end
+ end
end
-end
+end
describe :rational_div_int, :shared => true do
- it "performs integer division and returns the result" do
+ it "performs integer division and returns the result" do
Rational(2, 1).div(1).should == 2
Rational(25, 5).div(-50).should == -1
end
-
+
it "raises a ZeroDivisionError when the argument is 0" do
lambda { Rational(3, 4).div(0) }.should raise_error(ZeroDivisionError)
- end
-end
+ end
+end
describe :rational_div, :shared => true do
- it "returns an Integer" do
+ it "returns an Integer" do
Rational(229, 21).div(82).should be_kind_of(Integer)
end
-
+
it "raises an ArgumentError if passed more than one argument" do
lambda { Rational(3, 4).div(2,3) }.should raise_error(ArgumentError)
- end
+ end
- ruby_bug "#1648", "1.8.7" do
+ # See http://redmine.ruby-lang.org/issues/show/1648
+ ruby_version_is "1.8.8" do
it "raises a TypeError if passed a non-numeric argument" do
lambda { Rational(3, 4).div([]) }.should raise_error(TypeError)
end
- end
-end
+ end
+end
Modified: MacRuby/trunk/spec/frozen/tags/1.9/core/argf/bytes_tags.txt
===================================================================
--- MacRuby/trunk/spec/frozen/tags/1.9/core/argf/bytes_tags.txt 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/tags/1.9/core/argf/bytes_tags.txt 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,2 +1 @@
fails:ARGF.bytes returns self when passed a block
-fails:ARGF.bytes returns an Enumerable::Enumerator when passed no block
Modified: MacRuby/trunk/spec/frozen/tags/1.9/core/argf/chars_tags.txt
===================================================================
--- MacRuby/trunk/spec/frozen/tags/1.9/core/argf/chars_tags.txt 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/tags/1.9/core/argf/chars_tags.txt 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,2 +1 @@
fails:ARGF.chars returns self when passed a block
-fails:ARGF.chars returns an Enumerable::Enumerator when passed no block
Modified: MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_byte_tags.txt
===================================================================
--- MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_byte_tags.txt 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_byte_tags.txt 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,2 +1 @@
fails:ARGF.each_byte returns self when passed a block
-fails:ARGF.each_byte returns an Enumerable::Enumerator when passed no block
Modified: MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_char_tags.txt
===================================================================
--- MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_char_tags.txt 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/tags/1.9/core/argf/each_char_tags.txt 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1,2 +1 @@
fails:ARGF.each_char returns self when passed a block
-fails:ARGF.each_char returns an Enumerable::Enumerator when passed no block
Deleted: MacRuby/trunk/spec/frozen/tags/1.9/core/argf/lineno_tags.txt
===================================================================
--- MacRuby/trunk/spec/frozen/tags/1.9/core/argf/lineno_tags.txt 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/tags/1.9/core/argf/lineno_tags.txt 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1 +0,0 @@
-fails:ARGF.lineno returns the current line number on each file
Modified: MacRuby/trunk/spec/frozen/upstream
===================================================================
--- MacRuby/trunk/spec/frozen/upstream 2009-10-15 06:37:10 UTC (rev 2809)
+++ MacRuby/trunk/spec/frozen/upstream 2009-10-15 18:49:08 UTC (rev 2810)
@@ -1 +1 @@
-1dffcb6782dfa03652348a3143569abba086d290
\ No newline at end of file
+2d102bae115e11719ff355d99ef336c0889b769a
\ No newline at end of file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091015/fd394c10/attachment-0001.html>
More information about the macruby-changes
mailing list