fastruby 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/lib/fastruby.rb CHANGED
@@ -33,6 +33,6 @@ module FastRuby
33
33
  FastRuby.fastruby_script_path = File.expand_path(__FILE__)
34
34
  FastRuby.fastruby_load_path = File.expand_path(File.dirname(__FILE__))
35
35
 
36
- VERSION = "0.0.9" unless defined? FastRuby::VERSION
36
+ VERSION = "0.0.10" unless defined? FastRuby::VERSION
37
37
  end
38
38
 
@@ -0,0 +1,67 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby redo statement" do
4
+ class ::WB1
5
+ fastruby "
6
+ def bar
7
+ yield
8
+ end
9
+
10
+ def foo
11
+ sum = 0
12
+ bar do
13
+ sum = sum + 1
14
+ redo if sum<10
15
+ end
16
+
17
+ sum
18
+ end
19
+ "
20
+ end
21
+
22
+ it "should execute basic redo" do
23
+ wb1 = ::WB1.new
24
+ wb1.foo.should be == 10
25
+ end
26
+
27
+ class ::WB2
28
+ def bar
29
+ yield
30
+ end
31
+
32
+ fastruby "
33
+
34
+ def foo
35
+ sum = 0
36
+ bar do
37
+ sum = sum + 1
38
+ redo if sum<10
39
+ end
40
+
41
+ sum
42
+ end
43
+ "
44
+ end
45
+
46
+ it "should execute basic redo (called method is in ruby)" do
47
+ wb2 = ::WB2.new
48
+ wb2.foo.should be == 10
49
+ end
50
+
51
+ class ::WB3
52
+ fastruby "
53
+ def foo
54
+ redo
55
+ end
56
+ "
57
+ end
58
+
59
+ it "should raise LocalJumpError when invoked illegal redo" do
60
+ wb3 = ::WB3.new
61
+
62
+ lambda {
63
+ wb3.foo
64
+ }.should raise_error(LocalJumpError)
65
+ end
66
+
67
+ end
@@ -0,0 +1,135 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby retry statement" do
4
+ class ::WG1
5
+ attr_reader :a, :b
6
+
7
+ def initialize
8
+ @a = 0
9
+ @b = 0
10
+ end
11
+
12
+ fastruby "
13
+ def bar
14
+ @a = @a + 1
15
+
16
+ yield(1)
17
+ yield(2)
18
+ yield(3)
19
+ ensure
20
+ @b = @b + 1
21
+ end
22
+
23
+ def foo
24
+ sum = 0
25
+ bar do |x|
26
+ sum = sum + 1
27
+ retry if x == 3 and sum < 30
28
+ end
29
+
30
+ sum
31
+ end
32
+ "
33
+ end
34
+
35
+ it "should execute basic retry" do
36
+ wg1 = ::WG1.new
37
+ wg1.foo.should be == 30
38
+ wg1.a.should be == 10
39
+ wg1.b.should be == 10
40
+ end
41
+
42
+
43
+ class ::WG2
44
+ attr_reader :a, :b
45
+
46
+ def initialize
47
+ @a = 0
48
+ @b = 0
49
+ end
50
+
51
+ fastruby "
52
+ def bar(x)
53
+ @a = @a + 1
54
+
55
+ yield(1)
56
+ yield(2)
57
+ yield(3)
58
+ ensure
59
+ @b = @b + 1
60
+ end
61
+
62
+ def foo
63
+ sum = 0
64
+ bar(0) do |x|
65
+ sum = sum + 1
66
+ retry if x == 3 and sum < 30
67
+ end
68
+
69
+ sum
70
+ end
71
+ "
72
+ end
73
+
74
+ it "should work with a method more arguments than zero" do
75
+ wg2 = ::WG2.new
76
+ wg2.foo.should be == 30
77
+ wg2.a.should be == 10
78
+ wg2.b.should be == 10
79
+ end
80
+
81
+ class ::WG3
82
+ fastruby "
83
+ def foo
84
+ sum = 0
85
+ begin
86
+ sum = sum + 1
87
+ raise RuntimeError
88
+ rescue RuntimeError
89
+ retry if sum < 10
90
+ end
91
+
92
+ sum
93
+ end
94
+ "
95
+ end
96
+
97
+ it "should work with rescue" do
98
+ ::WG3.new.foo.should be == 10
99
+ end
100
+
101
+ class ::WG4
102
+ fastruby "
103
+ def foo
104
+ retry
105
+ end
106
+ "
107
+ end
108
+
109
+ it "should raise LocalJumpError when there is no block" do
110
+ lambda {
111
+ ::WG4.new.foo
112
+ }.should raise_error(LocalJumpError)
113
+ end
114
+
115
+ class ::WG5
116
+ attr_accessor :a
117
+
118
+ fastruby "
119
+ def foo
120
+ retry
121
+ ensure
122
+ @a = 1
123
+ end
124
+ "
125
+ end
126
+
127
+ it "should trap exceptions generated by illegal retry's" do
128
+ wg5 = ::WG5.new
129
+ lambda {
130
+ wg5.foo
131
+ }.should raise_error(LocalJumpError)
132
+
133
+ wg5.a.should be == 1
134
+ end
135
+ end
@@ -0,0 +1,39 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+ it "should allow basic exception control" do
5
+ fastruby "
6
+ class ::L1
7
+ def foo
8
+ begin
9
+ rescue
10
+ end
11
+
12
+ 0
13
+ end
14
+ end
15
+ "
16
+ ::L1.new.foo.should be == 0
17
+ end
18
+
19
+ it "should allow basic exception control and catch exception" do
20
+ fastruby "
21
+ class ::L2
22
+ def foo
23
+ begin
24
+ raise RuntimeError
25
+ rescue RuntimeError
26
+ return 1
27
+ end
28
+
29
+ 0
30
+ end
31
+ end
32
+ "
33
+
34
+ lambda {
35
+ ::L2.new.foo.should be == 1
36
+ }.should_not raise_exception
37
+ end
38
+
39
+ end
@@ -0,0 +1,52 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+ it "should allow basic exception control and ensure" do
5
+ fastruby "
6
+ class ::L3
7
+ def foo
8
+
9
+ a = 0
10
+
11
+ begin
12
+ raise RuntimeError
13
+ rescue RuntimeError
14
+ ensure
15
+ a = 2
16
+ end
17
+
18
+ a
19
+ end
20
+ end
21
+ "
22
+
23
+ lambda {
24
+ ::L3.new.foo.should be == 2
25
+ }.should_not raise_exception
26
+ end
27
+
28
+ it "should allow basic exception control and ensure without rescue" do
29
+ class ::L4
30
+ attr_reader :a
31
+
32
+ fastruby "
33
+ def foo
34
+ begin
35
+ raise RuntimeError
36
+ ensure
37
+ @a = 2
38
+ end
39
+ end
40
+ "
41
+ end
42
+
43
+ l4 = ::L4.new
44
+
45
+ lambda {
46
+ l4.foo
47
+ }.should raise_exception(Exception)
48
+
49
+ l4.a.should be == 2
50
+ end
51
+
52
+ end
@@ -1,88 +1,6 @@
1
1
  require "fastruby"
2
2
 
3
3
  describe FastRuby, "fastruby" do
4
- it "should allow basic exception control" do
5
- fastruby "
6
- class ::L1
7
- def foo
8
- begin
9
- rescue
10
- end
11
-
12
- 0
13
- end
14
- end
15
- "
16
- ::L1.new.foo.should be == 0
17
- end
18
-
19
- it "should allow basic exception control and catch exception" do
20
- fastruby "
21
- class ::L2
22
- def foo
23
- begin
24
- raise RuntimeError
25
- rescue RuntimeError
26
- return 1
27
- end
28
-
29
- 0
30
- end
31
- end
32
- "
33
-
34
- lambda {
35
- ::L2.new.foo.should be == 1
36
- }.should_not raise_exception
37
- end
38
-
39
- it "should allow basic exception control and ensure" do
40
- fastruby "
41
- class ::L3
42
- def foo
43
-
44
- a = 0
45
-
46
- begin
47
- raise RuntimeError
48
- rescue RuntimeError
49
- ensure
50
- a = 2
51
- end
52
-
53
- a
54
- end
55
- end
56
- "
57
-
58
- lambda {
59
- ::L3.new.foo.should be == 2
60
- }.should_not raise_exception
61
- end
62
-
63
- it "should allow basic exception control and ensure without rescue" do
64
- class ::L4
65
- attr_reader :a
66
-
67
- fastruby "
68
- def foo
69
- begin
70
- raise RuntimeError
71
- ensure
72
- @a = 2
73
- end
74
- end
75
- "
76
- end
77
-
78
- l4 = ::L4.new
79
-
80
- lambda {
81
- l4.foo
82
- }.should raise_exception(Exception)
83
-
84
- l4.a.should be == 2
85
- end
86
4
 
87
5
  class BahException < Exception
88
6
  end
@@ -356,17 +274,6 @@ describe FastRuby, "fastruby" do
356
274
  l2.foo("").foo(l1)
357
275
  }.should_not raise_exception
358
276
  end
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
277
  end
371
278
  end
372
279
 
@@ -375,66 +282,5 @@ describe FastRuby, "fastruby" do
375
282
  basic_unhandled_exception("4", "StandardError")
376
283
  basic_unhandled_exception("5", "Errno::ENOENT")
377
284
 
378
- it "should accept else with rescue" do
379
-
380
- random_name = "::L11_1"
381
- fastruby "
382
- class #{random_name}
383
- def foo
384
- begin
385
- raise Exception
386
- rescue Exception
387
- return 111
388
- else
389
- return 222
390
- end
391
- end
392
- end
393
- "
394
-
395
- l = eval(random_name).new
396
- l.foo.should be == 111
397
- end
398
-
399
- it "should accept else with rescue, when no exception is raised" do
400
-
401
- random_name = "::L12_1"
402
- fastruby "
403
- class #{random_name}
404
- def foo
405
- begin
406
- rescue Exception
407
- return 111
408
- else
409
- return 222
410
- end
411
- end
412
- end
413
- "
414
-
415
- l = eval(random_name).new
416
- l.foo.should be == 222
417
- end
418
-
419
- it "should accept else with rescue, when no exception is raised and begin has body" do
420
-
421
- random_name = "::L13_1"
422
- fastruby "
423
- class #{random_name}
424
- def foo
425
- begin
426
- a = 77
427
- rescue Exception
428
- return 111
429
- else
430
- return 222
431
- end
432
- end
433
- end
434
- "
435
-
436
- l = eval(random_name).new
437
- l.foo.should be == 222
438
- end
439
285
 
440
286
  end
@@ -0,0 +1,89 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+
5
+ it "should accept else with rescue" do
6
+
7
+ random_name = "::L11_1"
8
+ fastruby "
9
+ class #{random_name}
10
+ def foo
11
+ begin
12
+ raise Exception
13
+ rescue Exception
14
+ return 111
15
+ else
16
+ return 222
17
+ end
18
+ end
19
+ end
20
+ "
21
+
22
+ l = eval(random_name).new
23
+ l.foo.should be == 111
24
+ end
25
+
26
+ it "should accept else with rescue, when no exception is raised" do
27
+
28
+ random_name = "::L12_1"
29
+ fastruby "
30
+ class #{random_name}
31
+ def foo
32
+ begin
33
+ rescue Exception
34
+ return 111
35
+ else
36
+ return 222
37
+ end
38
+ end
39
+ end
40
+ "
41
+
42
+ l = eval(random_name).new
43
+ l.foo.should be == 222
44
+ end
45
+
46
+ it "should accept else with rescue, when no exception is raised and begin has body" do
47
+
48
+ random_name = "::L13_1"
49
+ fastruby "
50
+ class #{random_name}
51
+ def foo
52
+ begin
53
+ a = 77
54
+ rescue Exception
55
+ return 111
56
+ else
57
+ return 222
58
+ end
59
+ end
60
+ end
61
+ "
62
+
63
+ l = eval(random_name).new
64
+ l.foo.should be == 222
65
+ end
66
+
67
+ def self.argumentless_rescue(exceptionname)
68
+ fastruby "
69
+ class ::L15_#{exceptionname}
70
+ def foo
71
+ begin
72
+ raise #{exceptionname}
73
+ rescue
74
+ end
75
+ end
76
+ end
77
+ "
78
+
79
+ it "should argumentless rescue catch #{exceptionname}" do
80
+ l15 = eval("::L15_#{exceptionname}").new
81
+ lambda {
82
+ l15.foo
83
+ }.should_not raise_exception
84
+ end
85
+ end
86
+
87
+ argumentless_rescue("RuntimeError")
88
+
89
+ end
@@ -0,0 +1,40 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "for statement" do
4
+ class ::OX1
5
+ fastruby '
6
+ def foo(a)
7
+ for i in a
8
+ end
9
+ end
10
+ '
11
+ end
12
+
13
+ it "should invoke each" do
14
+ ox1 = ::OX1.new
15
+ a = [1,2,3]
16
+ a.should_receive(:each)
17
+ ox1.foo(a)
18
+ end
19
+
20
+ class ::OX2
21
+ fastruby '
22
+ def foo(a)
23
+ ret = 0
24
+
25
+ for i in a
26
+ ret = ret + i
27
+ end
28
+
29
+ ret
30
+ end
31
+ '
32
+ end
33
+
34
+ it "should read i on each for iteration" do
35
+ ox2 = ::OX2.new
36
+ a = [1,2,3]
37
+ ox2.foo(a).should be == 6
38
+ end
39
+
40
+ end
@@ -0,0 +1,36 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+ it "should next on block throught multiple frames" do
5
+ fastruby "
6
+ class ::PX1
7
+ attr_accessor :a,:b
8
+
9
+ def bar
10
+ yield
11
+ end
12
+
13
+ def foo
14
+ bar do
15
+ begin
16
+ begin
17
+ next 72
18
+ ensure
19
+ @a = 1
20
+ end
21
+ ensure
22
+ @b = 2
23
+ end
24
+
25
+ 87
26
+ end
27
+ end
28
+ end
29
+ "
30
+ px1= ::PX1.new
31
+ px1.foo.should be == 72
32
+ px1.a.should be == 1
33
+ px1.b.should be == 2
34
+
35
+ end
36
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 9
10
- version: 0.0.9
9
+ - 10
10
+ version: 0.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dario Seminara
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-28 00:00:00 -03:00
18
+ date: 2011-10-02 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -88,15 +88,21 @@ files:
88
88
  - spec/return_spec.rb
89
89
  - spec/expression_spec.rb
90
90
  - spec/module_spec.rb
91
- - spec/exception_spec.rb
91
+ - spec/jump/next_spec.rb
92
92
  - spec/base_spec.rb
93
+ - spec/block/redo_spec.rb
94
+ - spec/block/retry_spec.rb
93
95
  - spec/block/lambda_spec.rb
94
96
  - spec/block/next_spec.rb
95
97
  - spec/block/break_spec.rb
96
- - spec/block/callcc_spec.rb
97
98
  - spec/block/proc_spec.rb
99
+ - spec/exception/exc_trap_spec.rb
100
+ - spec/exception/syntaxis_spec.rb
101
+ - spec/exception/base_spec.rb
102
+ - spec/exception/ensure_spec.rb
98
103
  - spec/block_spec.rb
99
104
  - spec/flow_control/case_spec.rb
105
+ - spec/flow_control/for_spec.rb
100
106
  - spec/sugar_spec.rb
101
107
  - spec/literal_spec.rb
102
108
  - spec/singleton_spec.rb