function test_suite = test_dim_slice
% tests for cosmo_dim_slice
%
% # For CoSMoMVPA's copyright information and license terms, #
% # see the COPYING file distributed with CoSMoMVPA. #
try % assignment of 'localfunctions' is necessary in Matlab >= 2016
test_functions=localfunctions();
catch % no problem; early Matlab versions can use initTestSuite fine
end
initTestSuite;
function test_dim_slice_no_prune()
ds=cosmo_synthetic_dataset();
helper_test_dim_slice_(ds,[1 6 2],2);
helper_test_dim_slice_(ds,[1 6 2],1);
function test_dim_slice_prune()
ds=cosmo_synthetic_dataset();
helper_test_dim_slice_(ds,ds.fa.i~=2,2);
helper_test_dim_slice_(ds,ds.fa.i==3,2);
function helper_test_dim_slice_(varargin)
ds_sliced=cosmo_slice(varargin{:});
expected_result=cosmo_dim_prune(ds_sliced);
result=cosmo_helper_dim_slice_without_warning(varargin{:});
assertEqual(result,expected_result);
function result=cosmo_helper_dim_slice_without_warning(varargin)
warning_state=cosmo_warning();
warning_state_resetter=onCleanup(@()cosmo_warning(warning_state));
empty_state=warning_state;
empty_state.show_warnings=[];
cosmo_warning(empty_state);
cosmo_warning('off');
result=cosmo_dim_slice(varargin{:});
% deprecation warning must have been shown
w=cosmo_warning();
assert(~isempty(w.shown_warnings));
assert(iscellstr(w.shown_warnings));