Skip to content

Commit df1c974

Browse files
committed
removeCache: refactor DataArray and DataArrayTests
1 parent 45eeec6 commit df1c974

File tree

2 files changed

+18
-27
lines changed

2 files changed

+18
-27
lines changed

+nix/DataArray.m

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
properties (Hidden)
55
% namespace reference for nix-mx functions
66
alias = 'DataArray'
7-
dimsCache
8-
end
7+
end;
98

109
properties(Dependent)
1110
dimensions % should not be dynamic due to complex set operation
@@ -23,58 +22,47 @@
2322
nix.Dynamic.add_dyn_attr(obj, 'expansionOrigin', 'rw');
2423
nix.Dynamic.add_dyn_attr(obj, 'polynom_coefficients', 'rw');
2524
nix.Dynamic.add_dyn_attr(obj, 'shape', 'rw');
26-
27-
obj.dimsCache = nix.CacheStruct();
2825
end;
2926

3027
% -----------------
3128
% Dimensions
3229
% -----------------
3330

3431
function dimensions = get.dimensions(obj)
35-
if obj.dimsCache.lastUpdate ~= obj.updatedAt
36-
currList = nix_mx('DataArray::dimensions', obj.nix_handle);
37-
obj.dimsCache.data = cell(length(currList), 1);
38-
for i = 1:length(currList)
39-
40-
switch currList(i).dtype
41-
case 'set'
42-
obj.dimsCache.data{i} = nix.SetDimension(currList(i).dimension);
43-
case 'sample'
44-
obj.dimsCache.data{i} = nix.SampledDimension(currList(i).dimension);
45-
case 'range'
46-
obj.dimsCache.data{i} = nix.RangeDimension(currList(i).dimension);
47-
otherwise
48-
disp('some dimension type is unknown! skip')
49-
end
32+
dimensions = {};
33+
currList = nix_mx('DataArray::dimensions', obj.nix_handle);
34+
for i = 1:length(currList)
35+
switch currList(i).dtype
36+
case 'set'
37+
dimensions{i} = nix.SetDimension(currList(i).dimension);
38+
case 'sample'
39+
dimensions{i} = nix.SampledDimension(currList(i).dimension);
40+
case 'range'
41+
dimensions{i} = nix.RangeDimension(currList(i).dimension);
42+
otherwise
43+
disp('some dimension type is unknown! skip')
5044
end;
51-
obj.dimsCache.lastUpdate = obj.updatedAt;
5245
end;
53-
dimensions = obj.dimsCache.data;
5446
end;
5547

5648
function dim = append_set_dimension(obj)
5749
func_name = strcat(obj.alias, '::append_set_dimension');
5850
dim = nix.SetDimension(nix_mx(func_name, obj.nix_handle));
59-
obj.dimsCache.lastUpdate = 0;
6051
end
6152

6253
function dim = append_sampled_dimension(obj, interval)
6354
func_name = strcat(obj.alias, '::append_sampled_dimension');
6455
dim = nix.SampledDimension(nix_mx(func_name, obj.nix_handle, interval));
65-
obj.dimsCache.lastUpdate = 0;
6656
end
6757

6858
function dim = append_range_dimension(obj, ticks)
6959
func_name = strcat(obj.alias, '::append_range_dimension');
7060
dim = nix.RangeDimension(nix_mx(func_name, obj.nix_handle, ticks));
71-
obj.dimsCache.lastUpdate = 0;
7261
end
7362

7463
function delCheck = delete_dimension(obj, index)
7564
func_name = strcat(obj.alias, '::delete_dimension');
7665
delCheck = nix_mx(func_name, obj.nix_handle, index);
77-
obj.dimsCache.lastUpdate = 0;
7866
end;
7967

8068
% -----------------

tests/TestDataArray.m

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
assert(strcmp(da.name, 'daTest'));
2525
assert(strcmp(da.type, 'test nixDataArray'));
2626

27-
%-- TODO does not work at the moment on the c++ side
2827
da.type = 'nixDataArray';
2928
assert(strcmp(da.type, 'nixDataArray'));
3029

@@ -153,21 +152,25 @@
153152
da = b.create_data_array('daTest', 'test nixDataArray', 'double', [1 2]);
154153

155154
assert(isempty(da.dimensions));
155+
assert(isempty(f.blocks{1}.dataArrays{1}.dimensions));
156156

157157
da.append_set_dimension();
158158
assert(length(da.dimensions) == 1);
159159
assert(strcmp(da.dimensions{1}.dimensionType, 'set'));
160+
assert(strcmp(f.blocks{1}.dataArrays{1}.dimensions{1}.dimensionType, 'set'));
160161

161162
da.append_sampled_dimension(200);
162163
assert(length(da.dimensions) == 2);
163164
assert(strcmp(da.dimensions{2}.dimensionType, 'sample'));
164165
assert(da.dimensions{2}.samplingInterval == 200);
166+
assert(f.blocks{1}.dataArrays{1}.dimensions{2}.samplingInterval == 200);
165167

166168
ticks = [1, 2, 3, 4];
167169
da.append_range_dimension(ticks);
168170
assert(length(da.dimensions) == 3);
169171
assert(strcmp(da.dimensions{3}.dimensionType, 'range'));
170172
assert(isequal(da.dimensions{3}.ticks, ticks));
173+
assert(isequal(f.blocks{1}.dataArrays{1}.dimensions{3}.ticks, ticks));
171174

172175
da.delete_dimension(2);
173176
assert(length(da.dimensions) == 2);
@@ -180,4 +183,4 @@
180183

181184
da.delete_dimension(1);
182185
assert(isempty(da.dimensions));
183-
end
186+
end

0 commit comments

Comments
 (0)