11classdef TestHDF5 < matlab .unittest .TestCase
22
33properties
4- TestData
4+ file
5+ A0
6+ A1
7+ A2
8+ A3
9+ A4
10+ utf
11+ utf2
512end
613
714properties (TestParameter )
@@ -16,44 +23,35 @@ function setup_file(tc)
1623
1724td = tc .createTemporaryFolder();
1825
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" ;
3836
3937% create test data first, so that parallel tests works
40- stdlib .h5save(bf , ' /A0' , A0 )
38+ stdlib .h5save(tc . file , ' /A0' , tc . A0 )
4139
42- tc .assertTrue(stdlib .is_hdf5(bf ))
40+ tc .assertTrue(stdlib .is_hdf5(tc . file ))
4341
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 )
4846
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 )
5149
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 )
5553
56- tc .assertThat(bf , matlab .unittest .constraints .IsFile )
54+ tc .assertThat(tc . file , matlab .unittest .constraints .IsFile )
5755end
5856end
5957
@@ -70,30 +68,27 @@ function test_auto_chunk_size(tc)
7068
7169function test_get_variables(tc )
7270
73- basic = tc .TestData .basic ;
74-
75- v = stdlib .h5variables(basic );
71+ v = stdlib .h5variables(tc .file );
7672k = [" A0" , " A1" , " A2" , " A3" , " A4" , " utf" , " utf2" ];
7773
7874tc .verifyEqual(sort(v ), k )
7975
8076% 1-level group
81- v = stdlib .h5variables(basic , " /t" );
77+ v = stdlib .h5variables(tc . file , " /t" );
8278tc .verifyEqual(sort(v ), [" x" , " y" ])
8379
8480% traversal
85- tc .verifyEmpty(stdlib .h5variables(basic , " /j" ) )
81+ tc .verifyEmpty(stdlib .h5variables(tc . file , " /j" ) )
8682
87- tc .verifyEqual(stdlib .h5variables(basic , " /j/a" ) , " b" )
83+ tc .verifyEqual(stdlib .h5variables(tc . file , " /j/a" ) , " b" )
8884
8985end
9086
9187
9288function test_exists(tc )
9389import matlab .unittest .constraints .IsScalar
94- basic = tc .TestData .basic ;
9590
96- e = stdlib .h5exists(basic , " /A0" );
91+ e = stdlib .h5exists(tc . file , " /A0" );
9792
9893tc .verifyThat(e , IsScalar )
9994tc .verifyTrue(e );
@@ -103,31 +98,30 @@ function test_exists(tc)
10398
10499function test_size(tc )
105100import matlab .unittest .constraints .IsScalar
106- basic = tc .TestData .basic ;
107101
108- s = stdlib .h5size(basic , ' /A0' );
102+ s = stdlib .h5size(tc . file , ' /A0' );
109103tc .verifyEmpty(s )
110104
111- s = stdlib .h5size(basic , ' /A1' );
105+ s = stdlib .h5size(tc . file , ' /A1' );
112106tc .verifyThat(s , IsScalar )
113107tc .verifyEqual(s , 2 )
114108
115- s = stdlib .h5size(basic , ' /A2' );
109+ s = stdlib .h5size(tc . file , ' /A2' );
116110tc .verifyTrue(isvector(s ))
117111tc .verifyEqual(s , [4 ,4 ])
118112
119- s = stdlib .h5size(basic , ' /A3' );
113+ s = stdlib .h5size(tc . file , ' /A3' );
120114tc .verifyTrue(isvector(s ))
121115tc .verifyEqual(s , [4 ,3 ,2 ])
122116
123- s = stdlib .h5size(basic , ' /A4' );
117+ s = stdlib .h5size(tc . file , ' /A4' );
124118tc .verifyTrue(isvector(s ))
125119tc .verifyEqual(s , [4 ,3 ,2 ,5 ])
126120
127- s = stdlib .h5size(basic , ' /utf' );
121+ s = stdlib .h5size(tc . file , ' /utf' );
128122tc .verifyEmpty(s )
129123
130- s = stdlib .h5size(basic , ' /utf2' );
124+ s = stdlib .h5size(tc . file , ' /utf2' );
131125tc .verifyEqual(s , 2 )
132126
133127end
@@ -136,119 +130,110 @@ function test_size(tc)
136130function test_read(tc )
137131import matlab .unittest .constraints .IsScalar
138132
139- basic = tc .TestData .basic ;
140133
141- s = h5read(basic , ' /A0' );
134+ s = h5read(tc . file , ' /A0' );
142135tc .verifyThat(s , IsScalar )
143- tc .verifyEqual(s , tc .TestData . A0 )
136+ tc .verifyEqual(s , tc .A0 )
144137
145- s = h5read(basic , ' /A1' );
138+ s = h5read(tc . file , ' /A1' );
146139tc .verifyTrue(isvector(s ))
147- tc .verifyEqual(s , tc .TestData . A1 )
140+ tc .verifyEqual(s , tc .A1 )
148141
149- s = h5read(basic , ' /A2' );
142+ s = h5read(tc . file , ' /A2' );
150143tc .verifyTrue(ismatrix(s ))
151- tc .verifyEqual(s , tc .TestData . A2 )
144+ tc .verifyEqual(s , tc .A2 )
152145
153- s = h5read(basic , ' /A3' );
146+ s = h5read(tc . file , ' /A3' );
154147tc .verifyEqual(ndims(s ), 3 )
155- tc .verifyEqual(s , tc .TestData . A3 )
148+ tc .verifyEqual(s , tc .A3 )
156149
157- s = h5read(basic , ' /A4' );
150+ s = h5read(tc . file , ' /A4' );
158151tc .verifyEqual(ndims(s ), 4 )
159- tc .verifyEqual(s , tc .TestData . A4 )
152+ tc .verifyEqual(s , tc .A4 )
160153
161- s = h5read(basic , ' /utf' );
154+ s = h5read(tc . file , ' /utf' );
162155tc .verifyTrue(ischar(s ))
163- tc .verifyEqual(s , tc .TestData . utf )
156+ tc .verifyEqual(s , tc .utf )
164157
165- s = h5read(basic , ' /utf2' );
158+ s = h5read(tc . file , ' /utf2' );
166159tc .verifyClass(s , ' string' )
167- tc .verifyEqual(s , tc .TestData . utf2 )
160+ tc .verifyEqual(s , tc .utf2 )
168161
169162end
170163
171164
172165function test_shape(tc )
173166
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' );
178169tc .verifyEqual(s , 1 );
179170
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' );
182173tc .verifyEmpty(s );
183174
184175end
185176
186177
187178function test_coerce(tc , type )
188- basic = tc .TestData .basic ;
189179
190- stdlib .h5save(basic , " /" + type , 0 , " type" , type )
180+ stdlib .h5save(tc . file , " /" + type , 0 , " type" , type )
191181
192182switch type
193183case " string" , vt = ' char' ;
194184otherwise , vt = type ;
195185end
196186
197- tc .verifyClass(h5read(basic , " /" +type ), vt )
187+ tc .verifyClass(h5read(tc . file , " /" +type ), vt )
198188
199189end
200190
201191
202192function test_rewrite(tc )
203- basic = tc .TestData .basic ;
204193
205- stdlib .h5save(basic , ' /A2' , 3 * magic(4 ))
194+ stdlib .h5save(tc . file , ' /A2' , 3 * magic(4 ))
206195
207- tc .verifyEqual(h5read(basic , ' /A2' ), 3 * magic(4 ))
196+ tc .verifyEqual(h5read(tc . file , ' /A2' ), 3 * magic(4 ))
208197end
209198
210199function test_int8(tc )
211- basic = tc .TestData .basic ;
212200
213- stdlib .h5save(basic , " /i1" , int8(127 ))
201+ stdlib .h5save(tc . file , " /i1" , int8(127 ))
214202
215- a = h5read(basic , " /i1" );
203+ a = h5read(tc . file , " /i1" );
216204tc .verifyEqual(a , int8(127 ))
217205
218206% test rewrite
219- stdlib .h5save(basic , " /i1" , int8(-128 ))
207+ stdlib .h5save(tc . file , " /i1" , int8(-128 ))
220208
221- a = h5read(basic , " /i1" );
209+ a = h5read(tc . file , " /i1" );
222210tc .verifyEqual(a , int8(-128 ))
223211
224212% 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" );
227215tc .verifyEqual(a , int8([1 ;2]))
228216end
229217
230218function test_string(tc , str )
231219
232- basic = tc .TestData .basic ;
233-
234- stdlib .h5save(basic , " /" +str , str )
220+ stdlib .h5save(tc .file , " /" +str , str )
235221
236- a = h5read(basic , " /" +str );
222+ a = h5read(tc . file , " /" +str );
237223tc .verifyEqual(a , char(str ))
238224
239225% test rewrite
240- stdlib .h5save(basic , " /" +str , str +" hi" )
226+ stdlib .h5save(tc . file , " /" +str , str +" hi" )
241227
242- a = h5read(basic , " /" +str );
228+ a = h5read(tc . file , " /" +str );
243229tc .verifyEqual(a , char(str +" hi" ))
244230end
245231
246232
247233function test_real_only(tc )
248- basic = tc .TestData .basic ;
249234
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' )
252237end
253238
254239end
0 commit comments