Diff for /gforth/test/other.fs between versions 1.4 and 1.24

version 1.4, 1997/07/31 16:17:28 version 1.24, 2007/12/31 19:02:25
Line 1 Line 1
 \ various tests, especially for bugs that have been fixed  \ various tests, especially for bugs that have been fixed
   
 \ Copyright (C) 1997 Free Software Foundation, Inc.  \ Copyright (C) 1997,1998,2000,2003,2007 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
 \ Gforth is free software; you can redistribute it and/or  \ Gforth is free software; you can redistribute it and/or
 \ modify it under the terms of the GNU General Public License  \ modify it under the terms of the GNU General Public License
 \ as published by the Free Software Foundation; either version 2  \ as published by the Free Software Foundation, either version 3
 \ of the License, or (at your option) any later version.  \ of the License, or (at your option) any later version.
   
 \ This program is distributed in the hope that it will be useful,  \ This program is distributed in the hope that it will be useful,
Line 15 Line 15
 \ GNU General Public License for more details.  \ GNU General Public License for more details.
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program. If not, see http://www.gnu.org/licenses/.
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
   
 \ combination of marker and locals  \ combination of marker and locals
 marker foo1  marker foo1
Line 52  foo1 Line 51  foo1
   
 5 fac 120 <> throw  5 fac 120 <> throw
   
   \ TO and locals
   
   : locals-test2 ( -- )
       true dup dup dup { addr1 u1 addr2 u2 -- n }
       false TO addr1
       addr1 false <> abort" TO does not work on locals" ;
   locals-test2
   
   : locals-test3 ( -- )
       \ this should compile, but gives "invalid name argument" on gforth-0.3.0
       0 { a b } 0 to a ;
   
   \ multiple reveals (recursive)
   
   0
   : xxx recursive ;
   throw \ if the TOS is not 0, throw an error
   
 \ look for primitives  \ look for primitives
   
 ' + look 0= throw ( nt )  ' + xt>threaded threaded>name dup 0= throw ( nt )
 s" +" find-name <> throw  s" +" find-name <> throw
   
 \ represent  \ represent
Line 74  s" a     " 2 /string -trailing throw dro Line 91  s" a     " 2 /string -trailing throw dro
 name abc 2dup name xyza search throw d<> throw  name abc 2dup name xyza search throw d<> throw
 name b 2dup name abc search throw d<> throw  name b 2dup name abc search throw d<> throw
   
   \ only
   
   : test-only ( -- )
       get-order get-current
       0 set-current
       only
       get-current >r
       set-current set-order
       r> abort" ONLY sets current" ;
   test-only
   
   \ create-interpret/compile
   
   : my-constant ( n "name" -- )
       create-interpret/compile
       ,
   interpretation>
       @
   <interpretation
   compilation>
       @ postpone literal
   <compilation ;
   
   5 my-constant five
   five 5 <> throw
   : five' five ;
   five' 5 <> throw
   
   \ structs and alignment
   
   struct
     char% field field1
     float% field field2
   end-struct my-struct%
   
   0 field2 float% %alignment <> throw
   
   \ filenames with "//"
   
   s" //jkfklfggfld/fjsjfk/hjfdjs" open-fpath-file 2drop
   
   \ allotting negative space
   
   1 allot
   -1 allot
   
   \ unaligned input for head?
   
   here 1+ head? throw
   
   \ [compile] exit = exit
   
   : foo [compile] exit abort" '[compile] exit' broken" ;
   foo
   
   \ restore-input
   
   : test-restore-input[ ( -- )
       refill 0= abort" refill failed"
       bl word drop
       save-input
       refill 0= abort" refill failed"
       -1 ;
   
   : ]test-restore-input ( -- )
       drop restore-input abort" restore-input failed" 0 ;
   
   \ First input is skipped until the "]test-restore-input", then it is
   \ reset to just before "0 [if]"
   test-restore-input[ abort \ these aborts are skipped
   abort 0 [if]
       s" oops" 2drop ]test-restore-input abort
   [then]
   ( 0 ) throw
   
   \ the same test with CRLF newlines
   test-restore-input[ abort \ these aborts are skipped
   abort 0 [if]
       s" oops" 2drop ]test-restore-input abort
   [then]
   ( 0 ) throw
   
 \ comments across several lines  \ comments across several lines
   
 ( fjklfjlas;d  ( fjklfjlas;d
 abort" ( does not work across lines"  abort" ( does not work across lines"
 )  )
   
 s" ( testing ( without delimited by newline in non-files" evaluate  s" ( testing ( without being delimited by newline in non-files" evaluate
   
 \ last test!  \ last test!
 \ testing '(' without ')' at end-of-file  \ testing '(' without ')' at end-of-file

Removed from v.1.4  
changed lines
  Added in v.1.24


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