1
1
import test = require( 'tape' )
2
2
import { evalAst , makeAPI } from './interpreter'
3
3
4
- test ( 'interpreter' , t => {
4
+ test ( 'interpreter' , async t => {
5
5
t . plan ( 27 )
6
6
7
7
t . deepEqual (
8
- evalAst ( makeAPI ( { } ) ) ( [ '+' , '1' , '2' , '3' ] ) ,
8
+ await evalAst ( makeAPI ( { } ) ) ( [ '+' , '1' , '2' , '3' ] ) ,
9
9
[ 'atom' , 6 ] ,
10
10
'Simple expression'
11
11
)
12
12
13
13
t . deepEqual (
14
- evalAst ( makeAPI ( { } ) ) ( [ '*' , '2' , '3' , [ '-' , '3' , '4' ] , '2' , [ '/' , '1' , '2' ] ] ) ,
14
+ await evalAst ( makeAPI ( { } ) ) ( [ '*' , '2' , '3' , [ '-' , '3' , '4' ] , '2' , [ '/' , '1' , '2' ] ] ) ,
15
15
[ 'atom' , - 6 ] ,
16
16
'Composed expression'
17
17
)
18
18
19
19
t . deepEqual (
20
- evalAst ( makeAPI ( { x : [ 'atom' , 5 ] , y : [ 'atom' , 3 ] } ) ) ( [ '*' , 'x' , 'y' , [ '-' , '3' , '4' ] , '2' , [ '/' , '1' , '2' ] ] ) ,
20
+ await evalAst ( makeAPI ( { x : [ 'atom' , 5 ] , y : [ 'atom' , 3 ] } ) ) ( [ '*' , 'x' , 'y' , [ '-' , '3' , '4' ] , '2' , [ '/' , '1' , '2' ] ] ) ,
21
21
[ 'atom' , - 15 ] ,
22
22
'Composed expression with env constants'
23
23
)
24
24
25
25
t . deepEqual (
26
- evalAst ( makeAPI ( { } ) ) (
26
+ await evalAst ( makeAPI ( { } ) ) (
27
27
[ 'process' ,
28
28
[ 'def' , [ 'a1' , 'x' ] , 'x' ] ,
29
29
[ [ 'cat' , '"a"' , '"1"' ] , 11 ] ,
@@ -34,7 +34,7 @@ test('interpreter', t => {
34
34
)
35
35
36
36
t . deepEqual (
37
- evalAst ( makeAPI ( { x : [ 'atom' , 5 ] , y : [ 'atom' , 3 ] } ) ) (
37
+ await evalAst ( makeAPI ( { x : [ 'atom' , 5 ] , y : [ 'atom' , 3 ] } ) ) (
38
38
[ 'process' ,
39
39
[ 'def' , 'a' , '2' ] ,
40
40
[ 'def' , 'b' , '3' ] ,
@@ -47,7 +47,7 @@ test('interpreter', t => {
47
47
)
48
48
49
49
t . deepEqual (
50
- evalAst ( makeAPI ( { } ) ) (
50
+ await evalAst ( makeAPI ( { } ) ) (
51
51
[ 'process' ,
52
52
[ 'def' , [ 'identity' , 'x' ] , 'x' ] ,
53
53
[ 'identity' , 7 ] ,
@@ -58,7 +58,7 @@ test('interpreter', t => {
58
58
)
59
59
60
60
t . deepEqual (
61
- evalAst ( makeAPI ( { } ) ) (
61
+ await evalAst ( makeAPI ( { } ) ) (
62
62
[ 'process' ,
63
63
[ 'def' ,
64
64
[ 'inc' , 'x' ] ,
@@ -72,7 +72,7 @@ test('interpreter', t => {
72
72
)
73
73
74
74
t . deepEqual (
75
- evalAst ( makeAPI ( { } ) ) (
75
+ await evalAst ( makeAPI ( { } ) ) (
76
76
[ 'process' ,
77
77
[ 'def' ,
78
78
[ 'sum' , 'x' , 'y' ] ,
@@ -86,13 +86,13 @@ test('interpreter', t => {
86
86
)
87
87
88
88
t . deepEqual (
89
- evalAst ( makeAPI ( { } ) ) (
89
+ await evalAst ( makeAPI ( { } ) ) (
90
90
[ 'process' ,
91
91
[ 'def' ,
92
92
[ 'sqrtIter' , 'x' , 'guess' ] ,
93
93
[ 'if' ,
94
94
[ '=' , [ 'Math' , '.abs' , [ '-' , 'x' , [ '*' , 'guess' , 'guess' ] ] ] , 0 ] ,
95
- ' guess',
95
+ [ 'Math' , '.floor' , ' guess'] ,
96
96
[ 'sqrtIter' , 'x' , [ '/' , [ '+' , 'guess' , [ '/' , 'x' , 'guess' ] ] , '2' ] ] ,
97
97
] ,
98
98
] ,
@@ -108,19 +108,19 @@ test('interpreter', t => {
108
108
)
109
109
110
110
t . deepEqual (
111
- evalAst ( makeAPI ( { } ) ) ( [ '+' , [ '*' , '1' , '2' , '3' ] , '2' , [ '/' , '27' , '3' , '3' ] ] ) ,
111
+ await evalAst ( makeAPI ( { } ) ) ( [ '+' , [ '*' , '1' , '2' , '3' ] , '2' , [ '/' , '27' , '3' , '3' ] ] ) ,
112
112
[ 'atom' , 11 ] ,
113
113
'Mathematical operators'
114
114
)
115
115
116
116
t . deepEqual (
117
- evalAst ( makeAPI ( { } ) ) ( [ 'or' , [ 'and' , 'true' , [ '>' , '3' , '4' ] ] , 'false' , [ '<' , '27' , '3' ] , [ 'or' , 'true' , 'false' , 'false' ] ] ) ,
117
+ await evalAst ( makeAPI ( { } ) ) ( [ 'or' , [ 'and' , 'true' , [ '>' , '3' , '4' ] ] , 'false' , [ '<' , '27' , '3' ] , [ 'or' , 'true' , 'false' , 'false' ] ] ) ,
118
118
[ 'atom' , true ] ,
119
119
'Logical operators'
120
120
)
121
121
122
122
t . deepEqual (
123
- evalAst ( makeAPI ( { } ) ) (
123
+ await evalAst ( makeAPI ( { } ) ) (
124
124
[ 'process' ,
125
125
[ 'def' , 'a' , `'log'` ] ,
126
126
[ 'def' , 'b' , `'E'` ] ,
@@ -132,18 +132,18 @@ test('interpreter', t => {
132
132
)
133
133
134
134
t . deepEqual (
135
- evalAst ( makeAPI ( { } ) ) (
135
+ await evalAst ( makeAPI ( { } ) ) (
136
136
[ 'process' ,
137
137
[ 'Math' , '.log' , [ 'Math' , '.E' ] ] ,
138
138
]
139
139
) ,
140
140
[ 'atom' , 1 ] ,
141
- 'Math operators with evaluated name'
141
+ 'Math operators with known name'
142
142
)
143
143
144
144
// Special forms
145
145
t . deepEqual (
146
- evalAst ( makeAPI ( { } ) ) (
146
+ await evalAst ( makeAPI ( { } ) ) (
147
147
[ 'process' ,
148
148
[ 'def' , 'x' , [ 'process' ,
149
149
[ 'def' , 'a' , 2 ] ,
@@ -158,7 +158,7 @@ test('interpreter', t => {
158
158
)
159
159
160
160
t . deepEqual (
161
- evalAst ( makeAPI ( { } ) ) (
161
+ await evalAst ( makeAPI ( { } ) ) (
162
162
[ 'cond' ,
163
163
[ 'false' , 2 ] ,
164
164
[ [ '>' , 1 , 2 ] , 11 ] ,
@@ -172,7 +172,7 @@ test('interpreter', t => {
172
172
173
173
174
174
t . deepEqual (
175
- evalAst ( makeAPI ( { } ) ) (
175
+ await evalAst ( makeAPI ( { } ) ) (
176
176
[ 'cond' ,
177
177
[ 'false' , 2 ] ,
178
178
[ [ '<' , 10 , 2 ] , 11 ] ,
@@ -185,7 +185,7 @@ test('interpreter', t => {
185
185
)
186
186
187
187
t . deepEqual (
188
- evalAst ( makeAPI ( { } ) ) (
188
+ await evalAst ( makeAPI ( { } ) ) (
189
189
[ 'if' ,
190
190
[ '<' , 1 , 2 ] ,
191
191
10 ,
@@ -197,7 +197,7 @@ test('interpreter', t => {
197
197
)
198
198
199
199
t . deepEqual (
200
- evalAst ( makeAPI ( { } ) ) (
200
+ await evalAst ( makeAPI ( { } ) ) (
201
201
[ 'if' ,
202
202
[ '>' , 1 , 2 ] ,
203
203
10 ,
@@ -209,24 +209,23 @@ test('interpreter', t => {
209
209
)
210
210
211
211
t . deepEqual (
212
- evalAst ( makeAPI ( { } ) ) (
212
+ await evalAst ( makeAPI ( { } ) ) (
213
213
[ [ '->' , [ 'x' , 'y' ] , [ '+' , 'x' , 'y' ] ] , 23 , 34 ] ,
214
214
) ,
215
215
[ 'atom' , 57 ] ,
216
216
'Lambda definition and application'
217
217
)
218
218
219
- debugger
220
219
t . deepEqual (
221
- evalAst ( makeAPI ( { } ) ) (
220
+ await evalAst ( makeAPI ( { } ) ) (
222
221
[ [ '->' , 'param' , [ '+' , 'param' , '10' ] ] , 23 ] ,
223
222
) ,
224
223
[ 'atom' , 33 ] ,
225
224
'Lambda definition and application (one parameter)'
226
225
)
227
226
228
227
t . deepEqual (
229
- evalAst ( makeAPI ( { } ) ) (
228
+ await evalAst ( makeAPI ( { } ) ) (
230
229
[
231
230
[ '.' ,
232
231
[ '->' , [ 'x' ] , [ '+' , 'x' , '1' ] ] ,
@@ -240,7 +239,7 @@ test('interpreter', t => {
240
239
)
241
240
242
241
t . deepEqual (
243
- evalAst ( makeAPI ( { } ) ) (
242
+ await evalAst ( makeAPI ( { } ) ) (
244
243
[
245
244
[ 'pipe' ,
246
245
[ '->' , [ 'x' ] , [ '+' , 'x' , '1' ] ] ,
@@ -254,7 +253,7 @@ test('interpreter', t => {
254
253
)
255
254
256
255
t . deepEqual (
257
- evalAst ( makeAPI ( { } ) ) (
256
+ await evalAst ( makeAPI ( { } ) ) (
258
257
[ 'kv' ,
259
258
'key1' , '"value1"' ,
260
259
'key2' , '2' ,
@@ -266,7 +265,7 @@ test('interpreter', t => {
266
265
)
267
266
268
267
t . deepEqual (
269
- evalAst ( makeAPI ( { } ) ) (
268
+ await evalAst ( makeAPI ( { } ) ) (
270
269
[ 'kv' ,
271
270
'key1' , '"value1"' ,
272
271
[ 'cat' , '"key"' , '2' ] , '2' ,
@@ -279,7 +278,7 @@ test('interpreter', t => {
279
278
)
280
279
281
280
t . deepEqual (
282
- evalAst ( makeAPI ( { } ) ) (
281
+ await evalAst ( makeAPI ( { } ) ) (
283
282
[ 'ls' ,
284
283
'1' ,
285
284
[ '+' , '2' , '3' ] ,
@@ -293,7 +292,7 @@ test('interpreter', t => {
293
292
)
294
293
295
294
t . deepEqual (
296
- evalAst ( makeAPI ( { } ) ) (
295
+ await evalAst ( makeAPI ( { } ) ) (
297
296
[ 'get' ,
298
297
[ 'kv' , 'key' , [ 'kv' , 'a' , [ 'kv' , 'b' , 12 ] ] ] ,
299
298
'"key"' , '"a"' , '"b"' ,
@@ -304,7 +303,7 @@ test('interpreter', t => {
304
303
)
305
304
306
305
t . deepEqual (
307
- evalAst ( makeAPI ( { } ) ) (
306
+ await evalAst ( makeAPI ( { } ) ) (
308
307
[ 'process' ,
309
308
[ 'def' ,
310
309
'a' ,
0 commit comments