Skip to content

Commit c9df27f

Browse files
committed
improved tests
1 parent 0e98cd5 commit c9df27f

File tree

3 files changed

+64
-11
lines changed

3 files changed

+64
-11
lines changed

test/loadsave.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ try
1515
empty!(FileIO.sym2loader)
1616
empty!(FileIO.sym2saver)
1717
file_dir = joinpath(dirname(@__FILE__), "files")
18-
facts("Load") do
18+
context("Load") do
1919
@fact load(joinpath(file_dir, "file1.pbm")) --> "PBMText"
2020
@fact load(joinpath(file_dir, "file2.pbm")) --> "PBMBinary"
2121
# Regular HDF5 file with magic bytes starting at position 0
@@ -78,7 +78,7 @@ end
7878
add_loader(format"DUMMY", :Dummy)
7979
add_saver(format"DUMMY", :Dummy)
8080

81-
facts("Save") do
81+
context("Save") do
8282
a = [0x01,0x02,0x03]
8383
fn = string(tempname(), ".dmy")
8484
save(fn, a)

test/query.jl

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,34 @@ ext2sym = copy(FileIO.ext2sym)
1111
magic_list = copy(FileIO.magic_list)
1212
sym2info = copy(FileIO.sym2info)
1313

14+
15+
module LoadTest1
16+
import FileIO: @format_str, File
17+
load(file::File{format"MultiLib"}) = error()
18+
19+
save(file::File{format"MultiLib"}) = open(file, "w") do s
20+
write(s, magic(format"MultiLib")) # Write the magic bytes
21+
write(s, 0)
22+
end
23+
24+
end
25+
module LoadTest2
26+
import FileIO: @format_str, File, magic
27+
load(file::File{format"MultiLib"}) = 42
28+
29+
save(file::File{format"MultiLib"}) = open(file, "w") do s
30+
write(s, magic(format"MultiLib")) # Write the magic bytes
31+
write(s, 42)
32+
end
33+
34+
end
35+
1436
try
1537
empty!(FileIO.ext2sym)
1638
empty!(FileIO.magic_list)
1739
empty!(FileIO.sym2info)
1840

19-
facts("DataFormat") do
41+
context("DataFormat") do
2042
@fact DataFormat{:CSV} --> format"CSV"
2143
@fact unknown(format"CSV") --> false
2244
@fact unknown(format"UNKNOWN") --> true
@@ -44,7 +66,7 @@ try
4466

4567
end
4668

47-
facts("streams") do
69+
context("streams") do
4870
io = IOBuffer()
4971
s = Stream(format"JUNK", io)
5072
@fact typeof(s) --> Stream{DataFormat{:JUNK}, IOBuffer}
@@ -56,7 +78,7 @@ try
5678
@fact get(filename(s)) --> "junk2.jnk"
5779
end
5880

59-
facts("query") do
81+
context("query") do
6082
# Streams
6183
io = IOBuffer()
6284
write(io, "Weird format")
@@ -182,6 +204,36 @@ try
182204

183205
del_format(format"JUNK") # This triggers del_extension for multiple extensions
184206

207+
context("multiple libs") do
208+
lensave0 = length(FileIO.sym2saver)
209+
lenload0 = length(FileIO.sym2loader)
210+
OSKey = @osx ? FileIO.OSX : @windows? FileIO.Windows : @linux ? FileIO.Linux : error("os not supported")
211+
add_format(
212+
format"MultiLib",
213+
UInt8[0x42,0x4d],
214+
".mlb",
215+
[:LoadTest1, FileIO.LOAD, OSKey],
216+
[:LoadTest2]
217+
)
218+
@fact lensave0 + 1 --> length(FileIO.sym2saver)
219+
@fact lenload0 + 1 --> length(FileIO.sym2loader)
220+
@fact length(FileIO.sym2loader[:MultiLib]) --> 2
221+
@fact length(FileIO.sym2saver[:MultiLib]) --> 1
222+
223+
mktempdir() do tmpdir
224+
fn = joinpath(tmpdir, "test.mlb")
225+
save(fn)
226+
x = load(fn)
227+
open(query(fn), "r") do io
228+
skipmagic(io)
229+
a = read(io, Int)
230+
@fact a --> 42 #make sure that LoadTest2 is used for saving, even though its at position 2
231+
end
232+
@fact isdefined(:LoadTest1) --> true # first module should load first but fail
233+
@fact x --> 42
234+
end
235+
236+
end
185237
finally
186238
# Restore the registry
187239
empty!(FileIO.ext2sym)
@@ -194,7 +246,7 @@ finally
194246
end
195247

196248
file_dir = joinpath(dirname(@__FILE__), "files")
197-
facts("STL detection") do
249+
context("STL detection") do
198250
q = query(joinpath(file_dir, "ascii.stl"))
199251
@fact typeof(q) --> File{format"STL_ASCII"}
200252
q = query(joinpath(file_dir, "binary_stl_from_solidworks.STL"))
@@ -205,14 +257,14 @@ facts("STL detection") do
205257
@fact position(io) --> 0 # no skipping for functions
206258
end
207259
end
208-
facts("PLY detection") do
260+
context("PLY detection") do
209261
q = query(joinpath(file_dir, "ascii.ply"))
210262
@fact typeof(q) --> File{format"PLY_ASCII"}
211263
q = query(joinpath(file_dir, "binary.ply"))
212264
@fact typeof(q) --> File{format"PLY_BINARY"}
213265

214266
end
215-
facts("Multiple Magic bytes") do
267+
context("Multiple Magic bytes") do
216268
q = query(joinpath(file_dir, "magic1.tiff"))
217269
@fact typeof(q) --> File{format"TIFF"}
218270
q = query(joinpath(file_dir, "magic2.tiff"))

test/runtests.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
using FileIO
22
using FactCheck
33

4-
include("query.jl")
5-
include("loadsave.jl")
6-
4+
facts("FileIO") do
5+
include("query.jl")
6+
include("loadsave.jl")
7+
end
78
# make Travis fail when tests fail:
89
FactCheck.exitstatus()

0 commit comments

Comments
 (0)