Skip to content

Commit 01de620

Browse files
committed
multiple write value options
1 parent 7ac0bfc commit 01de620

File tree

3 files changed

+57
-26
lines changed

3 files changed

+57
-26
lines changed

+nix/Section.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@
9696
end;
9797

9898
function p = create_property_with_value(obj, name, val)
99+
if(~iscell(val))
100+
val = num2cell(val);
101+
end;
99102
p = nix.Property(nix_mx('Section::createPropertyWithValue', ...
100103
obj.nix_handle, name, val));
101104
obj.propsCache.lastUpdate = 0;

src/nixsection.cc

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,28 +72,22 @@ void create_property_with_value(const extractor &input, infusor &output)
7272
std::vector<nix::Value> currVec;
7373

7474
mxClassID currID = input.class_id(3);
75-
if (currID == mxCELL_CLASS){
76-
mexPrintf("Cell\n");
75+
if (currID == mxCELL_CLASS)
76+
{
7777
const mxArray *cell_element_ptr = input.cellElemPtr(3, 0);
7878

79-
if (mxGetClassID(cell_element_ptr) == mxSTRUCT_CLASS){
80-
mexPrintf("Struct\n");
79+
if (mxGetClassID(cell_element_ptr) == mxSTRUCT_CLASS)
80+
{
8181
currVec = input.extractFromStruct(3);
8282
}
8383
else
8484
{
85-
mexPrintf("Cell with normal values\n");
8685
currVec = input.vec(3);
8786
}
8887
}
89-
else if (currID == mxCHAR_CLASS){
90-
mexPrintf("Just char\n");
91-
}
92-
else if (currID == mxDOUBLE_CLASS){
93-
mexPrintf("Just double\n");
94-
}
95-
else if (currID == mxLOGICAL_CLASS){
96-
mexPrintf("Just logical\n");
88+
else
89+
{
90+
mexPrintf("Unsupported data type\n");
9791
}
9892

9993
nix::Property p = currObj.createProperty(input.str(2), currVec);

tests/TestSection.m

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -156,24 +156,58 @@
156156
f = nix.File(fullfile(pwd,'tests','testRW.h5'), nix.FileMode.Overwrite);
157157
s = f.createSection('mainSection', 'nixSection');
158158

159-
tmp = s.create_property_with_value('doubleProperty', {5, 6, 7, 8});
160-
assert(strcmp(s.allProperties{1}.name, 'doubleProperty'));
161-
assert(s.open_property(s.allProperties{1}.id).values{1}.value == 5);
162-
assert(size(s.open_property(s.allProperties{1}.id).values, 1) == 4);
159+
tmp = s.create_property_with_value('doubleProperty1', [5, 6, 7, 8]);
160+
assert(strcmp(s.allProperties{end}.name, 'doubleProperty1'));
161+
assert(s.open_property(s.allProperties{end}.id).values{1}.value == 5);
162+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 4);
163+
assert(strcmpi(tmp.datatype,'double'));
164+
165+
tmp = s.create_property_with_value('doubleProperty2', {5, 6, 7, 8});
166+
assert(strcmp(s.allProperties{end}.name, 'doubleProperty2'));
167+
assert(s.open_property(s.allProperties{end}.id).values{1}.value == 5);
168+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 4);
163169
assert(strcmpi(tmp.datatype,'double'));
164170

165-
tmp = s.create_property_with_value('stringProperty', {'this', 'has', 'strings'});
166-
assert(strcmp(s.allProperties{2}.name, 'stringProperty'));
167-
assert(strcmp(s.open_property(s.allProperties{2}.id).values{1}.value, 'this'));
168-
assert(size(s.open_property(s.allProperties{2}.id).values, 1) == 3);
171+
tmp = s.create_property_with_value('stringProperty1', ['a', 'string']);
172+
assert(strcmp(s.allProperties{end}.name, 'stringProperty1'));
173+
assert(strcmp(s.open_property(s.allProperties{end}.id).values{1}.value, 'a'));
174+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 7);
169175
assert(strcmpi(tmp.datatype, 'string'));
176+
177+
tmp = s.create_property_with_value('stringProperty2', {'this', 'has', 'strings'});
178+
assert(strcmp(s.allProperties{end}.name, 'stringProperty2'));
179+
assert(strcmp(s.open_property(s.allProperties{end}.id).values{1}.value, 'this'));
180+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 3);
181+
assert(strcmpi(tmp.datatype, 'string'));
182+
183+
tmp = s.create_property_with_value('booleanProperty1', [true, false, true]);
184+
assert(strcmp(s.allProperties{end}.name, 'booleanProperty1'));
185+
assert(s.open_property(s.allProperties{end}.id).values{1}.value);
186+
assert(~s.open_property(s.allProperties{end}.id).values{2}.value);
187+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 3);
188+
assert(strcmpi(tmp.datatype, 'bool'));
170189

171-
tmp = s.create_property_with_value('booleanProperty', {true, false, true});
172-
assert(strcmp(s.allProperties{3}.name, 'booleanProperty'));
173-
assert(s.open_property(s.allProperties{3}.id).values{1}.value);
174-
assert(~s.open_property(s.allProperties{3}.id).values{2}.value);
175-
assert(size(s.open_property(s.allProperties{3}.id).values, 1) == 3);
190+
tmp = s.create_property_with_value('booleanProperty2', {true, false, true});
191+
assert(strcmp(s.allProperties{end}.name, 'booleanProperty2'));
192+
assert(s.open_property(s.allProperties{end}.id).values{1}.value);
193+
assert(~s.open_property(s.allProperties{end}.id).values{2}.value);
194+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 3);
176195
assert(strcmpi(tmp.datatype, 'bool'));
196+
197+
val1 = s.open_property(s.allProperties{1}.id).values{1};
198+
val2 = s.open_property(s.allProperties{1}.id).values{2};
199+
tmp = s.create_property_with_value('doubleByStrunct1', [val1, val2]);
200+
assert(strcmp(s.allProperties{end}.name, 'doubleByStrunct1'));
201+
assert(s.open_property(s.allProperties{end}.id).values{1}.value == 5);
202+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 2);
203+
assert(strcmpi(tmp.datatype,'double'));
204+
205+
val3 = s.open_property(s.allProperties{1}.id).values{3};
206+
tmp = s.create_property_with_value('doubleByStrunct2', {val1, val2, val3});
207+
assert(strcmp(s.allProperties{end}.name, 'doubleByStrunct2'));
208+
assert(s.open_property(s.allProperties{end}.id).values{3}.value == 7);
209+
assert(size(s.open_property(s.allProperties{end}.id).values, 1) == 3);
210+
assert(strcmpi(tmp.datatype,'double'));
177211
end
178212

179213
%% Test: Delete property by entity, propertyStruct, ID and name

0 commit comments

Comments
 (0)