nendo 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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