function test_suite = test_clusterize()
% tests for cosmo_clusterize
%
% # 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_clusterize_basics
ds=cosmo_synthetic_dataset('size','normal','ntargets',1,'nchunks',1);
sample=ds.samples;
nh_struct=cosmo_cluster_neighborhood(ds,'progress',false);
nh=cosmo_convert_neighborhood(nh_struct,'matrix');
x=sample;
sample=x>2;
cl1=cosmo_clusterize(sample,nh);
assertEqual(cl1,{21,25});
nb=cosmo_convert_neighborhood(nh,'cell');
sample=round(x/2);
cl2=cosmo_clusterize(sample,nh);
assertEqual(cl2,{[1 11 9 14 17 21 22 23 26 30 25]',...
[3 6]',28});
% test exceptions
aet=@(varargin)assertExceptionThrown(@()...
cosmo_clusterize(varargin{:}),'');
aet('foo',[]);
aet(sample,[]);
aet(sample,-1);
aet('foo',nh);
aet(zeros([2 2 2 ]),nh);
aet([sample;sample],nh);
aet(sample,zeros([1 1 6]));
aet(sample,ones(1,7));
aet(sample,[true;false;true;true;true;false]);