|
| 1 | +using ParallelTestRunner: runtests, find_tests, parse_args |
1 | 2 | using ASDF |
2 | | -using Test |
3 | | -using YAML |
4 | 3 |
|
5 | | -map_tree(f, x) = f(x) |
6 | | -map_tree(f, vec::AbstractVector) = [map_tree(f, elem) for elem in vec] |
7 | | -map_tree(f, dict::AbstractDict) = Dict(key => map_tree(f, val) for (key, val) in dict) |
8 | | - |
9 | | -output(x) = nothing |
10 | | -function output(arr::ASDF.NDArray) |
11 | | - println("source: $(arr.source)") |
12 | | - data = arr[] |
13 | | - println(" type: $(typeof(data))") |
14 | | - return println(" size: $(size(data))") |
15 | | -end |
16 | | - |
17 | | -################################################################################ |
18 | | - |
19 | | -@testset "Read ASDF file" begin |
20 | | - asdf = ASDF.load_file("blue_upchan_gain.00000000.asdf") |
21 | | - println(YAML.write(asdf.metadata)) |
22 | | - |
23 | | - map_tree(output, asdf.metadata) |
24 | | - |
25 | | - buffer = asdf.metadata[0]["buffer"][] |
26 | | - @test eltype(buffer) == Float16 |
27 | | - @test size(buffer) == (256,) |
28 | | - @test buffer == fill(1, 256) |
29 | | - |
30 | | - dish_index = asdf.metadata[0]["dish_index"][] |
31 | | - @test eltype(dish_index) == Int32 |
32 | | - @test size(dish_index) == (3, 2) |
33 | | - @test dish_index == [ |
34 | | - -1 -1 |
35 | | - 42 53 |
36 | | - 43 54 |
37 | | - ] |
38 | | -end |
39 | | - |
40 | | -################################################################################ |
41 | | - |
42 | | -@testset "Read ASDF file with chunked arrays" begin |
43 | | - asdf = ASDF.load_file("chunking.asdf") |
44 | | - println(YAML.write(asdf.metadata)) |
45 | | - |
46 | | - map_tree(output, asdf.metadata) |
47 | | - |
48 | | - chunky = asdf.metadata["chunky"][] |
49 | | - @test eltype(chunky) == Float16 |
50 | | - @test size(chunky) == (4, 4) |
51 | | - @test chunky == [ |
52 | | - 11 21 31 41 |
53 | | - 12 22 32 42 |
54 | | - 13 23 33 43 |
55 | | - 14 24 34 44 |
56 | | - ] |
| 4 | +const init_code = quote |
| 5 | + using ASDF |
| 6 | + using Test |
| 7 | + using YAML |
| 8 | + |
| 9 | + map_tree(f, x) = f(x) |
| 10 | + map_tree(f, vec::AbstractVector) = [map_tree(f, elem) for elem in vec] |
| 11 | + map_tree(f, dict::AbstractDict) = Dict(key => map_tree(f, val) for (key, val) in dict) |
| 12 | + |
| 13 | + output(x) = nothing |
| 14 | + function output(arr::ASDF.NDArray) |
| 15 | + println("source: $(arr.source)") |
| 16 | + data = arr[] |
| 17 | + println(" type: $(typeof(data))") |
| 18 | + return println(" size: $(size(data))") |
| 19 | + end |
57 | 20 | end |
58 | 21 |
|
59 | | -################################################################################ |
60 | | - |
61 | | -@testset "Write ASDF file" begin |
62 | | - dirname = mktempdir(; cleanup=true) |
63 | | - filename = joinpath(dirname, "output.asdf") |
64 | | - |
65 | | - array = Float64[1/(i+j+k-2) for i in 1:50, j in 1:51, k in 1:52] |
66 | | - doc = Dict{Any,Any}( |
67 | | - "data1" => ASDF.NDArrayWrapper([1 2; 3 4]; inline=false), |
68 | | - "data2" => ASDF.NDArrayWrapper([1 2; 3 4]; inline=true), |
69 | | - "group" => Dict{Any,Any}( |
70 | | - "element1" => ASDF.NDArrayWrapper(array; compression=ASDF.C_None), |
71 | | - "element2" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Blosc), |
72 | | - "element3" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Bzip2), |
73 | | - "element4" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Lz4), |
74 | | - "element5" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Xz), |
75 | | - "element6" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Zlib), |
76 | | - "element7" => ASDF.NDArrayWrapper(array; compression=ASDF.C_Zstd), |
77 | | - ), |
78 | | - ) |
79 | | - ASDF.write_file(filename, doc) |
| 22 | +args = parse_args(Base.ARGS) |
| 23 | +testsuite = find_tests(@__DIR__) |
80 | 24 |
|
81 | | - doc′ = ASDF.load_file(filename) |
82 | | - map_tree(output, doc′.metadata) |
83 | | - |
84 | | - data1 = doc["data1"][] |
85 | | - data1′ = doc′.metadata["data1"][] |
86 | | - @test eltype(data1′) == eltype(data1) |
87 | | - @test size(data1′) == size(data1) |
88 | | - @test data1′ == data1 |
89 | | - |
90 | | - data2 = doc["data2"][] |
91 | | - data2′ = doc′.metadata["data2"][] |
92 | | - @test eltype(data2′) == eltype(data2) |
93 | | - @test size(data2′) == size(data2) |
94 | | - @test data2′ == data2 |
95 | | - |
96 | | - for n in 1:7 |
97 | | - element = doc["group"]["element$n"][] |
98 | | - element′ = doc′.metadata["group"]["element$n"][] |
99 | | - @test eltype(element′) == eltype(element) |
100 | | - @test size(element′) == size(element) |
101 | | - @test element′ == element |
102 | | - end |
103 | | -end |
| 25 | +runtests(ASDF, args; testsuite, init_code) |
0 commit comments