nendo 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,27 +2,8 @@
2
2
  ;; test for nendo's core utility
3
3
 
4
4
  (use nendo.test)
5
- (test-start "nendo's core utility")
6
-
7
- ;;===================================================================
8
- (test-section "pretty-print-to-string")
9
- (define test-sexp1 '(a (b (c))))
10
- (define test-sexp2 '(define (function1 a b c) (+ a b c)))
11
-
12
- (test* "pretty-print-to-string"
13
- (string-join
14
- '("(a\n"
15
- " (b\n"
16
- " (c)))\n"))
17
- (pretty-print-to-string test-sexp1))
18
-
19
- (test* "pretty-print-to-string"
20
- (string-join
21
- '("(define\n"
22
- " (function1 a b c)\n"
23
- " (+ a b c))\n"))
24
- (pretty-print-to-string test-sexp2))
25
5
 
6
+ (test-start "nendo's core utility")
26
7
 
27
8
  ;;-------------------------------------------------------------------
28
9
  (test-section "disasm")
@@ -32,8 +13,8 @@
32
13
  var))
33
14
 
34
15
  (test* "disasm info"
35
- " file: ./test/nendo-util-test.nnd
36
- lineno: 30
16
+ " file: ./test/nendo-util-test.nnd
17
+ lineno: 11
37
18
  source:
38
19
  (define
39
20
  (dummy-function arg1)
@@ -46,8 +27,7 @@
46
27
  (%let
47
28
  ((var
48
29
  (+ arg1 1))) var)))
49
- "
50
- (disasm 'dummy-function 'info))
30
+ " (disasm 'dummy-function 'info))
51
31
  (test* "disasm source "
52
32
  '(define (dummy-function arg1) (let1 var (+ arg1 1) var))
53
33
  (disasm 'dummy-function 'source))
@@ -67,16 +47,19 @@ trampCall(
67
47
  ___lambda = lambda { |_var|
68
48
  begin
69
49
  trampCall(_var)
70
- rescue => __e ; __e.set_backtrace( [\"./test/nendo-util-test.nnd:32\"] + __e.backtrace ) ; raise __e
50
+ rescue => __e ; __e.set_backtrace( [\"./test/nendo-util-test.nnd:13\"] + __e.backtrace ) ; raise __e
71
51
  end
72
52
  } ; ___lambda.call(
73
- __PLMARK_ARGS2(
74
- begin
75
- trampCall(_arg1)
76
- rescue => __e ; __e.set_backtrace( [\"./test/nendo-util-test.nnd:31\"] + __e.backtrace ) ; raise __e
77
- end ,
78
- 1
79
- )
53
+ begin
54
+ embedBacktraceInfo( \"./test/nendo-util-test.nnd\", 12 );
55
+ __PLMARK_ARGS2(
56
+ begin
57
+ trampCall(_arg1)
58
+ rescue => __e ; __e.set_backtrace( [\"./test/nendo-util-test.nnd:12\"] + __e.backtrace ) ; raise __e
59
+ end ,
60
+ 1
61
+ )
62
+ end
80
63
  )
81
64
  end
82
65
  }
@@ -85,5 +68,308 @@ trampCall(
85
68
  )"
86
69
  (disasm 'dummy-function))
87
70
 
71
+
72
+ ;;===================================================================
73
+ (test-section "pretty-print-to-string")
74
+ (define test-sexp1 '(a (b (c))))
75
+ (define test-sexp2 '(define (function1 a b c) (+ a b c)))
76
+
77
+ (test* "pretty-print-to-string"
78
+ (string-join
79
+ '("(a\n"
80
+ " (b\n"
81
+ " (c)))\n"))
82
+ (pretty-print-to-string test-sexp1))
83
+
84
+ (test* "pretty-print-to-string"
85
+ (string-join
86
+ '("(define\n"
87
+ " (function1 a b c)\n"
88
+ " (+ a b c))\n"))
89
+ (pretty-print-to-string test-sexp2))
90
+
91
+
92
+ (define (wrap-str str)
93
+ (+ "[" str "]"))
94
+
95
+
96
+ ;;-------------------------------------------------------------------
97
+ (test-section "map for Enumerable")
98
+
99
+ (test* "map-pable? no"
100
+ #f
101
+ (%%map-able?
102
+ (lambda (x) x)
103
+ ' (1 2)))
104
+
105
+ (test* "map-pable? yes"
106
+ #t
107
+ (%%map-able?
108
+ (lambda (x) x)
109
+ '#(1 2)))
110
+
111
+ (test* "map-pable? yes"
112
+ #t
113
+ (%%map-able?
114
+ (lambda (x) x)
115
+ (Range.new 0 100)))
116
+
117
+ (test* "map-pable? yes"
118
+ #t
119
+ (%%map-able?
120
+ (lambda (x) x)
121
+ (hash-table eq? '("a" 1) '("b" 2))))
122
+
123
+ (test* "%%map"
124
+ '#("[a]" "[b]" "[C]")
125
+ (%%map
126
+ wrap-str
127
+ '#("a" "b" "C")))
128
+
129
+ (test* "%map (for vector)"
130
+ '#("[a]" "[b]" "[C]")
131
+ (%map
132
+ wrap-str
133
+ '#("a" "b" "C")))
134
+
135
+ (test* "map (for vector)"
136
+ '#("[a]" "[b]" "[C]")
137
+ (map
138
+ wrap-str
139
+ '#("a" "b" "C")))
140
+
141
+ (test* "map (for list)"
142
+ '("[a]" "[b]" "[C]")
143
+ (map
144
+ wrap-str
145
+ '("a" "b" "C")))
146
+
147
+ (test* "map (for lists)"
148
+ '("[1:3:5]" "[2:4:6]")
149
+ (map
150
+ (lambda (x y z) (+ "[" x ":" y ":" z "]"))
151
+ '("1" "2")
152
+ '("3" "4")
153
+ '("5" "6")))
154
+
155
+ ;;-------------------------------------------------------------------
156
+ (test-section "for-each for Enumerable")
157
+
158
+ (test* "for-each-pable? no"
159
+ #f
160
+ (%%for-each-able?
161
+ (lambda (x) x)
162
+ ' (1 2)))
163
+
164
+ (test* "for-each-pable? yes"
165
+ #t
166
+ (%%for-each-able?
167
+ (lambda (x) x)
168
+ '#(1 2)))
169
+
170
+ (test* "for-each-pable? yes"
171
+ #t
172
+ (%%for-each-able?
173
+ (lambda (x) x)
174
+ (Range.new 0 100)))
175
+
176
+ (test* "for-each-pable? yes"
177
+ #t
178
+ (%%for-each-able?
179
+ (lambda (x) x)
180
+ (hash-table eq? '("a" 1) '("b" 2))))
181
+
182
+ (test* "%%for-each"
183
+ '("[a]" "[b]" "[C]")
184
+ (let1 result '()
185
+ (%%for-each
186
+ (lambda (x) (set! result
187
+ (cons (wrap-str x) result)))
188
+ '#("a" "b" "C"))
189
+ (reverse result)))
190
+
191
+ (test* "%for-each (for vector)"
192
+ '("[a]" "[b]" "[C]")
193
+ (let1 result '()
194
+ (%for-each
195
+ (lambda (x) (set! result
196
+ (cons (wrap-str x) result)))
197
+ '#("a" "b" "C"))
198
+ (reverse result)))
199
+
200
+ (test* "for-each (for vector)"
201
+ '("[a]" "[b]" "[C]")
202
+ (let1 result '()
203
+ (for-each
204
+ (lambda (x) (set! result
205
+ (cons (wrap-str x) result)))
206
+ '#("a" "b" "C"))
207
+ (reverse result)))
208
+
209
+ (test* "for-each (for list)"
210
+ '("[a]" "[b]" "[C]")
211
+ (let1 result '()
212
+ (for-each
213
+ (lambda (x) (set! result
214
+ (cons (wrap-str x) result)))
215
+ '("a" "b" "C"))
216
+ (reverse result)))
217
+
218
+ (test* "for-each (for lists)"
219
+ '("[1:3:5]" "[2:4:6]")
220
+ (let1 result '()
221
+ (for-each
222
+ (lambda (x y z)
223
+ (set! result
224
+ (cons
225
+ (+ "[" x ":" y ":" z "]")
226
+ result)))
227
+
228
+ '("1" "2")
229
+ '("3" "4")
230
+ '("5" "6"))
231
+ (reverse result)))
232
+
233
+
234
+ ;;-------------------------------------------------------------------
235
+ (test-section "filter for Enumerable")
236
+
237
+ (test* "filter-pable? no"
238
+ #f
239
+ (%%filter-able?
240
+ (lambda (x) x)
241
+ ' (1 2)))
242
+
243
+ (test* "filter-pable? yes"
244
+ #t
245
+ (%%filter-able?
246
+ (lambda (x) x)
247
+ '#(1 2)))
248
+
249
+ (test* "filter-pable? yes"
250
+ #t
251
+ (%%filter-able?
252
+ (lambda (x) x)
253
+ (Range.new 0 100)))
254
+
255
+ (test* "filter-pable? yes"
256
+ #t
257
+ (%%filter-able?
258
+ (lambda (x) x)
259
+ (hash-table eq? '("a" 1) '("b" 2))))
260
+
261
+ (test* "%%filter"
262
+ '#("b")
263
+ (%%filter
264
+ (lambda (x) (= "b" x))
265
+ '#("a" "b" "C")))
266
+
267
+ (test* "%filter (for vector)"
268
+ '#("b")
269
+ (%filter
270
+ (lambda (x) (= "b" x))
271
+ '#("a" "b" "C")))
272
+
273
+ (test* "filter (for vector1)"
274
+ '#("b")
275
+ (filter
276
+ (lambda (x) (= "b" x))
277
+ '#("a" "b" "C")))
278
+
279
+ (test* "filter (for vector2)"
280
+ '#("a" "C")
281
+ (filter
282
+ (lambda (x) (not (= "b" x)))
283
+ '#("a" "b" "C")))
284
+
285
+ (test* "filter (for list)"
286
+ '("C")
287
+ (filter
288
+ (lambda (x) (= "C" x))
289
+ '("a" "b" "C")))
290
+
291
+
292
+ ;;-------------------------------------------------------------------
293
+ (test-section "Enumerable on srfi-1")
294
+ (use srfi-1)
295
+
296
+ (test* "map (for vector)"
297
+ '#("[a]" "[b]" "[C]")
298
+ (map
299
+ wrap-str
300
+ '#("a" "b" "C")))
301
+
302
+ (test* "map (for Range)"
303
+ '#(10 11 12)
304
+ (map
305
+ (lambda (x) x)
306
+ (Range.new 10 12)))
307
+
308
+ (test* "map (for Enumerator)"
309
+ '#("[one]" "[two]" "[three]")
310
+ (map
311
+ wrap-str
312
+ (Enumerator.new
313
+ (&block (v)
314
+ (v.yield "one")
315
+ (v.yield "two")
316
+ (v.yield "three")))))
317
+
318
+
319
+ (test* "for-each (for vector)"
320
+ '("[a]" "[b]" "[C]")
321
+ (let1 result '()
322
+ (for-each
323
+ (lambda (x) (set! result
324
+ (cons (wrap-str x) result)))
325
+ '#("a" "b" "C"))
326
+ (reverse result)))
327
+
328
+ (test* "for-each (for Range)"
329
+ '(10 11 12)
330
+ (let1 result '()
331
+ (for-each
332
+ (lambda (x) (set! result
333
+ (cons x result)))
334
+ (Range.new 10 12))
335
+ (reverse result)))
336
+
337
+ (test* "for-each (for Enumerable)"
338
+ '("[one]" "[two]" "[three]")
339
+ (let1 result '()
340
+ (for-each
341
+ (lambda (x) (set! result
342
+ (cons (wrap-str x) result)))
343
+ (Enumerator.new
344
+ (&block (v)
345
+ (v.yield "one")
346
+ (v.yield "two")
347
+ (v.yield "three"))))
348
+ (reverse result)))
349
+
350
+ (test* "filter (for vector)"
351
+ '#("b")
352
+ (filter
353
+ (lambda (x) (= "b" x))
354
+ '#("a" "b" "C")))
355
+
356
+ (test* "filter (for Range)"
357
+ '#(11)
358
+ (filter
359
+ (lambda (x) (= 11 x))
360
+ (Range.new 10 1000)))
361
+
362
+ (test* "filter (for Enumerable)"
363
+ '#("one" "three")
364
+ (filter
365
+ (lambda (x) (not (= "two" x)))
366
+ (Enumerator.new
367
+ (&block (v)
368
+ (v.yield "one")
369
+ (v.yield "two")
370
+ (v.yield "three")))))
371
+
372
+
373
+
88
374
  ;;===================================================================
89
375
  (test-end)
data/test/nendo_spec.rb CHANGED
@@ -335,6 +335,7 @@ end
335
335
  describe Nendo, "when call evalStr() with `+' function" do
336
336
  before do
337
337
  @nendo = Nendo::Core.new()
338
+ @nendo.setDisplayErrors( false )
338
339
  end
339
340
  it "should" do
340
341
  @nendo.evalStr( " (+ 1) " ).should == "1"
@@ -361,6 +362,7 @@ end
361
362
  describe Nendo, "when call evalStr() with `-' function" do
362
363
  before do
363
364
  @nendo = Nendo::Core.new()
365
+ @nendo.setDisplayErrors( false )
364
366
  end
365
367
  it "should" do
366
368
  @nendo.evalStr( " (- 1) " ).should == "-1"
@@ -383,6 +385,7 @@ end
383
385
  describe Nendo, "when call evalStr() with `*' function" do
384
386
  before do
385
387
  @nendo = Nendo::Core.new()
388
+ @nendo.setDisplayErrors( false )
386
389
  end
387
390
  it "should" do
388
391
  @nendo.evalStr( " (* 1) " ).should == "1"
@@ -407,6 +410,7 @@ end
407
410
  describe Nendo, "when call evalStr() with `/' function" do
408
411
  before do
409
412
  @nendo = Nendo::Core.new()
413
+ @nendo.setDisplayErrors( false )
410
414
  end
411
415
  it "should" do
412
416
  @nendo.evalStr( " (/ 1) " ).should == "1"
@@ -433,6 +437,7 @@ end
433
437
  describe Nendo, "when call evalStr() with `%' function" do
434
438
  before do
435
439
  @nendo = Nendo::Core.new()
440
+ @nendo.setDisplayErrors( false )
436
441
  end
437
442
  it "should" do
438
443
  @nendo.evalStr( " (% 1) " ).should == "0"
@@ -455,6 +460,7 @@ end
455
460
  describe Nendo, "when call evalStr() with `quotient' function" do
456
461
  before do
457
462
  @nendo = Nendo::Core.new()
463
+ @nendo.setDisplayErrors( false )
458
464
  end
459
465
  it "should" do
460
466
  @nendo.evalStr( " (quotient 2 1) " ).should == "2"
@@ -478,6 +484,7 @@ end
478
484
  describe Nendo, "when call evalStr() with `remainder' function" do
479
485
  before do
480
486
  @nendo = Nendo::Core.new()
487
+ @nendo.setDisplayErrors( false )
481
488
  end
482
489
  it "should" do
483
490
  @nendo.evalStr( " (remainder 2 1) " ).should == "0"
@@ -501,6 +508,7 @@ end
501
508
  describe Nendo, "when call evalStr() with `modulo' function" do
502
509
  before do
503
510
  @nendo = Nendo::Core.new()
511
+ @nendo.setDisplayErrors( false )
504
512
  end
505
513
  it "should" do
506
514
  @nendo.evalStr( " (modulo 2 1) " ).should == "0"
@@ -718,6 +726,7 @@ end
718
726
  describe Nendo, "when read various vector expressions" do
719
727
  before do
720
728
  @nendo = Nendo::Core.new()
729
+ @nendo.setDisplayErrors( false )
721
730
  end
722
731
  it "should" do
723
732
  @nendo.evalStr( " '() " ).should == "()"
@@ -743,6 +752,7 @@ end
743
752
  describe Nendo, "when call evalStr() with built-in functions" do
744
753
  before do
745
754
  @nendo = Nendo::Core.new()
755
+ @nendo.setDisplayErrors( false )
746
756
  end
747
757
  it "should" do
748
758
  @nendo.evalStr( " (car '(1 2 3 4)) " ).should == "1"
@@ -936,6 +946,7 @@ end
936
946
  describe Nendo, "when call evalStr() with undefined variable" do
937
947
  before do
938
948
  @nendo = Nendo::Core.new()
949
+ @nendo.setDisplayErrors( false )
939
950
  end
940
951
  it "should" do
941
952
  lambda { @nendo.evalStr( " true " ) }.should_not raise_error
@@ -952,6 +963,7 @@ end
952
963
  describe Nendo, "when call evalStr() with built-in special forms" do
953
964
  before do
954
965
  @nendo = Nendo::Core.new()
966
+ @nendo.setDisplayErrors( false )
955
967
  end
956
968
  it "should" do
957
969
  @nendo.evalStr( " (begin 1) " ).should == "1"
@@ -980,14 +992,14 @@ EOS
980
992
  @nendo.evalStr( " (letrec ((a 22)(b 33)) (%let ((c 44) (d 55)) (+ a b c d))) " ).should == "154"
981
993
  @nendo.evalStr( " (letrec ((a (%let ((b 2)) (+ 100 b)))) a) " ).should == "102"
982
994
  @nendo.evalStr( <<EOS
983
- (letrec ((func1 (lambda (x) 13))
984
- (func2 (lambda (x) (* 2 (func1)))))
995
+ (letrec ((func1 (lambda () 13))
996
+ (func2 (lambda () (* 2 (func1)))))
985
997
  (list (func2) (func1)))
986
998
  EOS
987
999
  ).should == "(26 13)"
988
1000
  @nendo.evalStr( <<EOS
989
- (letrec ((func2 (lambda (x) (* 2 (func1))))
990
- (func1 (lambda (x) 7)))
1001
+ (letrec ((func2 (lambda () (* 2 (func1))))
1002
+ (func1 (lambda () 7)))
991
1003
  (list (func2) (func1)))
992
1004
  EOS
993
1005
  ).should == "(14 7)"
@@ -1015,12 +1027,15 @@ EOS
1015
1027
  @nendo.evalStr( " (apply1 list '(1 2 3))" ).should == "(1 2 3)"
1016
1028
  lambda { @nendo.evalStr( " (error \"My Runtime Error\") " ) }.should raise_error( RuntimeError, /My Runtime Error/ )
1017
1029
  lambda { @nendo.evalStr( " (error \"My Runtime Error\" '(a b c)) " ) }.should raise_error( RuntimeError, /My Runtime Error [(]a b c[)]/ )
1030
+ @nendo.evalStr( "((lambda (arg1) (+ 1 arg1)) 2)" ).should == "3"
1031
+ lambda { @nendo.evalStr( "((lambda (arg1) (+ 1 arg1)))" ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1018
1032
  end
1019
1033
  end
1020
1034
 
1021
1035
  describe Nendo, "when call evalStr() with built-in special forms (renamed symbol)" do
1022
1036
  before do
1023
1037
  @nendo = Nendo::Core.new()
1038
+ @nendo.setDisplayErrors( false )
1024
1039
  @nendo.loadInitFile
1025
1040
  end
1026
1041
  it "should" do
@@ -1050,14 +1065,14 @@ EOS
1050
1065
  @nendo.evalStr( " (/nendo/core/letrec ((a 22)(b 33)) (let ((c 44) (d 55)) (+ a b c d))) " ).should == "154"
1051
1066
  @nendo.evalStr( " (/nendo/core/letrec ((a (let ((b 2)) (+ 100 b)))) a) " ).should == "102"
1052
1067
  @nendo.evalStr( <<EOS
1053
- (/nendo/core/letrec ((func1 (/nendo/core/lambda (x) 13))
1054
- (func2 (/nendo/core/lambda (x) (* 2 (func1)))))
1068
+ (/nendo/core/letrec ((func1 (/nendo/core/lambda () 13))
1069
+ (func2 (/nendo/core/lambda () (* 2 (func1)))))
1055
1070
  (list (func2) (func1)))
1056
1071
  EOS
1057
1072
  ).should == "(26 13)"
1058
1073
  @nendo.evalStr( <<EOS
1059
- (/nendo/core/letrec ((func2 (/nendo/core/lambda (x) (* 2 (func1))))
1060
- (func1 (/nendo/core/lambda (x) 7)))
1074
+ (/nendo/core/letrec ((func2 (/nendo/core/lambda () (* 2 (func1))))
1075
+ (func1 (/nendo/core/lambda () 7)))
1061
1076
  (list (func2) (func1)))
1062
1077
  EOS
1063
1078
  ).should == "(14 7)"
@@ -1084,6 +1099,7 @@ end
1084
1099
  describe Nendo, "when redefined built-in functions(1)." do
1085
1100
  before do
1086
1101
  @nendo = Nendo::Core.new()
1102
+ @nendo.setDisplayErrors( false )
1087
1103
  @nendo.loadInitFile
1088
1104
  end
1089
1105
  it "should" do
@@ -1199,6 +1215,7 @@ end
1199
1215
  describe Nendo, "when use #xxxx syntax " do
1200
1216
  before do
1201
1217
  @nendo = Nendo::Core.new()
1218
+ @nendo.setDisplayErrors( false )
1202
1219
  @nendo.loadInitFile
1203
1220
  end
1204
1221
  it "should" do
@@ -1278,6 +1295,7 @@ end
1278
1295
  describe Nendo, "when use regexp litteral and library functions " do
1279
1296
  before do
1280
1297
  @nendo = Nendo::Core.new()
1298
+ @nendo.setDisplayErrors( false )
1281
1299
  @nendo.loadInitFile
1282
1300
  end
1283
1301
  it "should" do
@@ -1792,6 +1810,7 @@ end
1792
1810
  describe Nendo, "when use values " do
1793
1811
  before do
1794
1812
  @nendo = Nendo::Core.new()
1813
+ @nendo.setDisplayErrors( false )
1795
1814
  @nendo.loadInitFile
1796
1815
  end
1797
1816
  it "should" do
@@ -1835,7 +1854,6 @@ EOS
1835
1854
  EOS
1836
1855
  ).should == "()"
1837
1856
  @nendo.evalStr( " (call-with-values * -) " ).should == "-1"
1838
- @nendo.evalStr( " (receive (a) (values) (list a)) " ).should == "()"
1839
1857
  @nendo.evalStr( " (receive (a) (values 10) (list a)) " ).should == "(10)"
1840
1858
  @nendo.evalStr( " (receive (a b) (values 10 20) (list a b)) " ).should == "(10 20)"
1841
1859
  @nendo.evalStr( " (receive (a b c) (values 10 20 30) (list a b c)) " ).should == "(10 20 30)"
@@ -1854,12 +1872,38 @@ EOS
1854
1872
  @nendo.evalStr( " (receive (a b) (values nil #t) (cons a b)) " ).should == "(nil . #t)"
1855
1873
  @nendo.evalStr( " (receive (a b) (values nil #f) (cons a b)) " ).should == "(nil . #f)"
1856
1874
  @nendo.evalStr( " (receive (a b) (values nil nil) (cons a b)) " ).should == "(nil . nil)"
1875
+ lambda { @nendo.evalStr( " (receive (a) (values) (list a)) " ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1876
+ lambda { @nendo.evalStr( <<EOS
1877
+ (map
1878
+ (lambda (a) a))
1879
+ EOS
1880
+ ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1881
+ lambda { @nendo.evalStr( <<EOS
1882
+ (map
1883
+ (lambda () 1)
1884
+ '(1 2 3))
1885
+ EOS
1886
+ ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1887
+ lambda { @nendo.evalStr( <<EOS
1888
+ (map
1889
+ (lambda (a) a)
1890
+ '(1 2 3)
1891
+ '(10 20 30))
1892
+ EOS
1893
+ ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1894
+ lambda { @nendo.evalStr( <<EOS
1895
+ (map
1896
+ (lambda (a b) (+ a b))
1897
+ '(1 2 3))
1898
+ EOS
1899
+ ) }.should raise_error( ArgumentError, /wrong number of arguments/ )
1857
1900
  end
1858
1901
  end
1859
1902
 
1860
1903
  describe Nendo, "when toplevel variable was overwritten " do
1861
1904
  before do
1862
1905
  @nendo = Nendo::Core.new()
1906
+ @nendo.setDisplayErrors( false )
1863
1907
  @nendo.loadInitFile
1864
1908
  end
1865
1909
  it "should" do
@@ -1992,7 +2036,7 @@ EOS
1992
2036
  EOS
1993
2037
  ).should == "(define main (lambda (argv) (letrec ((result (quote ())) (foo (lambda (x) x)) (val 0) (bar (lambda (x) (+ val 10)))))))"
1994
2038
  @nendo.evalStr( <<EOS
1995
- (define (main argv)
2039
+ (define (main . argv)
1996
2040
  (define (foo x) x)
1997
2041
  (+ 10 20)
1998
2042
  0
@@ -2073,6 +2117,7 @@ end
2073
2117
  describe Nendo, "when use dot-operator (.) macro " do
2074
2118
  before do
2075
2119
  @nendo = Nendo::Core.new()
2120
+ @nendo.setDisplayErrors( false )
2076
2121
  @nendo.loadInitFile
2077
2122
  end
2078
2123
  it "should" do
@@ -2092,8 +2137,7 @@ describe Nendo, "when use dot-operator (.) macro " do
2092
2137
  @nendo.evalStr( " (to-s str.size) " ).should == '"6"'
2093
2138
  @nendo.evalStr( " (to-s 'str.size) " ).should == '"str.size"'
2094
2139
  @nendo.evalStr( " (require \"date\") " ).should == "#f"
2095
- @nendo.evalStr( " (. (Date.new 0) strftime \"%x\") " ).should == '"01/01/00"'
2096
- @nendo.evalStr( " (. (Date.new 0) strftime \"%s\") " ).should == '"-62167392000"'
2140
+ @nendo.evalStr( " (. (Date.new 0) strftime \"%F %r\") " ).should == '"0000-01-01 12:00:00 AM"'
2097
2141
  @nendo.evalStr( " (require \"digest/md5\") " ).should == "#f"
2098
2142
  @nendo.evalStr( " (Digest::MD5.hexdigest \"abc\") " ).should == '"900150983cd24fb0d6963f7d28e17f72"'
2099
2143
  @nendo.evalStr( " (Digest::MD5.hexdigest \"source text\") " ).should == '"20f79a1416626eeacc0bd9a8db87faa2"'
@@ -2147,6 +2191,7 @@ end
2147
2191
  describe Nendo, "when use with-open libraries " do
2148
2192
  before do
2149
2193
  @nendo = Nendo::Core.new()
2194
+ @nendo.setDisplayErrors( false )
2150
2195
  @nendo.loadInitFile
2151
2196
  @fn = "/tmp/for-with-open.dat"
2152
2197
  open( @fn, "w" ) { |f|
@@ -2159,6 +2204,7 @@ describe Nendo, "when use with-open libraries " do
2159
2204
  @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (f.readline.chop))) ", @fn )).should == '"line1"'
2160
2205
  @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (f.readline.chop))) ", @fn )).should == '"line1"'
2161
2206
  @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (f.readline.chop) (f.readline.chop))) ", @fn )).should == '"line2"'
2207
+ @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (map (lambda (line) (line.chop)) f))) ", @fn )).should == '#("line1" "line2" "line3")'
2162
2208
  @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (f.puts \"Wrote from Nendo.\")) \"w\") #t", @fn )).should == "#t"
2163
2209
  @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) (f.readline.chop))) ", @fn )).should == '"Wrote from Nendo."'
2164
2210
  lambda { @nendo.evalStr( sprintf( " (with-open \"%s\" (lambda (f) #t) 1 2 ", @fn )) }.should raise_error(RuntimeError)
@@ -2173,6 +2219,7 @@ end
2173
2219
  describe Nendo, "when use (use ...) macro " do
2174
2220
  before do
2175
2221
  @nendo = Nendo::Core.new()
2222
+ @nendo.setDisplayErrors( false )
2176
2223
  @nendo.loadInitFile
2177
2224
  end
2178
2225
  it "should" do
@@ -2194,6 +2241,7 @@ end
2194
2241
  describe Nendo, "when use keyword feature " do
2195
2242
  before do
2196
2243
  @nendo = Nendo::Core.new()
2244
+ @nendo.setDisplayErrors( false )
2197
2245
  @nendo.loadInitFile
2198
2246
  end
2199
2247
  it "should" do
@@ -2235,6 +2283,7 @@ end
2235
2283
  describe Nendo, "when use hash-table feature " do
2236
2284
  before do
2237
2285
  @nendo = Nendo::Core.new()
2286
+ @nendo.setDisplayErrors( false )
2238
2287
  @nendo.loadInitFile
2239
2288
  end
2240
2289
  it "should" do
@@ -2312,6 +2361,7 @@ end
2312
2361
  describe Nendo, "when use vector feature " do
2313
2362
  before do
2314
2363
  @nendo = Nendo::Core.new()
2364
+ @nendo.setDisplayErrors( false )
2315
2365
  @nendo.loadInitFile
2316
2366
  end
2317
2367
  it "should" do
@@ -2356,6 +2406,7 @@ end
2356
2406
  describe Nendo, "tail call optimization " do
2357
2407
  before do
2358
2408
  @nendo = Nendo::Core.new()
2409
+ @nendo.setDisplayErrors( false )
2359
2410
  @nendo.loadInitFile
2360
2411
  @nendo.loadInitFile # to self optimizing. The init.nnd file will be loaded twice, so `filter' can be optimized on second loading phase.
2361
2412
  end
@@ -2532,6 +2583,7 @@ end
2532
2583
  describe Nendo, "When use :optional argument feature " do
2533
2584
  before do
2534
2585
  @nendo = Nendo::Core.new()
2586
+ @nendo.setDisplayErrors( false )
2535
2587
  @nendo.loadInitFile
2536
2588
  end
2537
2589
  it "should" do
@@ -2555,6 +2607,7 @@ end
2555
2607
  describe Nendo, "when use export-to-ruby macro " do
2556
2608
  before do
2557
2609
  @nendo = Nendo::Core.new()
2610
+ @nendo.setDisplayErrors( false )
2558
2611
  @nendo.loadInitFile
2559
2612
  end
2560
2613
  it "should" do