function test_suite = test_strsplit
% tests for cosmo_strsplit
%
% # 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_strsplit_basics
aeq = @(a, varargin)assertEqual(cosmo_strsplit(varargin{:}), a);
aeq({'A', 'AbbAbA', 'AbA', 'A', 'Ab'}, 'A*AbbAbA*AbA*A*Ab', '*');
aeq({'', 'A', 'AbbAbA', '', 'AbA', 'A', 'Ab', ''}, '*A*AbbAbA**AbA*A*Ab*', '*');
aeq({'', 'bbAb', 'b', '*Ab'}, 'A*AbbAbA*AbA*A*Ab', 'A*A');
aeq('bbAb', 'A*AbbAbA*AbA*A*Ab', 'A*A', 2);
aeq('*Ab', 'A*AbbAbA*AbA*A*Ab', 'A*A', -1);
aeq({'bb', 'b'}, 'A*AbbAbA*AbA*A*Ab', 'A*A', 2, 'A');
aeq('bb', 'A*AbbAbA*AbA*A*Ab', 'A*A', 2, 'A', 1);
aeq({'a', 'b', 'c'}, ' a b c ');
aeq({'', 'a', 'b', '', 'c', '', '', ''}, ' a b c ', ' ');
aeq({' a b', 'c', ' '}, ' a b c ', ' ');
aeq({'a', 'b', 'c'}, sprintf('a\nb\t\tc\t\n\t'));
aeq({'a', 'b', '', 'c'}, sprintf('a\tb\t\tc'), '\t');
aeq({'abcd'}, 'abcd', 'e');
aeq({''}, '', '');
aeq({''}, '', 'x');
aeq({'abc'}, 'abc', '');
aet = @(varargin)assertExceptionThrown(@() ...
cosmo_strsplit(varargin{:}), '');
aet('A*A', 'A', 1:2);
aet('A*A', struct());
aet('A*A', {});
aet(struct(), 'A*A');
aet({}, 'A*A');
aet({});