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>