Differences From Artifact [cdb82702a34f8def]:
- File
polemy/eval.d
- 2010-11-09 10:28:08 - part of checkin [dc93ad8cf6] on branch trunk - layered exec expression @lay(...) added (user: kinaba) [annotate]
To Artifact [62b3543f769fc9c9]:
- File
polemy/eval.d
- 2010-11-09 14:24:09 - part of checkin [2459e9a821] on branch trunk - refactored eof-driven REPL (user: kinaba) [annotate]
175 assert_eq( r.val, new IntValue(BigInt(21+21*21)) ); 175 assert_eq( r.val, new IntValue(BigInt(21+21*21)) );
176 assert_eq( r.ctx.get("x","@val"), new IntValue(BigInt(21+21*21)) ); 176 assert_eq( r.ctx.get("x","@val"), new IntValue(BigInt(21+21*21)) );
177 assert_nothrow( r.ctx.get("x","@val") ); 177 assert_nothrow( r.ctx.get("x","@val") );
178 assert_throw!RuntimeException( r.ctx.get("y","@val") ); 178 assert_throw!RuntimeException( r.ctx.get("y","@val") );
179 } 179 }
180 unittest 180 unittest
181 { 181 {
182 assert_nothrow( evalString(`print("Hello, world!");`) ); <
183 assert_nothrow( evalString(`print(fun(){});`) ); <
184 } <
185 unittest <
186 { <
187 assert_eq( evalString(`let x=1; let y=(let x=2); x`).val, new IntValue(B 182 assert_eq( evalString(`let x=1; let y=(let x=2); x`).val, new IntValue(B
188 assert_eq( evalString(`let x=1; let y=(let x=2;fun(){x}); y()`).val, new 183 assert_eq( evalString(`let x=1; let y=(let x=2;fun(){x}); y()`).val, new
189 } 184 }
190 unittest 185 unittest
191 { 186 {
192 assert_eq( evalString(`@a x=1; @b x=2; @a(x)`).val, new IntValue(BigInt( 187 assert_eq( evalString(`@a x=1; @b x=2; @a(x)`).val, new IntValue(BigInt(
193 assert_eq( evalString(`@a x=1; @b x=2; @b(x)`).val, new IntValue(BigInt( 188 assert_eq( evalString(`@a x=1; @b x=2; @b(x)`).val, new IntValue(BigInt(
194 assert_eq( evalString(`let x=1; let _ = (@a x=2;2); x`).val, new IntValu 189 assert_eq( evalString(`let x=1; let _ = (@a x=2;2); x`).val, new IntValu
195 assert_throw!Error( evalString(`let x=1; let _ = (@a x=2;2); @a(x)`) ); 190 assert_throw!Error( evalString(`let x=1; let _ = (@a x=2;2); @a(x)`) );
196 } 191 }
197 192
198 unittest 193 unittest
199 { 194 {
200 assert_nothrow( evalString(`var fac = fun(x){ | 195 assert_eq( evalString(`var fac = fun(x){
201 1; <
202 }; <
203 print(fac(3));`)); <
204 assert_nothrow( evalString(`var fac = fun(x){ <
205 if(x) 196 if(x)
206 { x*fac(x-1); } 197 { x*fac(x-1); }
207 else 198 else
208 { 1; }; 199 { 1; };
209 }; 200 };
210 print(fac(10));`)); | 201 fac(10);`).val, new IntValue(BigInt(10*9*8*5040)));
211 assert_nothrow( evalString(`var fib = fun(x){ | 202 assert_eq( evalString(`var fib = fun(x){
212 if(x<2) 203 if(x<2)
213 { 1; } 204 { 1; }
214 else 205 else
215 { fib(x-1) + fib(x-2); }; 206 { fib(x-1) + fib(x-2); };
216 }; 207 };
217 print(fib(10));`)); | 208 fib(10);`).val, new IntValue(BigInt(89)));
218 } 209 }