function test_suite = test_split
% tests for cosmo_split
%
% # 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_split_()
ds=cosmo_synthetic_dataset();
sp1=cosmo_split(ds,'chunks');
for k=1:numel(sp1)
s=sp1{k};
assertEqual(s, cosmo_slice(ds,(k*2+[-1 0])));
assert(all(s.sa.chunks==k));
end
sp2=cosmo_split(ds,'targets');
for k=1:numel(sp2)
s=sp2{k};
assertEqual(s, cosmo_slice(ds,k+[0 2 4]));
end
sp3=cosmo_split(ds,{'targets'});
assertEqual(sp2,sp3);
sp4=cosmo_split(ds,{'targets'},1);
assertEqual(sp2,sp4);
sp5=cosmo_split(ds,'i',2);
for k=1:numel(sp5)
s=sp5{k};
assertEqual(s, cosmo_slice(ds,k+[0 3],2));
end
sp6=cosmo_split(ds,{'chunks','targets'});
for k=1:numel(sp5)
s=sp6{k};
assertEqual(s, cosmo_slice(ds,k,1));
end
sp7=cosmo_split(ds,{'j','i','k'},2);
for k=1:numel(sp5)
s=sp7{k};
assertEqual(s, cosmo_slice(ds,k,2));
end
assertEqual(cosmo_split(ds,[],1),{ds});
assertEqual(cosmo_split(ds,[],2),{ds});
aet=@(varargin)assertExceptionThrown(@()...
cosmo_split(varargin{:}),'');
aet(ds,'i',1);
aet(ds,'chunks',2);
aet(ds,'chunks',3);
ds.sa.targets=[ds.sa.targets ds.sa.targets];
assertExceptionThrown(@()cosmo_split(ds,'targets',1),'');
x=struct();
x.samples=randn(4);
aet(x,'chunks');
x.sa=struct();
aet(x,'chunks');