function test_suite=test_synthetic_dataset
% tests for cosmo_synthetic_dataset
%
% # 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_synthetic_dataset_basics()
ds=cosmo_synthetic_dataset();
assertElementsAlmostEqual(ds.samples([1 6,1 6]),...
[2.0317 -1.3265 2.0317 -1.3265],...
'absolute',1e-4);
assertEqual(size(ds.samples),[6 6]);
assertEqual(sort(fieldnames(ds)),{'a';'fa';'sa';'samples'});
assertEqual(ds.sa.targets,[1 2 1 2 1 2]');
assertEqual(ds.sa.chunks,[1 1 2 2 3 3]');
ds=cosmo_synthetic_dataset('seed',2);
assertElementsAlmostEqual(ds.samples([1 6,1 6]),...
[2.0801 -0.4390 2.0801 -0.4390],...
'absolute',1e-4);
ds=cosmo_synthetic_dataset('ntargets',3,'nchunks',2);
assertEqual(ds.sa.targets,[1 2 3 1 2 3]');
assertEqual(ds.sa.chunks,[1 1 1 2 2 2]');
ds=cosmo_synthetic_dataset('ntargets',3,'nchunks',2,'chunks',4);
assertEqual(ds.sa.targets,[1 2 3 1 2 3]');
assertEqual(ds.sa.chunks,[4 4 4 4 4 4]');
function test_synthetic_dataset_meeg()
ds=cosmo_synthetic_dataset('type','meeg',...
'sens','neuromag306_planar');
assertEqual(ds.a.fdim.values{1},{'MEG0112','MEG0113','MEG0212'});
ds=cosmo_synthetic_dataset('type','meeg',...
'sens','neuromag306_axial');
assertEqual(ds.a.fdim.values{1},{'MEG0111','MEG0211','MEG0311'});
function test_synthetic_dataset_source()
ds=cosmo_synthetic_dataset('type','source','data_field','mom');
assertEqual(ds.a.fdim.labels,{'pos','mom','time'});
assertEqual(ds.a.fdim.values{2},{'x','y','z'});
function test_synthetic_dataset_exceptions()
aet=@(varargin)assertExceptionThrown(@()...
cosmo_synthetic_dataset(varargin{:}),'');
aet('size','foo');
aet('type','source','data_field','foo');
aet('type','foo');
aet('type','meeg','sens','foo');
aet('targets',[2 2]);
aet('targets',1.5);
aet('type','meeg','sens','neuromag306_foo');