Created
February 16, 2016 09:24
-
-
Save Comandeer/9c47d8360d499636f6e7 to your computer and use it in GitHub Desktop.
YUITest.ObjectAssert.areDeepEqual method
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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