147 lines
3.1 KiB
Factor
147 lines
3.1 KiB
Factor
USING: arrays debugger.threads destructors io io.directories
|
|
io.encodings.8-bit io.encodings.ascii io.encodings.binary
|
|
io.files io.files.private io.files.temp io.files.unique kernel
|
|
make math sequences system threads tools.test ;
|
|
IN: io.files.tests
|
|
|
|
\ exists? must-infer
|
|
\ (exists?) must-infer
|
|
|
|
[ ] [ "append-test" temp-file dup exists? [ delete-file ] [ drop ] if ] unit-test
|
|
|
|
[ ] [ "append-test" temp-file ascii <file-appender> dispose ] unit-test
|
|
|
|
[
|
|
"This is a line.\rThis is another line.\r"
|
|
] [
|
|
"vocab:io/test/mac-os-eol.txt" latin1
|
|
[ 500 read ] with-file-reader
|
|
] unit-test
|
|
|
|
[
|
|
255
|
|
] [
|
|
"vocab:io/test/binary.txt" latin1
|
|
[ read1 ] with-file-reader >fixnum
|
|
] unit-test
|
|
|
|
[ ] [
|
|
"It seems Jobs has lost his grasp on reality again.\n"
|
|
"separator-test.txt" temp-file latin1 set-file-contents
|
|
] unit-test
|
|
|
|
[
|
|
{
|
|
{ "It seems " CHAR: J }
|
|
{ "obs has lost h" CHAR: i }
|
|
{ "s grasp on reality again.\n" f }
|
|
}
|
|
] [
|
|
[
|
|
"separator-test.txt" temp-file
|
|
latin1 [
|
|
"J" read-until 2array ,
|
|
"i" read-until 2array ,
|
|
"X" read-until 2array ,
|
|
] with-file-reader
|
|
] { } make
|
|
] unit-test
|
|
|
|
[ ] [
|
|
image binary [
|
|
10 [ 65536 read drop ] times
|
|
] with-file-reader
|
|
] unit-test
|
|
|
|
! Test EOF behavior
|
|
[ 10 ] [
|
|
image binary [
|
|
0 read drop
|
|
10 read length
|
|
] with-file-reader
|
|
] unit-test
|
|
|
|
USE: debugger.threads
|
|
|
|
[ ] [ "test-quux.txt" temp-file ascii [ [ yield "Hi" write ] "Test" spawn drop ] with-file-writer ] unit-test
|
|
|
|
[ ] [ "test-quux.txt" temp-file delete-file ] unit-test
|
|
|
|
[ ] [ "test-quux.txt" temp-file ascii [ [ yield "Hi" write ] "Test" spawn drop ] with-file-writer ] unit-test
|
|
|
|
[ ] [ "test-quux.txt" "quux-test.txt" [ temp-file ] bi@ move-file ] unit-test
|
|
|
|
[ t ] [ "quux-test.txt" temp-file exists? ] unit-test
|
|
|
|
[ ] [ "quux-test.txt" temp-file delete-file ] unit-test
|
|
|
|
! File seeking tests
|
|
[ B{ 3 2 3 4 5 } ]
|
|
[
|
|
"seek-test1" unique-file binary
|
|
[
|
|
[
|
|
B{ 1 2 3 4 5 } write 0 seek-absolute seek-output
|
|
B{ 3 } write
|
|
] with-file-writer
|
|
] [
|
|
file-contents
|
|
] 2bi
|
|
] unit-test
|
|
|
|
[ B{ 1 2 3 4 3 } ]
|
|
[
|
|
"seek-test2" unique-file binary
|
|
[
|
|
[
|
|
B{ 1 2 3 4 5 } write -1 seek-relative seek-output
|
|
B{ 3 } write
|
|
] with-file-writer
|
|
] [
|
|
file-contents
|
|
] 2bi
|
|
] unit-test
|
|
|
|
[ B{ 1 2 3 4 5 0 3 } ]
|
|
[
|
|
"seek-test3" unique-file binary
|
|
[
|
|
[
|
|
B{ 1 2 3 4 5 } write 1 seek-relative seek-output
|
|
B{ 3 } write
|
|
] with-file-writer
|
|
] [
|
|
file-contents
|
|
] 2bi
|
|
] unit-test
|
|
|
|
[ B{ 3 } ]
|
|
[
|
|
B{ 1 2 3 4 5 } "seek-test4" unique-file binary [
|
|
set-file-contents
|
|
] [
|
|
[
|
|
-3 seek-end seek-input 1 read
|
|
] with-file-reader
|
|
] 2bi
|
|
] unit-test
|
|
|
|
[ B{ 2 } ]
|
|
[
|
|
B{ 1 2 3 4 5 } "seek-test5" unique-file binary [
|
|
set-file-contents
|
|
] [
|
|
[
|
|
3 seek-absolute seek-input
|
|
-2 seek-relative seek-input
|
|
1 read
|
|
] with-file-reader
|
|
] 2bi
|
|
] unit-test
|
|
|
|
[
|
|
"seek-test6" unique-file binary [
|
|
-10 seek-absolute seek-input
|
|
] with-file-reader
|
|
] must-fail
|