Skip to content

Instantly share code, notes, and snippets.

@Comandeer
Created February 16, 2016 09:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Comandeer/9c47d8360d499636f6e7 to your computer and use it in GitHub Desktop.
Save Comandeer/9c47d8360d499636f6e7 to your computer and use it in GitHub Desktop.
YUITest.ObjectAssert.areDeepEqual method
// Based on http://yuilibrary.com/yui/docs/api/files/test_js_ObjectAssert.js.html#l12.
YUITest.ObjectAssert.areDeepEqual = function( expected, actual, message ) {
var expectedKeys = YUITest.Object.keys(expected),
actualKeys = YUITest.Object.keys(actual),
areEqual = YUITest.ObjectAssert.areEqual;
YUITest.Assert._increment();
// First check keys array length.
if ( expectedKeys.length != actualKeys.length ) {
YUITest.Assert.fail( YUITest.Assert._formatMessage(message,
'Object should have ' + expectedKeys.length + ' keys but has ' + actualKeys.length ) );
}
// Then check values.
for ( var name in expected ) {
if ( expected.hasOwnProperty( name ) ) {
if ( typeof expected[ name ] === 'object' ) {
areEqual( expected[ name ], actual[ name ] );
}
else if ( expected[ name ] !== actual[ name ] ) {
throw new YUITest.ComparisonFailure( YUITest.Assert._formatMessage( message,
'Values should be equal for property ' + name ), expected[ name ], actual[ name ] );
}
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment