function test_suite = test_strjoin
% tests for cosmo_strjoin
%
% # 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_strjoin_basics
aeq=@(a,varargin)assertEqual(cosmo_strjoin(varargin{:}),a);
aeq('a b cc',{'a','b','cc'});
aeq('a>#<b>#<cc',{'a','b','cc'}, '>#<');
aeq(sprintf('a\tb\tcc'),{'a','b','cc'}, '\t');
aeq('a\b\cc',{'a','b','cc'}, '\\');
aeq('a+b=cc',{'a','b','cc'}, {'+','='});
function test_strjoin_exceptions
aet=@(varargin)assertExceptionThrown(@()...
cosmo_strjoin(varargin{:}),'');
% firat argument must be cell with strings
aet('a');
aet(struct)
aet(2);
aet([]);
aet({2});
% second argument must be string or cell with strings
aet({'a','b','c'},2);
aet({'a','b','c'},struct);
aet({'a','b','c'},[]);
aet({'a','b','c'},[]);
aet({'a','b','c'},{'x'});
aet({'a','b','c'},{1,2});