]> gitweb.factorcode.org Git - factor.git/blob - extra/infix/infix-tests.factor
factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!
[factor.git] / extra / infix / infix-tests.factor
1 ! Copyright (C) 2009 Philipp Brüschweiler
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: infix infix.private kernel locals math math.functions
4 tools.test ;
5 IN: infix.tests
6
7 { 0 } [ [infix 0 infix] ] unit-test
8 { 0.5 } [ [infix 3.0/6 infix] ] unit-test
9 { 1+2/3 } [ [infix 5/3 infix] ] unit-test
10 { 3 } [ [infix 2*7%3+1 infix] ] unit-test
11 { 1419857 } [ [infix 17**5 infix] ] unit-test
12 { 1 } [ [infix 2-
13      1
14      -5*
15      0 infix] ] unit-test
16
17 { 0.0 } [ [infix sin(0) infix] ] unit-test
18 { 10 } [ [infix lcm(2,5) infix] ] unit-test
19 { 1.0 } [ [infix +cos(-0*+3) infix] ] unit-test
20
21 { f } [ 2 \ gcd check-word ] unit-test ! multiple return values
22 { f } [ 1 \ drop check-word ] unit-test ! no return value
23 { f } [ 1 \ lcm check-word ] unit-test ! takes 2 args
24
25 : qux ( -- x ) 2 ;
26 { t } [ 0 \ qux check-word ] unit-test
27 { 8 } [ [infix qux()*3+2 infix] ] unit-test
28 : foobar ( x -- y ) 1 + ;
29 { t } [ 1 \ foobar check-word ] unit-test
30 { 4 } [ [infix foobar(3*5%12) infix] ] unit-test
31 : stupid_function ( x x x x x -- y ) + + + + ;
32 { t } [ 5 \ stupid_function check-word ] unit-test
33 { 10 } [ [infix stupid_function (0, 1, 2, 3, 4) infix] ] unit-test
34
35 [ -1 ] { [let 1 :> a [infix -a infix] } ] unit-test
36
37 [ CHAR: f ] { [let "foo" :> s [infix s[0] infix] } ] unit-test
38 [ CHAR: r ] { [let "bar" :> s [infix s[-1] infix] } ] unit-test
39 [ "foo" ] { [let "foobar" :> s [infix s[0:3] infix] } ] unit-test
40 [ "foo" ] { [let "foobar" :> s [infix s[:3] infix] } ] unit-test
41 [ "bar" ] { [let "foobar" :> s [infix s[-3:] infix] } ] unit-test
42 [ "boof" ] { [let "foobar" :> s [infix s[-3::-1] infix] } ] unit-test
43 [ "foobar" ] { [let "foobar" :> s [infix s[:] infix] } ] unit-test
44 [ "foa" ] { [let "foobar" :> s [infix s[::2] infix] } ] unit-test
45 [ "bar" ] { [let "foobar" :> s [infix s[-3:100] infix] } ] unit-test
46 [ "foobar" ] { [let "foobar" :> s [infix s[-100:100] infix] } ] unit-test
47 [ "olh" ] { [let "hello" :> s [infix s[4::-2] infix] } ] unit-test
48 [ "rb" ] { [let "foobar" :> s [infix s[:1:-2] infix] } ] unit-test
49 [ "foa" ] { [let "foobar" :> s [infix s[:-1:2] infix] } ] unit-test
50 [ "rbo" ] { [let "foobar" :> s [infix s[::-2] infix] } ] unit-test
51 [ "rbo" ] { [let "foobar" :> s [infix s[:0:-2] infix] } ] unit-test
52 [ "rb" ] { [let "foobar" :> s [infix s[:-5:-2] infix] } ] unit-test
53
54 INFIX:: foo ( x y -- z ) x**2-abs(y);
55
56 { 194 } [ 15 31 foo ] unit-test