|
55 | 55 | funcs{end+1} = @test_filter_tag;
|
56 | 56 | funcs{end+1} = @test_filter_multi_tag;
|
57 | 57 | funcs{end+1} = @test_filter_data_array;
|
| 58 | + funcs{end+1} = @test_find_source; |
| 59 | + funcs{end+1} = @test_find_source_filtered; |
58 | 60 | end
|
59 | 61 |
|
60 | 62 | function [] = test_attrs( varargin )
|
|
1095 | 1097 | assert(size(filtered, 1) == 1);
|
1096 | 1098 | assert(strcmp(filtered{1}.name, mainName));
|
1097 | 1099 | end
|
| 1100 | + |
| 1101 | +%% Test: Find source w/o filter |
| 1102 | +function [] = test_find_source |
| 1103 | + f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite); |
| 1104 | + b = f.create_block('testBlock', 'nixBlock'); |
| 1105 | + sl1 = b.create_source('sourceLvl1', 'nixSource'); |
| 1106 | + |
| 1107 | + sl21 = sl1.create_source('sourceLvl2_1', 'nixSource'); |
| 1108 | + sl22 = sl1.create_source('sourceLvl2_2', 'nixSource'); |
| 1109 | + |
| 1110 | + sl31 = sl21.create_source('sourceLvl3_1', 'nixSource'); |
| 1111 | + sl32 = sl21.create_source('sourceLvl3_2', 'nixSource'); |
| 1112 | + sl33 = sl21.create_source('sourceLvl3_3', 'nixSource'); |
| 1113 | + |
| 1114 | + sl41 = sl31.create_source('sourceLvl4_1', 'nixSource'); |
| 1115 | + sl42 = sl31.create_source('sourceLvl4_2', 'nixSource'); |
| 1116 | + sl43 = sl31.create_source('sourceLvl4_3', 'nixSource'); |
| 1117 | + sl44 = sl31.create_source('sourceLvl4_4', 'nixSource'); |
| 1118 | + |
| 1119 | + % Check invalid entry |
| 1120 | + err = 'Provide a valid search depth'; |
| 1121 | + try |
| 1122 | + b.find_sources('hurra'); |
| 1123 | + catch ME |
| 1124 | + assert(strcmp(ME.message, err)); |
| 1125 | + end |
| 1126 | + |
| 1127 | + % find all |
| 1128 | + filtered = b.find_sources(4); |
| 1129 | + assert(size(filtered, 1) == 10); |
| 1130 | + |
| 1131 | + % find until level 4 |
| 1132 | + filtered = b.find_sources(3); |
| 1133 | + assert(size(filtered, 1) == 10); |
| 1134 | + |
| 1135 | + % find until level 3 |
| 1136 | + filtered = b.find_sources(2); |
| 1137 | + assert(size(filtered, 1) == 6); |
| 1138 | + |
| 1139 | + % find until level 2 |
| 1140 | + filtered = b.find_sources(1); |
| 1141 | + assert(size(filtered, 1) == 3); |
| 1142 | + |
| 1143 | + % find until level 1 |
| 1144 | + filtered = b.find_sources(0); |
| 1145 | + assert(size(filtered, 1) == 1); |
| 1146 | +end |
| 1147 | + |
| 1148 | +%% Test: Find sources with filters |
| 1149 | +function [] = test_find_source_filtered |
| 1150 | + findSource = 'nixFindSection'; |
| 1151 | + f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite); |
| 1152 | + b = f.create_block('testBlock', 'nixBlock'); |
| 1153 | + sl1 = b.create_source('sourceLvl1', 'nixSource'); |
| 1154 | + |
| 1155 | + sl21 = sl1.create_source('sourceLvl2_1', 'nixSource'); |
| 1156 | + sl22 = sl1.create_source('sourceLvl2_2', findSource); |
| 1157 | + |
| 1158 | + sl31 = sl21.create_source('sourceLvl3_1', findSource); |
| 1159 | + sl32 = sl21.create_source('sourceLvl3_2', 'nixSource'); |
| 1160 | + sl33 = sl21.create_source('sourceLvl3_3', 'nixSource'); |
| 1161 | + |
| 1162 | + sl41 = sl31.create_source('sourceLvl4_1', findSource); |
| 1163 | + sl42 = sl31.create_source('sourceLvl4_2', 'nixSource'); |
| 1164 | + sl43 = sl31.create_source('sourceLvl4_3', 'nixSource'); |
| 1165 | + sl44 = sl31.create_source('sourceLvl4_4', 'nixSource'); |
| 1166 | + |
| 1167 | + % test find by id |
| 1168 | + filtered = b.find_filtered_sources(0, nix.Filter.id, sl41.id); |
| 1169 | + assert(isempty(filtered)); |
| 1170 | + filtered = b.find_filtered_sources(3, nix.Filter.id, sl41.id); |
| 1171 | + assert(size(filtered, 1) == 1); |
| 1172 | + assert(strcmp(filtered{1}.id, sl41.id)); |
| 1173 | + |
| 1174 | + % test find by ids |
| 1175 | + filterids = {sl1.id, sl41.id}; |
| 1176 | + filtered = b.find_filtered_sources(0, nix.Filter.ids, filterids); |
| 1177 | + assert(size(filtered, 1) == 1); |
| 1178 | + filtered = b.find_filtered_sources(3, nix.Filter.ids, filterids); |
| 1179 | + assert(size(filtered, 1) == 2); |
| 1180 | + |
| 1181 | + % test find by name |
| 1182 | + filtered = b.find_filtered_sources(0, nix.Filter.name, sl41.name); |
| 1183 | + assert(isempty(filtered)); |
| 1184 | + filtered = b.find_filtered_sources(3, nix.Filter.name, sl41.name); |
| 1185 | + assert(size(filtered, 1) == 1); |
| 1186 | + assert(strcmp(filtered{1}.name, sl41.name)); |
| 1187 | + |
| 1188 | + % test find by type |
| 1189 | + filtered = b.find_filtered_sources(0, nix.Filter.type, findSource); |
| 1190 | + assert(isempty(filtered)); |
| 1191 | + filtered = b.find_filtered_sources(3, nix.Filter.type, findSource); |
| 1192 | + assert(size(filtered, 1) == 3); |
| 1193 | + assert(strcmp(filtered{1}.type, findSource)); |
| 1194 | + |
| 1195 | + % test nix.Filter.metadata |
| 1196 | + sec = f.create_section('testSection', 'nixSection'); |
| 1197 | + sl43.set_metadata(sec); |
| 1198 | + filtered = b.find_filtered_sources(0, nix.Filter.metadata, sec.id); |
| 1199 | + assert(isempty(filtered)); |
| 1200 | + filtered = b.find_filtered_sources(3, nix.Filter.metadata, sec.id); |
| 1201 | + assert(size(filtered, 1) == 1); |
| 1202 | + strcmp(filtered{1}.id, sl43.id); |
| 1203 | + |
| 1204 | + % test nix.Filter.source |
| 1205 | + filtered = b.find_filtered_sources(0, nix.Filter.source, sl44.id); |
| 1206 | + assert(isempty(filtered)); |
| 1207 | + filtered = b.find_filtered_sources(3, nix.Filter.source, sl44.id); |
| 1208 | + assert(size(filtered, 1) == 1); |
| 1209 | + assert(strcmp(filtered{1}.id, sl31.id)); |
| 1210 | +end |
0 commit comments