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));