]> gitweb.factorcode.org Git - factor.git/blob - basis/call/call-tests.factor
bc6f9a5d4c32519c1fd9f268f4089532d9f6731f
[factor.git] / basis / call / call-tests.factor
1 ! Copyright (C) 2009 Daniel Ehrenberg.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: math tools.test call call.private kernel accessors ;
4 IN: call.tests
5
6 [ 3 ] [ 1 2 [ + ] call( x y -- z ) ] unit-test
7 [ 1 2 [ + ] call( -- z ) ] must-fail
8 [ 1 2 [ + ] call( x y -- z a ) ] must-fail
9 [ 1 2 3 { 1 2 3 4 } ] [ 1 2 3 4 [ datastack nip ] call( x -- y ) ] unit-test
10 [ [ + ] call( x y -- z ) ] must-infer
11
12 [ 3 ] [ 1 2 \ + execute( x y -- z ) ] unit-test
13 [ 1 2 \ + execute( -- z ) ] must-fail
14 [ 1 2 \ + execute( x y -- z a ) ] must-fail
15 [ \ + execute( x y -- z ) ] must-infer
16
17 : compile-execute(-test-1 ( a b -- c ) \ + execute( a b -- c ) ;
18
19 [ t ] [ \ compile-execute(-test-1 optimized>> ] unit-test
20 [ 4 ] [ 1 3 compile-execute(-test-1 ] unit-test
21
22 : compile-execute(-test-2 ( a b w -- c ) execute( a b -- c ) ;
23
24 [ t ] [ \ compile-execute(-test-2 optimized>> ] unit-test
25 [ 4 ] [ 1 3 \ + compile-execute(-test-2 ] unit-test
26 [ 5 ] [ 1 4 \ + compile-execute(-test-2 ] unit-test
27 [ -3 ] [ 1 4 \ - compile-execute(-test-2 ] unit-test
28 [ 5 ] [ 1 4 \ + compile-execute(-test-2 ] unit-test
29
30 [ t ] [ \ + (( a b -- c )) execute-effect-unsafe? ] unit-test
31 [ t ] [ \ + (( a b c -- d e )) execute-effect-unsafe? ] unit-test
32 [ f ] [ \ + (( a b c -- d )) execute-effect-unsafe? ] unit-test
33 [ f ] [ \ call (( x -- )) execute-effect-unsafe? ] unit-test