summaryrefslogtreecommitdiff
path: root/spec/rubyspec/language/redo_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/language/redo_spec.rb')
-rw-r--r--spec/rubyspec/language/redo_spec.rb66
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