( uxncli file.rom ) |10 @Console/vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |a0 @File/vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |100 @on-reset ( -> ) #800f DEO ;dict/write file/test-write ;dict/append file/test-append ;dict/read file/test-read ;dict/stat file/test-stat ;dict/delete file/test-delete ( | overflows ) ;dict/write-of file/test-write-of ;dict/read-of file/test-read-of ;dict/stat-of file/test-stat-of ( | cleanup ) ;file/name .File/name DEO2 #01 .File/delete DEO BRK ( @|Tests ) @file/test-write ( -- pass ) ;&name .File/name DEO2 #0002 .File/length DEO2 ;&a1 .File/write DEO2 .File/success DEI2 #0002 EQU2 JMP2r @file/test-append ( -- pass ) ;&name .File/name DEO2 #0002 .File/length DEO2 #01 .File/append DEO ;&b1 .File/write DEO2 .File/success DEI2 #0002 EQU2 JMP2r @file/test-read ( -- pass ) ;&name .File/name DEO2 ( 4+2 ) #0006 .File/length DEO2 ;&read-buf .File/read DEO2 ( success ) .File/success DEI2 #0004 EQU2 ( a ) ;&a1 LDA2 ;&a2 LDA2 EQU2 AND ( b ) ;&b1 LDA2 ;&b2 LDA2 EQU2 AND JMP2r @file/test-stat ( -- pass ) ;&name .File/name DEO2 #0004 .File/length DEO2 ;&stat-buf .File/stat DEO2 ( success ) .File/success DEI2 #0004 EQU2 ( a ) ;&stat-hs LDA2 LIT2 "00 EQU2 AND ( b ) ;&stat-ls LDA2 LIT2 "04 EQU2 AND ( | try missing file ) ;&unknown-name .File/name DEO2 #0002 .File/length DEO2 ;&stat-buf .File/stat DEO2 ;&stat-buf LDA2 LIT2 "!! EQU2 AND JMP2r @file/test-delete ( -- pass ) ;&name .File/name DEO2 #01 .File/delete DEO .File/success DEI2 #0001 EQU2 ( | stat ) ;&name .File/name DEO2 #0002 .File/length DEO2 ;&null-buf .File/stat DEO2 ;&null-buf LDA2 LIT2 "!! EQU2 AND ( | try failure ) #01 .File/delete DEO .File/success DEI2 #0000 EQU2 AND JMP2r @file/test-write-of ( -- pass ) ;&name .File/name DEO2 #0004 .File/length DEO2 #fffe .File/write DEO2 .File/success DEI2 #0002 EQU2 JMP2r @file/test-read-of ( -- pass ) ;&name .File/name DEO2 #0002 .File/length DEO2 #ffff .File/read DEO2 .File/success DEI2 #0001 EQU2 JMP2r @file/test-stat-of ( -- pass ) ;&name .File/name DEO2 #0004 .File/length DEO2 #fffe .File/stat DEO2 .File/success DEI2 #0002 EQU2 JMP2r ( @|Helpers ) @ ( name* f -- ) ?{ str/ #010f DEO ;dict/fail !str/ } str/ ;dict/pass ( >> ) @str/ ( str* -- ) LDAk DUP ?{ POP POP2 JMP2r } .Console/write DEO INC2 !/ ( @|Assets ) @dict/write "File/write: 20 $1 &append "File/append: 20 $1 &read "File/read: 20 $1 &stat "File/stat: 20 $1 &delete "File/delete: 20 $1 &write-of "File/write(overflow): 20 $1 &read-of "File/read(overflow): 20 $1 &stat-of "File/stat(overflow): 20 $1 &fail "fail 0a $1 &pass "pass 0a $1 @file/a1 1234 &b1 5678 ( read buf ) &read-buf &a2 $2 &b2 $2 ( stat buf ) &stat-buf &stat-hs $2 &stat-ls $2 ( null buf ) &null-buf $4 &name "test.txt $1 &unknown-name "abcdefghj $1