Mercurial > hg > ltpda
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