function test_suite = test_isequaln
% tests for cosmo_isequaln
%
% # 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 is_eq_diff_cell = get_eq_diff_cells()
x = randn();
y = x + 1;
s = struct();
s.a = x;
s.b = 'foo';
s.c = [NaN NaN];
is_eq = { ...
x, x; ...
{x}, {x}; ...
{x, x}, {x, x}; ...
NaN, NaN; ...
[NaN, NaN, 2], [NaN, NaN, 2] ...
};
is_diff = { ...
x, y; ...
{x}, {y}; ...
{x, x}, {x, y}; ...
{x, x}, {x; x}; ...
x, NaN; ...
NaN, x; ...
[NaN, 2, NaN], [NaN, NaN, 2]; ...
[NaN, 2, NaN], [NaN; 2; NaN]; ...
s, x ...
};
is_eq_diff_cell = {is_eq, is_diff};
function test_isequaln_regression()
is_eq_diff_cell = get_eq_diff_cells();
for col = 1:2
is_eq = col == 1;
value_cell = is_eq_diff_cell{col};
for row = 1:size(value_cell, 1)
args = value_cell(row, :);
assertEqual(is_eq, cosmo_isequaln(args{:}));
end
end
function test_isequaln_compare_builtin_isequaln
helper_test_comparison('isequaln');
function test_isequaln_compare_builtin_isequalwithequalnans
helper_test_comparison('isequalwithequalnans');
function helper_test_comparison(func_name)
ext_name = sprintf('!%s', func_name);
if cosmo_skip_test_if_no_external(ext_name)
return
end
if cosmo_wtf('is_octave')
warning_state = warning();
warning_resetter = onCleanup(@()warning(warning_state));
warning('off', 'Octave:deprecated-keyword');
warning('off', 'Octave:deprecated-function');
end
is_eq_diff_cell = get_eq_diff_cells();
all_eq_diff = cat(1, is_eq_diff_cell{:});
func = str2func(func_name);
for row = 1:size(all_eq_diff, 1)
args = all_eq_diff(row, :);
assertEqual(cosmo_isequaln(args{:}), func(args{:}));
end