function assertEqual(A, B, custom_message) %assertEqual Assert that inputs are equal % assertEqual(A, B) throws an exception if A and B are not equal. A and B % must have the same class and sparsity to be considered equal. % % assertEqual(A, B, MESSAGE) prepends the string MESSAGE to the assertion % message if A and B are not equal. % % Examples % -------- % % This call returns silently. % assertEqual([1 NaN 2], [1 NaN 2]); % % % This call throws an error. % assertEqual({'A', 'B', 'C'}, {'A', 'foo', 'C'}); % % See also assertElementsAlmostEqual, assertVectorsAlmostEqual % Steven L. Eddins % Copyright 2008-2010 The MathWorks, Inc. if nargin < 3 custom_message = ''; end if ~ (issparse(A) == issparse(B)) message = xunit.utils.comparisonMessage(custom_message, ... 'One input is sparse and the other is not.', A, B); throwAsCaller(MException('assertEqual:sparsityNotEqual', '%s', message)); end if ~strcmp(class(A), class(B)) message = xunit.utils.comparisonMessage(custom_message, ... 'The inputs differ in class.', A, B); throwAsCaller(MException('assertEqual:classNotEqual', '%s', message)); end if ~isequalwithequalnans(A, B) message = xunit.utils.comparisonMessage(custom_message, ... 'Inputs are not equal.', A, B); throwAsCaller(MException('assertEqual:nonEqual', '%s', message)); end