function test_suite = test_pdist
% tests for cosmo_pdist
%
% # 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_pdist_()
data = [1 4 3; 2 2 3; 4 2 0; 0 1 1];
avae = @(x, y)assertVectorsAlmostEqual(x, y, 'relative', 1e-4);
d_eucl = [2.2361 4.6904 3.7417 3.6056 3.0000 4.2426];
d_corr = [0.8110 1.6547 0.0551 1.8660 0.5000 1.8660];
avae(cosmo_pdist(data), d_eucl);
avae(cosmo_pdist(data, 'euclidean'), d_eucl);
avae(cosmo_pdist(data, 'correlation'), d_corr);
has_matlab_pdist = cosmo_check_external('@stats', false);
has_octave_pdist = cosmo_wtf('is_octave') && ~isempty(which('pdist'));
if has_matlab_pdist || has_octave_pdist
avae(pdist(data), d_eucl);
avae(pdist(data, 'euclidean'), d_eucl);
avae(pdist(data, 'cosine'), cosmo_pdist(data, 'cosine'));
else
if cosmo_wtf('is_octave')
desc = 'Octave:undefined-function';
else
desc = 'MATLAB:UndefinedFunction';
end
assertExceptionThrown(@()cosmo_pdist(data, 'cosine'), desc);
end