53 lines
1.9 KiB
Matlab
53 lines
1.9 KiB
Matlab
function assertExceptionThrown(f, expectedId, custom_message)
|
|
%assertExceptionThrown Assert that specified exception is thrown
|
|
% assertExceptionThrown(F, expectedId) calls the function handle F with no
|
|
% input arguments. If the result is a thrown exception whose identifier is
|
|
% expectedId, then assertExceptionThrown returns silently. If no exception is
|
|
% thrown, then assertExceptionThrown throws an exception with identifier equal
|
|
% to 'assertExceptionThrown:noException'. If a different exception is thrown,
|
|
% then assertExceptionThrown throws an exception identifier equal to
|
|
% 'assertExceptionThrown:wrongException'.
|
|
%
|
|
% assertExceptionThrown(F, expectedId, msg) prepends the string msg to the
|
|
% assertion message.
|
|
%
|
|
% Example
|
|
% -------
|
|
% % This call returns silently.
|
|
% f = @() error('a:b:c', 'error message');
|
|
% assertExceptionThrown(f, 'a:b:c');
|
|
%
|
|
% % This call returns silently.
|
|
% assertExceptionThrown(@() sin, 'MATLAB:minrhs');
|
|
%
|
|
% % This call throws an error because calling sin(pi) does not error.
|
|
% assertExceptionThrown(@() sin(pi), 'MATLAB:foo');
|
|
|
|
% Steven L. Eddins
|
|
% Copyright 2008-2010 The MathWorks, Inc.
|
|
|
|
noException = false;
|
|
try
|
|
f();
|
|
noException = true;
|
|
|
|
catch exception
|
|
if ~strcmp(exception.identifier, expectedId)
|
|
message = sprintf('Expected exception %s but got exception %s.', ...
|
|
expectedId, exception.identifier);
|
|
if nargin >= 3
|
|
message = sprintf('%s\n%s', custom_message, message);
|
|
end
|
|
throwAsCaller(MException('assertExceptionThrown:wrongException', ...
|
|
'%s', message));
|
|
end
|
|
end
|
|
|
|
if noException
|
|
message = sprintf('Expected exception "%s", but none thrown.', ...
|
|
expectedId);
|
|
if nargin >= 3
|
|
message = sprintf('%s\n%s', custom_message, message);
|
|
end
|
|
throwAsCaller(MException('assertExceptionThrown:noException', '%s', message));
|
|
end
|