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');