33
33
funcs{end + 1 } = @test_datatype ;
34
34
funcs{end + 1 } = @test_set_data_extent ;
35
35
funcs{end + 1 } = @test_compare ;
36
+ funcs{end + 1 } = @test_filter_source ;
36
37
end
37
38
38
39
function [] = test_attrs( varargin )
595
596
assert(d1 .compare(d1 ) == 0 );
596
597
assert(d2 .compare(d1 ) > 0 );
597
598
assert(d1 .compare(d3 ) ~= 0 );
598
- end
599
+ end
600
+
601
+ %% Test: filter sources
602
+ function [] = test_filter_source( varargin )
603
+ filterName = ' filterMe' ;
604
+ filterType = ' filterType' ;
605
+ f = nix .File(fullfile(pwd , ' tests' , ' testRW.h5' ), nix .FileMode .Overwrite );
606
+ b = f .create_block(' testBlock' , ' nixBlock' );
607
+ d = b .create_data_array(' testDataArray' , ' nixDataArray' , nix .DataType .Double , [3 2 3 ]);
608
+ s = b .create_source(filterName , ' nixSource' );
609
+ d .add_source(s );
610
+ filterID = s .id ;
611
+ s = b .create_source(' testSource1' , filterType );
612
+ d .add_source(s );
613
+ filterIDs = {filterID , s .id };
614
+ s = b .create_source(' testSource2' , filterType );
615
+ d .add_source(s );
616
+
617
+ % test empty id filter
618
+ assert(isempty(f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .id , ' IdoNotExist' )));
619
+
620
+ % test nix.Filter.accept_all
621
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .accept_all , ' ' );
622
+ assert(size(filtered , 1 ) == 3 );
623
+
624
+ % test nix.Filter.id
625
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .id , filterID );
626
+ assert(size(filtered , 1 ) == 1 );
627
+ assert(strcmp(filtered{1 }.id, filterID ));
628
+
629
+ % test nix.Filter.ids
630
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .ids , filterIDs );
631
+ assert(size(filtered , 1 ) == 2 );
632
+ assert(strcmp(filtered{1 }.id, filterIDs{1 }) || strcmp(filtered{1 }.id, filterIDs{2 }));
633
+
634
+ % test nix.Filter.name
635
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .name , filterName );
636
+ assert(size(filtered , 1 ) == 1 );
637
+ assert(strcmp(filtered{1 }.name, filterName ));
638
+
639
+ % test nix.Filter.type
640
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .type , filterType );
641
+ assert(size(filtered , 1 ) == 2 );
642
+
643
+ % test nix.Filter.metadata
644
+ mainName = ' testSubSection' ;
645
+ mainSource = b .create_source(mainName , ' nixSource' );
646
+ d .add_source(mainSource );
647
+ subName = ' testSubSection1' ;
648
+ s = f .create_section(subName , ' nixSection' );
649
+ mainSource .set_metadata(s );
650
+ subID = s .id ;
651
+
652
+ assert(isempty(f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .metadata , ' Do not exist' )));
653
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .metadata , subID );
654
+ assert(size(filtered , 1 ) == 1 );
655
+ assert(strcmp(filtered{1 }.name, mainName ));
656
+
657
+ % test nix.Filter.source
658
+ mainName = ' testSubSource' ;
659
+ main = b .create_source(mainName , ' nixSource' );
660
+ d .add_source(main );
661
+ mainID = main .id ;
662
+ subName = ' testSubSource1' ;
663
+ s = main .create_source(subName , ' nixSource' );
664
+ subID = s .id ;
665
+
666
+ assert(isempty(f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .source , ' Do not exist' )));
667
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .source , subName );
668
+ assert(size(filtered , 1 ) == 1 );
669
+ assert(strcmp(filtered{1 }.id, mainID ));
670
+
671
+ filtered = f.blocks{1 }.dataArrays{1 }.filter_sources(nix .Filter .source , subID );
672
+ assert(size(filtered , 1 ) == 1 );
673
+ assert(strcmp(filtered{1 }.name, mainName ));
674
+ end
0 commit comments