diff options
Diffstat (limited to 'spec/rubyspec/language/redo_spec.rb')
| -rw-r--r-- | spec/rubyspec/language/redo_spec.rb | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/spec/rubyspec/language/redo_spec.rb b/spec/rubyspec/language/redo_spec.rb deleted file mode 100644 index 53fd30b4f2..0000000000 --- a/spec/rubyspec/language/redo_spec.rb +++ /dev/null @@ -1,66 +0,0 @@ -require File.expand_path('../../spec_helper', __FILE__) - -describe "The redo statement" do - it "restarts block execution if used within block" do - a = [] - lambda { - a << 1 - redo if a.size < 2 - a << 2 - }.call - a.should == [1, 1, 2] - end - - it "re-executes the closest loop" do - exist = [2,3] - processed = [] - order = [] - [1,2,3,4].each do |x| - order << x - begin - processed << x - if exist.include?(x) - raise StandardError, "included" - end - rescue StandardError - exist.delete(x) - redo - end - end - processed.should == [1,2,2,3,3,4] - exist.should == [] - order.should == [1,2,2,3,3,4] - end - - it "re-executes the last step in enumeration" do - list = [] - [1,2,3].each do |x| - list << x - break if list.size == 6 - redo if x == 3 - end - list.should == [1,2,3,3,3,3] - end - - it "triggers ensure block when re-executing a block" do - list = [] - [1,2,3].each do |x| - list << x - begin - list << 10*x - redo if list.count(1) == 1 - ensure - list << 100*x - end - end - list.should == [1,10,100,1,10,100,2,20,200,3,30,300] - end - - describe "in a method" do - it "is invalid and raises a SyntaxError" do - lambda { - eval("def m; redo; end") - }.should raise_error(SyntaxError) - end - end -end |
