Skip to content

Commit cc8d3fc

Browse files
committed
fixDataTypeErrors: add extensive DataArray tests
1 parent 4c48afe commit cc8d3fc

File tree

2 files changed

+130
-21
lines changed

2 files changed

+130
-21
lines changed

tests/TestBlock.m

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,26 +69,35 @@
6969
tmp = da.read_all();
7070
assert(all(tmp(:) == 0));
7171

72-
%-- TODO: add tests for all provided data types
7372
try
74-
stringName = 'stringDataArray';
75-
b.create_data_array(stringName, dtype, nix.DataType.String, [1 5]);
73+
b.create_data_array('stringDataArray', dtype, nix.DataType.String, [1 5]);
7674
catch ME
7775
assert(strcmp(ME.identifier, 'Block:unsupportedDataType'));
7876
end;
7977

8078
try
81-
unsupportedName = 'I will crash and burn';
82-
b.create_data_array(unsupportedName, dtype, 'Thou shalt not work!', [1 5]);
79+
b.create_data_array('I will crash and burn', dtype, 'Thou shalt not work!', [1 5]);
8380
catch ME
8481
assert(strcmp(ME.identifier, 'Block:unsupportedDataType'));
8582
end;
8683

87-
assert(~isempty(b.dataArrays));
84+
da = b.create_data_array('floatDataArray', dtype, nix.DataType.Float, [3 3]);
85+
da = b.create_data_array('Int8DataArray', dtype, nix.DataType.Int8, [3 3]);
86+
da = b.create_data_array('Int16DataArray', dtype, nix.DataType.Int16, [3 3]);
87+
da = b.create_data_array('Int32DataArray', dtype, nix.DataType.Int32, [3 3]);
88+
da = b.create_data_array('Int64DataArray', dtype, nix.DataType.Int64, [3 3]);
89+
da = b.create_data_array('UInt8DataArray', dtype, nix.DataType.UInt8, [3 3]);
90+
da = b.create_data_array('UInt16DataArray', dtype, nix.DataType.UInt16, [3 3]);
91+
da = b.create_data_array('UInt32DataArray', dtype, nix.DataType.UInt32, [3 3]);
92+
da = b.create_data_array('UInt64DataArray', dtype, nix.DataType.UInt64, [3 3]);
93+
da = b.create_data_array('logicalArray', dtype, nix.DataType.Bool, [3 3]);
94+
95+
clear da b f;
96+
f = nix.File(fileName, nix.FileMode.ReadOnly);
97+
assert(size(f.blocks{1}.dataArrays, 1) == 11);
8898
end
8999

90100
%% Test: Create Data Array from data
91-
%-- TODO add tests for all supported datatypes
92101
function [] = test_create_data_array_from_data( varargin )
93102
fileName = fullfile(pwd, 'tests', 'testRW.h5');
94103
daType = 'nix.DataArray';

tests/TestDataArray.m

Lines changed: 114 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
funcs{end+1} = @test_set_metadata;
99
funcs{end+1} = @test_open_metadata;
1010
funcs{end+1} = @test_list_sources;
11-
funcs{end+1} = @test_write_data;
11+
funcs{end+1} = @test_write_data_double;
12+
funcs{end+1} = @test_write_data_logical;
13+
funcs{end+1} = @test_write_data_float;
14+
funcs{end+1} = @test_write_data_integer;
1215
funcs{end+1} = @test_add_source;
1316
funcs{end+1} = @test_remove_source;
1417
funcs{end+1} = @test_dimensions;
@@ -52,11 +55,33 @@
5255

5356
%% Test: Read all data from DataArray
5457
function [] = test_open_data( varargin )
55-
test_file = nix.File(fullfile(pwd, 'tests', 'test.h5'), nix.FileMode.ReadOnly);
56-
getBlock = test_file.openBlock(test_file.blocks{1,1}.name);
57-
getDataArray = getBlock.data_array(getBlock.dataArrays{1,1}.id);
58-
59-
assert(size(getDataArray.read_all(),2) == 36);
58+
fileName = fullfile(pwd, 'tests', 'testRW.h5');
59+
daType = 'nix.DataArray';
60+
f = nix.File(fileName, nix.FileMode.Overwrite);
61+
b = f.createBlock('testBlock', 'nix.Block');
62+
63+
da = b.create_data_array('logicalArray', daType, nix.DataType.Bool, [3 3]);
64+
assert(islogical(da.read_all));
65+
da = b.create_data_array('doubleDataArray', daType, nix.DataType.Double, [3 3]);
66+
assert(isa(da.read_all, 'double'));
67+
da = b.create_data_array('floatDataArray', daType, nix.DataType.Float, [3 3]);
68+
assert(isfloat(da.read_all));
69+
da = b.create_data_array('Int8DataArray', daType, nix.DataType.Int8, [3 3]);
70+
assert(isa(da.read_all, 'int8'));
71+
da = b.create_data_array('Int16DataArray', daType, nix.DataType.Int16, [3 3]);
72+
assert(isa(da.read_all, 'int16'));
73+
da = b.create_data_array('Int32DataArray', daType, nix.DataType.Int32, [3 3]);
74+
assert(isa(da.read_all, 'int32'));
75+
da = b.create_data_array('Int64DataArray', daType, nix.DataType.Int64, [3 3]);
76+
assert(isa(da.read_all, 'int64'));
77+
da = b.create_data_array('UInt8DataArray', daType, nix.DataType.UInt8, [3 3]);
78+
assert(isa(da.read_all, 'uint8'));
79+
da = b.create_data_array('UInt16DataArray', daType, nix.DataType.UInt16, [3 3]);
80+
assert(isa(da.read_all, 'uint16'));
81+
da = b.create_data_array('UInt32DataArray', daType, nix.DataType.UInt32, [3 3]);
82+
assert(isa(da.read_all, 'uint32'));
83+
da = b.create_data_array('UInt64DataArray', daType, nix.DataType.UInt64, [3 3]);
84+
assert(isa(da.read_all, 'uint64'));
6085
end
6186

6287
%% Test: Set metadata
@@ -97,23 +122,19 @@
97122
assert(strcmp(d1.sources{1}.name, 'Unit 5'));
98123
end
99124

100-
%% Test: Write Data
101-
%-- TODO: add tests for all provided data types
102-
function [] = test_write_data( varargin )
125+
%% Test: Write Data double
126+
function [] = test_write_data_double( varargin )
103127
fileName = fullfile(pwd, 'tests', 'testRW.h5');
104128
typeDA = 'nix.DataArray';
105129
f = nix.File(fileName, nix.FileMode.Overwrite);
106-
b = f.createBlock('tagtest', 'nixblock');
130+
b = f.createBlock('testDataArray', 'nixblock');
107131

108132
numData = [1 2 3 4 5];
109133
logData = logical([1 0 1 0 1]);
110134
charData = ['a' 'b' 'c' 'd' 'e'];
111135
cellData = {1 2 3 4 5};
112136

113137
da = b.create_data_array('numericArray', typeDA, nix.DataType.Double, [1 5]);
114-
tmp = da.read_all();
115-
assert(all(tmp(:) == 0));
116-
117138
da.write_all(numData);
118139
assert(isequal(da.read_all(), numData));
119140

@@ -133,6 +154,22 @@
133154
assert(strcmp(ME.identifier, 'DataArray:improperDataType'));
134155
end;
135156

157+
clear da b f;
158+
f = nix.File(fileName, nix.FileMode.ReadOnly);
159+
assert(isequal(f.blocks{1}.dataArrays{1}.read_all, numData));
160+
end
161+
162+
%% Test: Write Data logical
163+
function [] = test_write_data_logical( varargin )
164+
fileName = fullfile(pwd, 'tests', 'testRW.h5');
165+
typeDA = 'nix.DataArray';
166+
f = nix.File(fileName, nix.FileMode.Overwrite);
167+
b = f.createBlock('testDataArray', 'nixblock');
168+
169+
logData = logical([1 0 1 0 1]);
170+
numData = [1 2 3 4 5];
171+
charData = ['a' 'b' 'c' 'd' 'e'];
172+
136173
da = b.create_data_array('logicalArray', typeDA, nix.DataType.Bool, [1 5]);
137174
da.write_all(logData);
138175
assert(isequal(da.read_all, logData));
@@ -147,10 +184,73 @@
147184
assert(strcmp(ME.identifier, 'DataArray:improperDataType'));
148185
end;
149186

187+
clear da b f;
188+
f = nix.File(fileName, nix.FileMode.ReadOnly);
189+
assert(isequal(f.blocks{1}.dataArrays{1}.read_all, logData));
190+
end
191+
192+
%% Test: Write Data float
193+
function [] = test_write_data_float( varargin )
194+
fileName = fullfile(pwd, 'tests', 'testRW.h5');
195+
typeDA = 'nix.DataArray';
196+
f = nix.File(fileName, nix.FileMode.Overwrite);
197+
b = f.createBlock('testDataArray', 'nixblock');
198+
199+
numData = [1.3 2.4143 3.9878 4.1239 5];
200+
201+
da = b.create_data_array('floatArray', typeDA, nix.DataType.Float, [1 5]);
202+
da.write_all(numData);
203+
assert(isequal(da.read_all, single(numData)));
204+
205+
clear da b f;
206+
f = nix.File(fileName, nix.FileMode.ReadOnly);
207+
assert(isequal(f.blocks{1}.dataArrays{1}.read_all, single(numData)));
208+
end
209+
210+
%% Test: Write Data integer
211+
function [] = test_write_data_integer( varargin )
212+
fileName = fullfile(pwd, 'tests', 'testRW.h5');
213+
typeDA = 'nix.DataArray';
214+
f = nix.File(fileName, nix.FileMode.Overwrite);
215+
b = f.createBlock('testDataArray', 'nixblock');
216+
217+
numData = [1 2 3; 4 5 6; 7 8 9];
218+
219+
da = b.create_data_array('Int8DataArray', typeDA, nix.DataType.Int8, [3 3]);
220+
da.write_all(numData);
221+
assert(isequal(da.read_all, numData));
222+
da = b.create_data_array('Int16DataArray', typeDA, nix.DataType.Int16, [3 3]);
223+
da.write_all(numData);
224+
assert(isequal(da.read_all, numData));
225+
da = b.create_data_array('Int32DataArray', typeDA, nix.DataType.Int32, [3 3]);
226+
da.write_all(numData);
227+
assert(isequal(da.read_all, numData));
228+
da = b.create_data_array('Int64DataArray', typeDA, nix.DataType.Int64, [3 3]);
229+
da.write_all(numData);
230+
assert(isequal(da.read_all, numData));
231+
da = b.create_data_array('UInt8DataArray', typeDA, nix.DataType.UInt8, [3 3]);
232+
da.write_all(numData);
233+
assert(isequal(da.read_all, numData));
234+
da = b.create_data_array('UInt16DataArray', typeDA, nix.DataType.UInt16, [3 3]);
235+
da.write_all(numData);
236+
assert(isequal(da.read_all, numData));
237+
da = b.create_data_array('UInt32DataArray', typeDA, nix.DataType.UInt32, [3 3]);
238+
da.write_all(numData);
239+
assert(isequal(da.read_all, numData));
240+
da = b.create_data_array('UInt64DataArray', typeDA, nix.DataType.UInt64, [3 3]);
241+
da.write_all(numData);
242+
assert(isequal(da.read_all, numData));
243+
150244
clear da b f;
151245
f = nix.File(fileName, nix.FileMode.ReadOnly);
152246
assert(isequal(f.blocks{1}.dataArrays{1}.read_all, numData));
153-
assert(isequal(f.blocks{1}.dataArrays{2}.read_all, logData));
247+
assert(isequal(f.blocks{1}.dataArrays{2}.read_all, numData));
248+
assert(isequal(f.blocks{1}.dataArrays{3}.read_all, numData));
249+
assert(isequal(f.blocks{1}.dataArrays{4}.read_all, numData));
250+
assert(isequal(f.blocks{1}.dataArrays{5}.read_all, numData));
251+
assert(isequal(f.blocks{1}.dataArrays{6}.read_all, numData));
252+
assert(isequal(f.blocks{1}.dataArrays{7}.read_all, numData));
253+
assert(isequal(f.blocks{1}.dataArrays{8}.read_all, numData));
154254
end
155255

156256
%% Test: Add sources by entity and id

0 commit comments

Comments
 (0)