Annotation of gforth/test/other.fs, revision 1.5

1.1       anton       1: \ various tests, especially for bugs that have been fixed
                      2: 
                      3: \ Copyright (C) 1997 Free Software Foundation, Inc.
                      4: 
                      5: \ This file is part of Gforth.
                      6: 
                      7: \ Gforth is free software; you can redistribute it and/or
                      8: \ modify it under the terms of the GNU General Public License
                      9: \ as published by the Free Software Foundation; either version 2
                     10: \ of the License, or (at your option) any later version.
                     11: 
                     12: \ This program is distributed in the hope that it will be useful,
                     13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15: \ GNU General Public License for more details.
                     16: 
                     17: \ You should have received a copy of the GNU General Public License
                     18: \ along with this program; if not, write to the Free Software
                     19: \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                     20: 
                     21: \ combination of marker and locals
                     22: marker foo1
                     23: marker foo2
                     24: foo2
                     25: 
                     26: : bar { xxx yyy } ;
                     27: 
                     28: foo1
                     29: 
                     30: \ locals in an if structure
                     31: : locals-test1
                     32:     lp@ swap
                     33:     if
                     34:        { a } a
                     35:     else
                     36:     endif
                     37:     lp@ <> abort" locals in if error 1" ;
                     38: 
                     39: 0 locals-test1
                     40: 1 locals-test1
                     41: 
                     42: 
                     43: \ recurse and locals
                     44: 
                     45: : fac { n -- n! }
                     46:     n 0>
                     47:     if
                     48:        n 1- recurse n *
                     49:     else
                     50:        1
                     51:     endif ;
                     52: 
                     53: 5 fac 120 <> throw
                     54: 
1.5     ! anton      55: \ TO and locals
        !            56: 
        !            57: : locals-test2 ( -- )
        !            58:     true dup dup dup { addr1 u1 addr2 u2 -- n }
        !            59:     false TO addr1
        !            60:     addr1 false <> abort" TO does not work on locals" ;
        !            61: locals-test2
        !            62: 
        !            63: \ multiple reveals (recursive)
        !            64: 
        !            65: 0
        !            66: : xxx recursive ;
        !            67: throw \ if the TOS is not 0, throw an error
        !            68: 
1.1       anton      69: \ look for primitives
                     70: 
                     71: ' + look 0= throw ( nt )
                     72: s" +" find-name <> throw
                     73: 
                     74: \ represent
                     75: 
                     76: 1e pad 5 represent -1 <> swap 0 <> or swap 1 <> or throw
                     77: 
1.2       anton      78: \ -trailing
                     79: 
                     80: s" a     " 2 /string -trailing throw drop
1.1       anton      81: 
1.3       anton      82: \ convert (has to skip first char)
                     83: 
                     84: 0. s" 123  " drop convert drop 23. d<> throw
                     85: 
1.4       anton      86: \ search
                     87: 
                     88: name abc 2dup name xyza search throw d<> throw
                     89: name b 2dup name abc search throw d<> throw
1.5     ! anton      90: 
        !            91: \ only
        !            92: 
        !            93: : test-only ( -- )
        !            94:     get-order get-current
        !            95:     0 set-current
        !            96:     only
        !            97:     get-current >r
        !            98:     set-current set-order
        !            99:     r> abort" ONLY sets current" ;
        !           100: test-only
1.4       anton     101: 
1.1       anton     102: \ comments across several lines
                    103: 
                    104: ( fjklfjlas;d
                    105: abort" ( does not work across lines"
                    106: )
                    107: 
                    108: s" ( testing ( without delimited by newline in non-files" evaluate
                    109: 
                    110: \ last test!
                    111: \ testing '(' without ')' at end-of-file
                    112: ." expect ``warning: ')' missing''" cr
                    113: (

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>