|
47 | 47 | funcs{end+1} = @test_compare;
|
48 | 48 | funcs{end+1} = @test_filter_source;
|
49 | 49 | funcs{end+1} = @test_filter_reference;
|
| 50 | + funcs{end+1} = @test_filter_feature; |
50 | 51 | end
|
51 | 52 |
|
52 | 53 | %% Test: Add sources by entity and id
|
|
932 | 933 | assert(size(filtered, 1) == 1);
|
933 | 934 | assert(strcmp(filtered{1}.name, mainName));
|
934 | 935 | end
|
| 936 | + |
| 937 | +%% Test: filter features |
| 938 | +function [] = test_filter_feature( varargin ) |
| 939 | + f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite); |
| 940 | + b = f.create_block('testBlock', 'nixBlock'); |
| 941 | + d = b.create_data_array('testDataArray', 'nixDataArray', nix.DataType.Double, [2 7]); |
| 942 | + t = b.create_multi_tag('testMultiTag', 'nixMultiTag', d); |
| 943 | + d = b.create_data_array('testDataArray1', 'nixDataArray', nix.DataType.Double, [1 2]); |
| 944 | + feat = t.add_feature(d, nix.LinkType.Tagged); |
| 945 | + filterID = feat.id; |
| 946 | + d = b.create_data_array('testDataArray2', 'nixDataArray', nix.DataType.Double, [1 2]); |
| 947 | + feat = t.add_feature(d, nix.LinkType.Tagged); |
| 948 | + filterIDs = {filterID, feat.id}; |
| 949 | + |
| 950 | + % test empty id filter |
| 951 | + assert(isempty(f.blocks{1}.multiTags{1}.filter_features(nix.Filter.id, 'IdoNotExist'))); |
| 952 | + |
| 953 | + % test nix.Filter.accept_all |
| 954 | + filtered = f.blocks{1}.multiTags{1}.filter_features(nix.Filter.accept_all, ''); |
| 955 | + assert(size(filtered, 1) == 2); |
| 956 | + |
| 957 | + % test nix.Filter.id |
| 958 | + filtered = f.blocks{1}.multiTags{1}.filter_features(nix.Filter.id, filterID); |
| 959 | + assert(size(filtered, 1) == 1); |
| 960 | + assert(strcmp(filtered{1}.id, filterID)); |
| 961 | + |
| 962 | + % test nix.Filter.ids |
| 963 | + filtered = f.blocks{1}.multiTags{1}.filter_features(nix.Filter.ids, filterIDs); |
| 964 | + assert(size(filtered, 1) == 2); |
| 965 | + assert(strcmp(filtered{1}.id, filterIDs{1}) || strcmp(filtered{1}.id, filterIDs{2})); |
| 966 | + |
| 967 | + % test fail on nix.Filter.name |
| 968 | + err = 'unknown or unsupported filter'; |
| 969 | + try |
| 970 | + f.blocks{1}.multiTags{1}.filter_features(nix.Filter.name, 'someName'); |
| 971 | + catch ME |
| 972 | + assert(strcmp(ME.message, err)); |
| 973 | + end |
| 974 | + |
| 975 | + % test fail on nix.Filter.type |
| 976 | + err = 'unknown or unsupported filter'; |
| 977 | + try |
| 978 | + f.blocks{1}.multiTags{1}.filter_features(nix.Filter.type, 'someType'); |
| 979 | + catch ME |
| 980 | + assert(strcmp(ME.message, err)); |
| 981 | + end |
| 982 | + |
| 983 | + % test fail on nix.Filter.metadata |
| 984 | + err = 'unknown or unsupported filter'; |
| 985 | + try |
| 986 | + f.blocks{1}.multiTags{1}.filter_features(nix.Filter.metadata, 'someMetadata'); |
| 987 | + catch ME |
| 988 | + assert(strcmp(ME.message, err)); |
| 989 | + end |
| 990 | + |
| 991 | + % test fail on nix.Filter.source |
| 992 | + try |
| 993 | + f.blocks{1}.multiTags{1}.filter_features(nix.Filter.source, 'someSource'); |
| 994 | + catch ME |
| 995 | + assert(strcmp(ME.message, err)); |
| 996 | + end |
| 997 | +end |
0 commit comments