diff m-toolbox/classes/tests/@Assert/objectEqualsWithException.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/tests/@Assert/objectEqualsWithException.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,55 @@
+% OBJECTEQUALSWITHEXCEPTION Assert that two ltpda_obj objects are equal with an exception list.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: Assert that two ltpda_obj objects are equal with an
+%              exception list.
+%              objectEquals(A, B) throws an AssertionFailed exception if
+%              eq(A,B, exception_list) is not equal. A and B must have the
+%              same class and the same length.
+%
+% COMMAND:     Assert.objectEqualsWithException(val1, val2, exceptions)
+%              Assert.objectEqualsWithException(val1, val2, exceptions, message)
+%
+% EXCEPTIONS:  - a cell array with the exceptions.
+%              - a PLIST with the parameter 'Exceptions' for the key and a
+%                cell array with exceptions for the value.
+%
+% VERSION:     $Id: objectEqualsWithException.m,v 1.1 2011/06/20 16:32:56 ingo Exp $
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function objectEqualsWithException(val1, val2, ex, varargin)
+  
+  % Check number in input arguments
+  if nargin < 3
+    Assert.fail('This function needs at least three inputs.');
+  end
+  
+  % Check class of the input arguments
+  if ~strcmp(class(val1), class(val2))
+    Assert.fail('The input arguments must be from the same class.');
+  end
+  
+  % Check class of the input arguments
+  if ~isa(val1, 'ltpda_obj')
+    Assert.fail('The input arguments must be derived from the ltpda_obj class.');
+  end
+  
+  % Check the exception list
+  if isa(ex, 'plist') && ex.isparam('Exceptions')
+    ex = ex.find('Exceptions');
+  elseif iscell(ex)
+    % Don't do anything
+  else
+    Assert.fail('The exception list must be a cell array or a PLIST.');
+  end
+  
+  % Check the length of the inputs
+  if numel(val1) ~= numel(val2)
+    Assert.fail('The input arguments don''t have the same length.');
+  end
+  
+  if ~eq(val1, val2, ex{:})
+    Assert.fail(varargin{:});
+  end
+  
+end