fastruby 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,111 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+ class ::VY1
5
+ fastruby "
6
+ def foo
7
+ yield
8
+ end
9
+ "
10
+ end
11
+
12
+ it "should allow block as proc when calling from normal ruby" do
13
+ executed = 0
14
+
15
+ block = proc do
16
+ executed = 1
17
+ end
18
+
19
+ ::VY1.new.foo(&block)
20
+
21
+ executed.should be == 1
22
+ end
23
+
24
+ class ::VY2
25
+ fastruby "
26
+ def foo
27
+ yield
28
+ end
29
+
30
+ def bar(block)
31
+ foo(&block)
32
+ end
33
+ "
34
+ end
35
+
36
+ it "should allow block as proc when calling from fastruby" do
37
+ executed = 0
38
+
39
+ block = proc do
40
+ executed = 1
41
+ end
42
+
43
+ ::VY2.new.bar(block)
44
+
45
+ executed.should be == 1
46
+ end
47
+
48
+ class ::VY3
49
+ fastruby "
50
+ def foo
51
+ yield(1)
52
+ end
53
+
54
+ def bar(block)
55
+ foo(&block)
56
+ end
57
+ "
58
+ end
59
+
60
+ it "should allow block as proc when calling from fastruby with arguments" do
61
+ executed = 0
62
+ recv_x = nil
63
+
64
+ block = proc do |x|
65
+ recv_x = x
66
+ executed = 1
67
+ end
68
+
69
+ ::VY3.new.bar(block)
70
+
71
+ recv_x.should be == 1
72
+ executed.should be == 1
73
+ end
74
+
75
+
76
+ class ::VY4
77
+ def foo(a,b,c)
78
+ yield(a,b,c)
79
+ end
80
+
81
+
82
+ fastruby "
83
+ def bar(x,block)
84
+ foo(*x,&block)
85
+ end
86
+ "
87
+ end
88
+
89
+ it "should allow block as proc when calling from fastruby with splat arguments" do
90
+ executed = 0
91
+ recv_a = nil
92
+ recv_b = nil
93
+ recv_c = nil
94
+
95
+ block = proc do |a,b,c|
96
+ recv_a = a
97
+ recv_b = b
98
+ recv_c = c
99
+ executed = 1
100
+ end
101
+
102
+ ::VY4.new.bar([1,2,3],block)
103
+
104
+ recv_a.should be == 1
105
+ recv_b.should be == 2
106
+ recv_c.should be == 3
107
+ executed.should be == 1
108
+ end
109
+
110
+
111
+ end
@@ -77,6 +77,7 @@ describe FastRuby, "fastruby" do
77
77
  end
78
78
  end
79
79
 
80
- test_invalid_fastruby_arguments(15)
81
-
80
+ #test_invalid_fastruby_arguments(15)
81
+
82
+ test_fastruby_arguments(1024)
82
83
  end
@@ -0,0 +1,303 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby, "fastruby" do
4
+ it "should allow one optional argument" do
5
+ fastruby "
6
+ class CFX1
7
+ def foo(a=0)
8
+ a
9
+ end
10
+ end
11
+ "
12
+ end
13
+
14
+ it "should allow one optional argument and should return the default when no specified" do
15
+ fastruby "
16
+ class CFX2
17
+ def foo(a=0)
18
+ a
19
+ end
20
+ end
21
+ "
22
+
23
+ CFX2.new.foo.should be == 0
24
+ end
25
+
26
+ it "should allow one optional argument and should return the passed value when specified" do
27
+ fastruby "
28
+ class CFX3
29
+ def foo(a=0)
30
+ a
31
+ end
32
+ end
33
+ "
34
+
35
+ CFX3.new.foo(99).should be == 99
36
+ end
37
+
38
+ fastruby "
39
+ class CFX4
40
+ def foo(a=7,b=4)
41
+ [a,b]
42
+ end
43
+ end
44
+ "
45
+
46
+ it "should allow two optional argument and should return the passed value when no arguments is passed" do
47
+ cfx4 = CFX4.new
48
+ cfx4.foo().should be == [7,4]
49
+ end
50
+
51
+ it "should allow two optional argument and should return the passed value when one argument is passed" do
52
+ cfx4 = CFX4.new
53
+ cfx4.foo(99).should be == [99,4]
54
+ end
55
+
56
+ it "should allow two optional argument and should return the passed value when two arguments are passed" do
57
+ cfx4 = CFX4.new
58
+ cfx4.foo(99,88).should be == [99,88]
59
+ end
60
+
61
+ fastruby "
62
+ class CFX5
63
+ def foo(a,b=4)
64
+ [a,b]
65
+ end
66
+ end
67
+ "
68
+
69
+ it "should allow one mandatory and one optional argument and should return the passed value when one argument is passed" do
70
+ cfx5 = CFX5.new
71
+ cfx5.foo(99).should be == [99,4]
72
+ end
73
+
74
+ it "should allow one mandatory and one optional argument and should return the passed value when two arguments are passed" do
75
+ cfx5 = CFX5.new
76
+ cfx5.foo(99,88).should be == [99,88]
77
+ end
78
+
79
+ it "should raise ArgumentError when no arguments are passed" do
80
+ lambda {
81
+ cfx5 = CFX5.new
82
+ cfx5.foo
83
+ }.should raise_error(ArgumentError)
84
+ end
85
+
86
+ it "should raise ArgumentError when three arguments are passed" do
87
+ lambda {
88
+ cfx5 = CFX5.new
89
+ cfx5.foo(1,2,3)
90
+ }.should raise_error(ArgumentError)
91
+ end
92
+
93
+ it "should allow splat arguments with default arguments " do
94
+ fastruby "
95
+ class CFX6
96
+ def foo(x=44,*y)
97
+ end
98
+ end
99
+ "
100
+ end
101
+
102
+ fastruby "
103
+ class CFX7
104
+ def foo(x=44,*y)
105
+ x
106
+ end
107
+ end
108
+ "
109
+
110
+ it "should allow splat arguments with default arguments accepting no arguments " do
111
+ CFX7.new.foo.should be == 44
112
+ end
113
+
114
+ it "should allow splat arguments with default arguments accepting one argument" do
115
+ CFX7.new.foo(55).should be == 55
116
+ end
117
+
118
+ fastruby "
119
+ class CFX8
120
+ def foo(x=44,*y)
121
+ y
122
+ end
123
+ end
124
+ "
125
+
126
+ it "should allow splat arguments with default arguments accepting no arguments" do
127
+ CFX8.new.foo.should be == []
128
+ end
129
+
130
+ it "should allow splat arguments with default arguments accepting one arguments" do
131
+ CFX8.new.foo(55).should be == []
132
+ end
133
+
134
+ it "should allow splat arguments with default arguments accepting two arguments" do
135
+ CFX8.new.foo(55,66).should be == [66]
136
+ end
137
+
138
+ it "should allow splat arguments with default arguments accepting three arguments" do
139
+ CFX8.new.foo(55,66,67,68).should be == [66,67,68]
140
+ end
141
+
142
+ fastruby "
143
+ class CFX9
144
+ def foo(a,x=44,*y)
145
+ a
146
+ end
147
+ end
148
+ "
149
+
150
+ it "should allow splat arguments with default arguments accepting one argument" do
151
+ CFX9.new.foo(55).should be == 55
152
+ end
153
+
154
+ it "should allow splat arguments with default arguments accepting two argument" do
155
+ CFX9.new.foo(55,66).should be == 55
156
+ end
157
+
158
+ it "should allow splat arguments with default arguments accepting three argument" do
159
+ CFX9.new.foo(55,66,77).should be == 55
160
+ end
161
+
162
+ fastruby "
163
+ class CFX10
164
+ def foo(a,x=44,*y)
165
+ x
166
+ end
167
+ end
168
+ "
169
+ it "should allow splat arguments with default arguments accepting one argument" do
170
+ CFX10.new.foo(55).should be == 44
171
+ end
172
+
173
+ it "should allow splat arguments with default arguments accepting two argument" do
174
+ CFX10.new.foo(55,66).should be == 66
175
+ end
176
+
177
+ it "should allow splat arguments with default arguments accepting three argument" do
178
+ CFX10.new.foo(55,66,77).should be == 66
179
+ end
180
+
181
+ fastruby "
182
+ class CFX11
183
+ def foo(a,x=44,*y)
184
+ y
185
+ end
186
+ end
187
+ "
188
+
189
+ it "should raise ArgumentError with splat arguments with default arguments when no arguments are passed" do
190
+ lambda {
191
+ CFX11.new.foo
192
+ }.should raise_error(ArgumentError)
193
+ end
194
+
195
+ it "should allow splat arguments with default arguments accepting one argument" do
196
+ CFX11.new.foo(55).should be == []
197
+ end
198
+
199
+ it "should allow splat arguments with default arguments accepting two argument" do
200
+ CFX11.new.foo(55,66).should be == []
201
+ end
202
+
203
+ it "should allow splat arguments with default arguments accepting three argument" do
204
+ CFX11.new.foo(55,66,77).should be == [77]
205
+ end
206
+
207
+ fastruby "
208
+ class CFX12
209
+ def foo(a=0,&block)
210
+ a
211
+ end
212
+ end
213
+ "
214
+
215
+ it "should allow splat arguments with default with block arguments accepting no argument" do
216
+ CFX12.new.foo() {
217
+
218
+ }.should be == 0
219
+ end
220
+
221
+ it "should allow splat arguments with default with block arguments accepting one argument" do
222
+ CFX12.new.foo(44) {
223
+
224
+ }.should be == 44
225
+ end
226
+
227
+ fastruby "
228
+ class CFX13
229
+ def foo(a=0,&block)
230
+ block.call
231
+ end
232
+ end
233
+ "
234
+
235
+ it "should allow splat arguments with default with block arguments accepting no argument" do
236
+ CFX13.new.foo() {
237
+ 66
238
+ }.should be == 66
239
+ end
240
+
241
+ it "should allow splat arguments with default with block arguments accepting one argument" do
242
+ CFX13.new.foo(44) {
243
+ 77
244
+ }.should be == 77
245
+ end
246
+
247
+ fastruby "
248
+ class CFX14
249
+ def foo
250
+ 55
251
+ end
252
+ end
253
+ "
254
+
255
+ fastruby "
256
+ class CFX15
257
+ def foo(cfx14,b = cfx14.foo)
258
+ end
259
+ end
260
+ "
261
+
262
+ it "should execute default blocks when no argument is passed" do
263
+ cfx14 = CFX14.new
264
+ cfx15 = CFX15.new
265
+
266
+ cfx14.should_receive :foo
267
+
268
+ cfx15.foo(cfx14)
269
+ end
270
+
271
+ it "should not execute default blocks when argument is passed" do
272
+ cfx14 = CFX14.new
273
+ cfx15 = CFX15.new
274
+
275
+ cfx14.should_not_receive :foo
276
+
277
+ cfx15.foo(cfx14,99)
278
+ end
279
+
280
+ it "should allow if on default argument" do
281
+ fastruby "
282
+ class ::CFX16
283
+ def foo(a, b = if a
284
+ 87
285
+ else
286
+ 55
287
+ end
288
+ )
289
+ b
290
+ end
291
+ end
292
+ "
293
+
294
+
295
+ cfx16 = ::CFX16.new
296
+
297
+ cfx16.foo(false).should be == 55
298
+ cfx16.foo(true).should be == 87
299
+ cfx16.foo(true,99).should be == 99
300
+ cfx16.foo(false,99).should be == 99
301
+ end
302
+
303
+ end
@@ -279,4 +279,39 @@ describe FastRuby, "fastruby" do
279
279
 
280
280
  ::CF18.new.foo(1,2,3,4,5).should be == "12345"
281
281
  end
282
+
283
+
284
+ class ::CFF
285
+
286
+ end
287
+ it "should allow define splat arguments on singleton method" do
288
+ fastruby "
289
+ class ::CF19
290
+ def bar(x)
291
+ def x.foo(*y)
292
+ end
293
+ end
294
+ end
295
+ "
296
+
297
+ x = ::CFF.new
298
+ ::CF19.new.bar(x)
299
+ x.foo(1,2,3,4,5)
300
+ end
301
+
302
+ it "should read splat arguments on singleton method" do
303
+ fastruby "
304
+ class ::CF20
305
+ def bar(x)
306
+ def x.foo(*y)
307
+ y
308
+ end
309
+ end
310
+ end
311
+ "
312
+
313
+ x = ::CFF.new
314
+ ::CF20.new.bar(x)
315
+ x.foo(1,2,3,4,5).should be == [1,2,3,4,5]
316
+ end
282
317
  end
@@ -36,4 +36,30 @@ describe FastRuby, "fastruby" do
36
36
  }.should_not raise_exception
37
37
  end
38
38
 
39
+ it "should trap exception raised on ensure after return on parent frame" do
40
+
41
+ fastruby <<ENDSTR
42
+
43
+ class L3
44
+ def foo
45
+ yield
46
+ ensure
47
+ raise RuntimeError
48
+ end
49
+
50
+ def bar
51
+ foo do
52
+ return 4
53
+ end
54
+ end
55
+ end
56
+
57
+ ENDSTR
58
+
59
+ lambda {
60
+ ::L3.new.bar
61
+ }.should raise_exception(RuntimeError)
62
+
63
+ end
64
+
39
65
  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: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
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-10-23 00:00:00 -03:00
18
+ date: 2011-11-01 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -97,12 +97,14 @@ files:
97
97
  - lib/fastruby/method_extension.rb
98
98
  - lib/fastruby/cache/cache.rb
99
99
  - lib/fastruby.rb
100
+ - lib/targetted
100
101
  - spec/variable_spec.rb
101
102
  - spec/control_spec.rb
102
103
  - spec/return_spec.rb
103
104
  - spec/expression_spec.rb
104
105
  - spec/defn/replacement_spec.rb
105
106
  - spec/defn/multiple_args_spec.rb
107
+ - spec/defn/default_args_spec.rb
106
108
  - spec/module_spec.rb
107
109
  - spec/jump/next_spec.rb
108
110
  - spec/base_spec.rb
@@ -111,7 +113,11 @@ files:
111
113
  - spec/block/lambda_spec.rb
112
114
  - spec/block/next_spec.rb
113
115
  - spec/block/break_spec.rb
116
+ - spec/block/callcc_spec.rb
117
+ - spec/block/block_as_proc_spec.rb
118
+ - spec/block/arguments_spec.rb
114
119
  - spec/block/proc_spec.rb
120
+ - spec/block/proc_as_block_spec.rb
115
121
  - spec/exception/exc_trap_spec.rb
116
122
  - spec/exception/syntaxis_spec.rb
117
123
  - spec/exception/base_spec.rb