1
1
classdef TestHDF5 < matlab .unittest .TestCase
2
2
3
3
properties
4
- TestData
4
+ file
5
+ A0
6
+ A1
7
+ A2
8
+ A3
9
+ A4
10
+ utf
11
+ utf2
5
12
end
6
13
7
14
properties (TestParameter )
@@ -16,44 +23,35 @@ function setup_file(tc)
16
23
17
24
td = tc .createTemporaryFolder();
18
25
19
- A0 = 42 .;
20
- A1 = [42 .; 43 .];
21
- A2 = magic(4 );
22
- A3 = A2(: ,1 : 3 ,1 );
23
- A3(: ,: ,2 ) = 2 * A3 ;
24
- A4(: ,: ,: ,5 ) = A3 ;
25
- utf = ' Hello There 😄' ;
26
- utf2 = [utf ; " ☎" ];
27
-
28
- tc.TestData.A0 = A0 ;
29
- tc.TestData.A1 = A1 ;
30
- tc.TestData.A2 = A2 ;
31
- tc.TestData.A3 = A3 ;
32
- tc.TestData.A4 = A4 ;
33
- tc.TestData.utf = utf ;
34
- tc.TestData.utf2 = utf2 ;
35
-
36
- tc.TestData.basic = td + " /basic.h5" ;
37
- bf = tc .TestData .basic ;
26
+ tc.A0 = 42 .;
27
+ tc.A1 = [42 .; 43 .];
28
+ tc.A2 = magic(4 );
29
+ tc.A3 = tc .A2(: ,1 : 3 ,1 );
30
+ tc .A3(: ,: ,2 ) = 2 * tc .A3 ;
31
+ tc .A4(: ,: ,: ,5 ) = tc .A3 ;
32
+ tc.utf = ' Hello There 😄' ;
33
+ tc.utf2 = [tc .utf ; " ☎" ];
34
+
35
+ tc.file = td + " /basic.h5" ;
38
36
39
37
% create test data first, so that parallel tests works
40
- stdlib .h5save(bf , ' /A0' , A0 )
38
+ stdlib .h5save(tc . file , ' /A0' , tc . A0 )
41
39
42
- tc .assertTrue(stdlib .is_hdf5(bf ))
40
+ tc .assertTrue(stdlib .is_hdf5(tc . file ))
43
41
44
- stdlib .h5save(bf , ' /A1' , A1 )
45
- stdlib .h5save(bf , ' /A2' , A2 )
46
- stdlib .h5save(bf , ' /A3' , A3 , " size" , size(A3 ))
47
- stdlib .h5save(bf , ' /A4' , A4 )
42
+ stdlib .h5save(tc . file , ' /A1' , tc . A1 )
43
+ stdlib .h5save(tc . file , ' /A2' , tc . A2 )
44
+ stdlib .h5save(tc . file , ' /A3' , tc . A3 , size= size(tc . A3 ))
45
+ stdlib .h5save(tc . file , ' /A4' , tc . A4 )
48
46
49
- stdlib .h5save(bf , " /utf" , utf )
50
- stdlib .h5save(bf , " /utf2" , utf2 )
47
+ stdlib .h5save(tc . file , " /utf" , tc . utf )
48
+ stdlib .h5save(tc . file , " /utf2" , tc . utf2 )
51
49
52
- stdlib .h5save(bf , ' /t/x' , 12 )
53
- stdlib .h5save(bf , ' /t/y' , 13 )
54
- stdlib .h5save(bf , ' /j/a/b' , 6 )
50
+ stdlib .h5save(tc . file , ' /t/x' , 12 )
51
+ stdlib .h5save(tc . file , ' /t/y' , 13 )
52
+ stdlib .h5save(tc . file , ' /j/a/b' , 6 )
55
53
56
- tc .assertThat(bf , matlab .unittest .constraints .IsFile )
54
+ tc .assertThat(tc . file , matlab .unittest .constraints .IsFile )
57
55
end
58
56
end
59
57
@@ -70,30 +68,27 @@ function test_auto_chunk_size(tc)
70
68
71
69
function test_get_variables(tc )
72
70
73
- basic = tc .TestData .basic ;
74
-
75
- v = stdlib .h5variables(basic );
71
+ v = stdlib .h5variables(tc .file );
76
72
k = [" A0" , " A1" , " A2" , " A3" , " A4" , " utf" , " utf2" ];
77
73
78
74
tc .verifyEqual(sort(v ), k )
79
75
80
76
% 1-level group
81
- v = stdlib .h5variables(basic , " /t" );
77
+ v = stdlib .h5variables(tc . file , " /t" );
82
78
tc .verifyEqual(sort(v ), [" x" , " y" ])
83
79
84
80
% traversal
85
- tc .verifyEmpty(stdlib .h5variables(basic , " /j" ) )
81
+ tc .verifyEmpty(stdlib .h5variables(tc . file , " /j" ) )
86
82
87
- tc .verifyEqual(stdlib .h5variables(basic , " /j/a" ) , " b" )
83
+ tc .verifyEqual(stdlib .h5variables(tc . file , " /j/a" ) , " b" )
88
84
89
85
end
90
86
91
87
92
88
function test_exists(tc )
93
89
import matlab .unittest .constraints .IsScalar
94
- basic = tc .TestData .basic ;
95
90
96
- e = stdlib .h5exists(basic , " /A0" );
91
+ e = stdlib .h5exists(tc . file , " /A0" );
97
92
98
93
tc .verifyThat(e , IsScalar )
99
94
tc .verifyTrue(e );
@@ -103,31 +98,30 @@ function test_exists(tc)
103
98
104
99
function test_size(tc )
105
100
import matlab .unittest .constraints .IsScalar
106
- basic = tc .TestData .basic ;
107
101
108
- s = stdlib .h5size(basic , ' /A0' );
102
+ s = stdlib .h5size(tc . file , ' /A0' );
109
103
tc .verifyEmpty(s )
110
104
111
- s = stdlib .h5size(basic , ' /A1' );
105
+ s = stdlib .h5size(tc . file , ' /A1' );
112
106
tc .verifyThat(s , IsScalar )
113
107
tc .verifyEqual(s , 2 )
114
108
115
- s = stdlib .h5size(basic , ' /A2' );
109
+ s = stdlib .h5size(tc . file , ' /A2' );
116
110
tc .verifyTrue(isvector(s ))
117
111
tc .verifyEqual(s , [4 ,4 ])
118
112
119
- s = stdlib .h5size(basic , ' /A3' );
113
+ s = stdlib .h5size(tc . file , ' /A3' );
120
114
tc .verifyTrue(isvector(s ))
121
115
tc .verifyEqual(s , [4 ,3 ,2 ])
122
116
123
- s = stdlib .h5size(basic , ' /A4' );
117
+ s = stdlib .h5size(tc . file , ' /A4' );
124
118
tc .verifyTrue(isvector(s ))
125
119
tc .verifyEqual(s , [4 ,3 ,2 ,5 ])
126
120
127
- s = stdlib .h5size(basic , ' /utf' );
121
+ s = stdlib .h5size(tc . file , ' /utf' );
128
122
tc .verifyEmpty(s )
129
123
130
- s = stdlib .h5size(basic , ' /utf2' );
124
+ s = stdlib .h5size(tc . file , ' /utf2' );
131
125
tc .verifyEqual(s , 2 )
132
126
133
127
end
@@ -136,119 +130,110 @@ function test_size(tc)
136
130
function test_read(tc )
137
131
import matlab .unittest .constraints .IsScalar
138
132
139
- basic = tc .TestData .basic ;
140
133
141
- s = h5read(basic , ' /A0' );
134
+ s = h5read(tc . file , ' /A0' );
142
135
tc .verifyThat(s , IsScalar )
143
- tc .verifyEqual(s , tc .TestData . A0 )
136
+ tc .verifyEqual(s , tc .A0 )
144
137
145
- s = h5read(basic , ' /A1' );
138
+ s = h5read(tc . file , ' /A1' );
146
139
tc .verifyTrue(isvector(s ))
147
- tc .verifyEqual(s , tc .TestData . A1 )
140
+ tc .verifyEqual(s , tc .A1 )
148
141
149
- s = h5read(basic , ' /A2' );
142
+ s = h5read(tc . file , ' /A2' );
150
143
tc .verifyTrue(ismatrix(s ))
151
- tc .verifyEqual(s , tc .TestData . A2 )
144
+ tc .verifyEqual(s , tc .A2 )
152
145
153
- s = h5read(basic , ' /A3' );
146
+ s = h5read(tc . file , ' /A3' );
154
147
tc .verifyEqual(ndims(s ), 3 )
155
- tc .verifyEqual(s , tc .TestData . A3 )
148
+ tc .verifyEqual(s , tc .A3 )
156
149
157
- s = h5read(basic , ' /A4' );
150
+ s = h5read(tc . file , ' /A4' );
158
151
tc .verifyEqual(ndims(s ), 4 )
159
- tc .verifyEqual(s , tc .TestData . A4 )
152
+ tc .verifyEqual(s , tc .A4 )
160
153
161
- s = h5read(basic , ' /utf' );
154
+ s = h5read(tc . file , ' /utf' );
162
155
tc .verifyTrue(ischar(s ))
163
- tc .verifyEqual(s , tc .TestData . utf )
156
+ tc .verifyEqual(s , tc .utf )
164
157
165
- s = h5read(basic , ' /utf2' );
158
+ s = h5read(tc . file , ' /utf2' );
166
159
tc .verifyClass(s , ' string' )
167
- tc .verifyEqual(s , tc .TestData . utf2 )
160
+ tc .verifyEqual(s , tc .utf2 )
168
161
169
162
end
170
163
171
164
172
165
function test_shape(tc )
173
166
174
- basic = tc .TestData .basic ;
175
-
176
- stdlib .h5save(basic , " /vector1" , 34 , " size" , 1 )
177
- s = stdlib .h5size(basic , ' /vector1' );
167
+ stdlib .h5save(tc .file , " /vector1" , 34 , " size" , 1 )
168
+ s = stdlib .h5size(tc .file , ' /vector1' );
178
169
tc .verifyEqual(s , 1 );
179
170
180
- stdlib .h5save(basic , " /scalar" , 34 , " size" , 0 )
181
- s = stdlib .h5size(basic , ' /scalar' );
171
+ stdlib .h5save(tc . file , " /scalar" , 34 , " size" , 0 )
172
+ s = stdlib .h5size(tc . file , ' /scalar' );
182
173
tc .verifyEmpty(s );
183
174
184
175
end
185
176
186
177
187
178
function test_coerce(tc , type )
188
- basic = tc .TestData .basic ;
189
179
190
- stdlib .h5save(basic , " /" + type , 0 , " type" , type )
180
+ stdlib .h5save(tc . file , " /" + type , 0 , " type" , type )
191
181
192
182
switch type
193
183
case " string" , vt = ' char' ;
194
184
otherwise , vt = type ;
195
185
end
196
186
197
- tc .verifyClass(h5read(basic , " /" +type ), vt )
187
+ tc .verifyClass(h5read(tc . file , " /" +type ), vt )
198
188
199
189
end
200
190
201
191
202
192
function test_rewrite(tc )
203
- basic = tc .TestData .basic ;
204
193
205
- stdlib .h5save(basic , ' /A2' , 3 * magic(4 ))
194
+ stdlib .h5save(tc . file , ' /A2' , 3 * magic(4 ))
206
195
207
- tc .verifyEqual(h5read(basic , ' /A2' ), 3 * magic(4 ))
196
+ tc .verifyEqual(h5read(tc . file , ' /A2' ), 3 * magic(4 ))
208
197
end
209
198
210
199
function test_int8(tc )
211
- basic = tc .TestData .basic ;
212
200
213
- stdlib .h5save(basic , " /i1" , int8(127 ))
201
+ stdlib .h5save(tc . file , " /i1" , int8(127 ))
214
202
215
- a = h5read(basic , " /i1" );
203
+ a = h5read(tc . file , " /i1" );
216
204
tc .verifyEqual(a , int8(127 ))
217
205
218
206
% test rewrite
219
- stdlib .h5save(basic , " /i1" , int8(-128 ))
207
+ stdlib .h5save(tc . file , " /i1" , int8(-128 ))
220
208
221
- a = h5read(basic , " /i1" );
209
+ a = h5read(tc . file , " /i1" );
222
210
tc .verifyEqual(a , int8(-128 ))
223
211
224
212
% test int8 array
225
- stdlib .h5save(basic , " /Ai1" , int8([1 , 2 ]))
226
- a = h5read(basic , " /Ai1" );
213
+ stdlib .h5save(tc . file , " /Ai1" , int8([1 , 2 ]))
214
+ a = h5read(tc . file , " /Ai1" );
227
215
tc .verifyEqual(a , int8([1 ;2]))
228
216
end
229
217
230
218
function test_string(tc , str )
231
219
232
- basic = tc .TestData .basic ;
233
-
234
- stdlib .h5save(basic , " /" +str , str )
220
+ stdlib .h5save(tc .file , " /" +str , str )
235
221
236
- a = h5read(basic , " /" +str );
222
+ a = h5read(tc . file , " /" +str );
237
223
tc .verifyEqual(a , char(str ))
238
224
239
225
% test rewrite
240
- stdlib .h5save(basic , " /" +str , str +" hi" )
226
+ stdlib .h5save(tc . file , " /" +str , str +" hi" )
241
227
242
- a = h5read(basic , " /" +str );
228
+ a = h5read(tc . file , " /" +str );
243
229
tc .verifyEqual(a , char(str +" hi" ))
244
230
end
245
231
246
232
247
233
function test_real_only(tc )
248
- basic = tc .TestData .basic ;
249
234
250
- tc .verifyError(@() stdlib .h5save(basic , " /bad_imag" , 1j ), ' MATLAB:validators:mustBeReal' )
251
- tc .verifyError(@() stdlib .h5variables(basic , ' /nothere' ), ' MATLAB:imagesci:h5info:unableToFind' )
235
+ tc .verifyError(@() stdlib .h5save(tc . file , " /bad_imag" , 1j ), ' MATLAB:validators:mustBeReal' )
236
+ tc .verifyError(@() stdlib .h5variables(tc . file , ' /nothere' ), ' MATLAB:imagesci:h5info:unableToFind' )
252
237
end
253
238
254
239
end
0 commit comments