Skip to content

Commit b6ac140

Browse files
committed
ci: function based tests
1 parent 7fc8d54 commit b6ac140

File tree

3 files changed

+87
-43
lines changed

3 files changed

+87
-43
lines changed

+hdf5nc/test_hdf5.m

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
end
44

55
function setupOnce(tc)
6-
import hdf5nc.*
6+
import hdf5nc.h5save
77

88
A0 = 42.;
99
A1 = [42.; 43.];
@@ -47,13 +47,13 @@ function test_get_variables(tc)
4747
function test_exists(tc)
4848
e0 = hdf5nc.h5exists(tc.TestData.basic, '/A3');
4949
assert(isscalar(e0))
50-
assert(e0, 'A3 exists')
50+
assertTrue(tc, e0, 'A3 exists')
5151

52-
assert(~hdf5nc.h5exists(tc.TestData.basic, '/oops'), 'oops not exist')
52+
assertFalse(tc, hdf5nc.h5exists(tc.TestData.basic, '/oops'), 'oops not exist')
5353

5454
e1 = hdf5nc.h5exists(tc.TestData.basic, ["A3", "oops"]);
5555
assert(isrow(e1))
56-
assert(all(e1 == [true, false]), 'h5exists array')
56+
assertEqual(tc, e1, [true, false], 'h5exists array')
5757
end
5858

5959

@@ -84,15 +84,16 @@ function test_size(tc)
8484

8585

8686
function test_read(tc)
87-
s = h5read(tc.TestData.basic, '/A0');
87+
basic = tc.TestData.basic;
88+
s = h5read(basic, '/A0');
8889
assert(isscalar(s))
8990
assertEqual(tc, s, 42, 'A0 read')
9091

91-
s = h5read(tc.TestData.basic, '/A1');
92+
s = h5read(basic, '/A1');
9293
assert(isvector(s))
9394
assertEqual(tc, s, tc.TestData.A1, 'A1 read')
9495

95-
s = h5read(tc.TestData.basic, '/A2');
96+
s = h5read(basic, '/A2');
9697
assert(ismatrix(s))
9798
assertEqual(tc, s, tc.TestData.A2, 'A2 read')
9899

+hdf5nc/test_netcdf.m

Lines changed: 79 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
% test our custom high-level NetCDF4 interface
2-
import hdf5nc.*
1+
function tests = test_netcdf
2+
tests = functiontests(localfunctions);
3+
end
4+
5+
6+
function setupOnce(tc)
7+
import hdf5nc.ncsave
38

49
A0 = 42.;
510
A1 = [42.; 43.];
@@ -8,65 +13,109 @@
813
A3(:,:,2) = 2*A3;
914
A4(:,:,:,5) = A3;
1015

16+
tc.TestData.A0 = A0;
17+
tc.TestData.A1 = A1;
18+
tc.TestData.A2 = A2;
19+
tc.TestData.A3 = A3;
20+
tc.TestData.A4 = A4;
21+
1122
basic = tempname + ".nc";
23+
tc.TestData.basic = basic;
1224

1325
% create test data first, so that parallel tests works
1426
ncsave(basic, 'A0', A0)
1527
ncsave(basic, 'A1', A1)
1628
ncsave(basic, 'A2', A2, "dims", {'x2', size(A2,1), 'y2', size(A2,2)})
1729
ncsave(basic, 'A3', A3, "dims", {'x3', size(A3,1), 'y3', size(A3,2), 'z3', size(A3,3)})
1830
ncsave(basic, 'A4', A4, "dims", {'x4', size(A4,1), 'y4', size(A4,2), 'z4', size(A4,3), 'w4', size(A4,4)})
19-
%% test_get_variables
20-
vars = ncvariables(basic);
21-
assert(isequal(sort(vars), ["A0", "A1", "A2", "A3", "A4"]), 'missing variables')
22-
%% test_exists
23-
e0 = ncexists(basic, 'A3');
31+
end
32+
33+
34+
function test_get_variables(tc)
35+
vars = hdf5nc.ncvariables(tc.TestData.basic);
36+
assertEqual(tc, sort(vars), ["A0", "A1", "A2", "A3", "A4"], 'missing variables')
37+
end
38+
39+
40+
function test_exists(tc)
41+
e0 = hdf5nc.ncexists(tc.TestData.basic, 'A3');
2442
assert(isscalar(e0))
25-
assert(e0, 'A3 exists')
43+
assertTrue(tc, e0, 'A3 exists')
2644

27-
assert(~ncexists(basic, '/oops'), 'oops not exist')
45+
assertFalse(tc, hdf5nc.ncexists(tc.TestData.basic, '/oops'), 'oops not exist')
2846

29-
e1 = ncexists(basic, ["A3", "oops"]);
47+
e1 = hdf5nc.ncexists(tc.TestData.basic, ["A3", "oops"]);
3048
assert(isrow(e1))
31-
assert(all(e1 == [true, false]), 'ncexists array')
32-
%% test_size
49+
assertEqual(tc, e1, [true, false], 'ncexists array')
50+
end
51+
52+
function test_size(tc)
53+
import hdf5nc.ncsize
54+
basic = tc.TestData.basic;
55+
3356
s = ncsize(basic, 'A0');
34-
assert(isscalar(s) && s==1, 'A0 shape')
57+
assert(isscalar(s))
58+
assertEqual(tc, s, 1, 'A0 shape')
3559

3660
s = ncsize(basic, 'A1');
37-
assert(isscalar(s) && s==2, 'A1 shape')
61+
assert(isscalar(s))
62+
assertEqual(tc, s, 2, 'A1 shape')
3863

3964
s = ncsize(basic, 'A2');
40-
assert(isvector(s) && isequal(s, [4,4]), 'A2 shape')
65+
assert(isvector(s))
66+
assertEqual(tc, s, [4,4], 'A2 shape')
4167

4268
s = ncsize(basic, 'A3');
43-
assert(isvector(s) && isequal(s, [4,3,2]), 'A3 shape')
69+
assert(isvector(s))
70+
assertEqual(tc, s, [4,3,2], 'A3 shape')
4471

4572
s = ncsize(basic, 'A4');
46-
assert(isvector(s) && isequal(s, [4,3,2,5]), 'A4 shape')
47-
%% test_read
73+
assert(isvector(s))
74+
assertEqual(tc, s, [4,3,2,5], 'A4 shape')
75+
end
76+
77+
78+
function test_read(tc)
79+
basic = tc.TestData.basic;
80+
4881
s = ncread(basic, '/A0');
49-
assert(isscalar(s) && s==42, 'A0 read')
82+
assert(isscalar(s))
83+
assertEqual(tc, s, 42, 'A0 read')
5084

5185
s = ncread(basic, '/A1');
52-
assert(isvector(s) && isequal(s, A1), 'A1 read')
86+
assert(isvector(s))
87+
assertEqual(tc, s, tc.TestData.A1, 'A1 read')
5388

5489
s = ncread(basic, '/A2');
55-
assert(ismatrix(s) && isequal(s, A2), 'A2 read')
90+
assert(ismatrix(s))
91+
assertEqual(tc, s, tc.TestData.A2, 'A2 read')
5692

5793
s = ncread(basic, '/A3');
58-
assert(ndims(s)==3 && isequal(s, A3), 'A3 read')
94+
assert(ndims(s)==3)
95+
assertEqual(tc, s, tc.TestData.A3, 'A3 read')
5996

6097
s = ncread(basic, '/A4');
61-
assert(ndims(s)==4 && isequal(s, A4), 'A4 read')
62-
%% test_coerce
98+
assert(ndims(s)==4)
99+
assertEqual(tc, s, tc.TestData.A4, 'A4 read')
100+
end
101+
102+
103+
function test_coerce(tc)
104+
import hdf5nc.ncsave
105+
106+
basic = tc.TestData.basic;
107+
A0 = tc.TestData.A0;
108+
63109
ncsave(basic, 'int32', A0, "type", 'int32')
64110
ncsave(basic, 'int64', A0, "type", 'int64')
65111
ncsave(basic, 'float32', A0, "type", 'float32')
66112

67-
assert(isa(ncread(basic, 'int32'), 'int32'), 'int32')
68-
assert(isa(ncread(basic, 'int64'), 'int64'), 'int64')
69-
assert(isa(ncread(basic, 'float32'), 'single'), 'float32')
70-
%% test_rewrite
71-
ncsave(basic, 'A2', 3*magic(4))
72-
assert(isequal(ncread(basic, 'A2'), 3*magic(4)), 'rewrite 2D fail')
113+
assertClass(tc, h5read(basic, '/int32'), 'int32', 'int32')
114+
assertClass(tc, h5read(basic, '/int64'), 'int64', 'int64')
115+
assertClass(tc, h5read(basic, '/float32'), 'single', 'float32')
116+
end
117+
118+
function test_rewrite(tc)
119+
hdf5nc.ncsave(tc.TestData.basic, 'A2', 3*magic(4))
120+
assertEqual(tc, ncread(tc.TestData.basic, 'A2'), 3*magic(4), 'rewrite 2D fail')
121+
end

Readme.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,3 @@ runtests('hdf5nc')
7979
```matlab
8080
expanduser(path)
8181
```
82-
83-
## unit tests
84-
85-
```matlab
86-
runtests
87-
```

0 commit comments

Comments
 (0)