|
40 | 40 | funcs{end+1} = @test_set_open_extents;
|
41 | 41 | funcs{end+1} = @test_set_metadata;
|
42 | 42 | funcs{end+1} = @test_open_metadata;
|
| 43 | + funcs{end+1} = @test_retrieve_data; |
43 | 44 | funcs{end+1} = @test_retrieve_data_idx;
|
44 | 45 | funcs{end+1} = @test_retrieve_feature_data_idx;
|
45 | 46 | funcs{end+1} = @test_set_units;
|
|
644 | 645 | assert(strcmp(t.open_metadata.name, 'testSection'));
|
645 | 646 | end
|
646 | 647 |
|
| 648 | +%% Test: Retrieve reference data by id or name |
| 649 | +function [] = test_retrieve_data( varargin ) |
| 650 | + f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite); |
| 651 | + b = f.create_block('testBlock', 'nixBlock'); |
| 652 | + |
| 653 | + pos(1,:) = [0, 0]; ext(1,:) = [0, 0]; % result 111 |
| 654 | + pos(2,:) = [1, 1]; ext(2,:) = [0, 3]; % result 122 123 124 |
| 655 | + pos(3,:) = [0, 2]; ext(3,:) = [2, 4]; % result 113 114 115 116 |
| 656 | + % 123 124 125 126 |
| 657 | + |
| 658 | + d_pos = b.create_data_array_from_data('positionsDA', 'nixDataArray', pos); |
| 659 | + d_pos.append_sampled_dimension(0); |
| 660 | + d_pos.append_sampled_dimension(0); |
| 661 | + |
| 662 | + d_ext = b.create_data_array_from_data('extentsDA', 'nixDataArray', ext); |
| 663 | + d_ext.append_sampled_dimension(0); |
| 664 | + d_ext.append_sampled_dimension(0); |
| 665 | + |
| 666 | + t = b.create_multi_tag('testMultiTag', 'nixMultiTag', d_pos); |
| 667 | + t.set_extents(d_ext); |
| 668 | + |
| 669 | + % create 2D reference data_arrays |
| 670 | + raw1 = [111, 112, 113, 114, 115, 116, 117, 118; ... |
| 671 | + 121, 122, 123, 124, 125, 126, 127, 128]; |
| 672 | + d1 = b.create_data_array_from_data('reference1', 'nixDataArray', raw1); |
| 673 | + d1.append_sampled_dimension(1); |
| 674 | + d1.append_sampled_dimension(1); |
| 675 | + |
| 676 | + raw2 = [211, 212, 213, 214, 215, 216, 217, 218; ... |
| 677 | + 221, 222, 223, 224, 225, 226, 227, 228]; |
| 678 | + d2 = b.create_data_array_from_data('reference2', 'nixDataArray', raw2); |
| 679 | + d2.append_sampled_dimension(1); |
| 680 | + d2.append_sampled_dimension(1); |
| 681 | + |
| 682 | + % add data_arrays as references to multi tag |
| 683 | + t.add_reference(d1); |
| 684 | + t.add_reference(d2); |
| 685 | + |
| 686 | + % test invalid position idx |
| 687 | + try |
| 688 | + t.retrieve_data(100, 'reference1'); |
| 689 | + catch ME |
| 690 | + assert(~isempty(strfind(ME.message, 'ounds of positions or extents')), ... |
| 691 | + 'Invalid position index failed'); |
| 692 | + end |
| 693 | + assert(exist('ME') == 1, 'Invalid position index fail, error not raised'); |
| 694 | + clear ME; |
| 695 | + |
| 696 | + % test invalid reference name |
| 697 | + try |
| 698 | + t.retrieve_data(0, 'I do not exist'); |
| 699 | + catch ME |
| 700 | + assert(~isempty(strfind(ME.message, 'no DataArray with the specified name or id')), ... |
| 701 | + 'Invalid reference name failed'); |
| 702 | + end |
| 703 | + assert(exist('ME') == 1, 'Invalid reference name fail, error not raised'); |
| 704 | + clear ME; |
| 705 | + |
| 706 | + assert(isequal(t.retrieve_data(0, d1.name), raw1(1:1)), 'Retrieve pos 1, ref 1 fail'); |
| 707 | + assert(isequal(t.retrieve_data(1, d1.id), raw1(2, 2:4)), 'Retrieve pos 2, ref 1 fail'); |
| 708 | + assert(isequal(t.retrieve_data(2, d2.id), raw2(1:2, 3:6)), 'Retrieve pos 3, ref 2 fail'); |
| 709 | +end |
| 710 | + |
647 | 711 | %% Test: Retrieve reference data by index
|
648 | 712 | function [] = test_retrieve_data_idx( varargin )
|
649 | 713 | f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
|
|
0 commit comments