fix for angular.Object.equals to handle equals({},null)

This commit is contained in:
Igor Minar 2011-01-13 07:55:31 -08:00
parent 9ccd2f0412
commit b0be87f663
2 changed files with 23 additions and 0 deletions

View file

@ -631,6 +631,7 @@ function copy(source, destination){
*/ */
function equals(o1, o2) { function equals(o1, o2) {
if (o1 == o2) return true; if (o1 == o2) return true;
if (o1 === null || o2 === null) return false;
var t1 = typeof o1, t2 = typeof o2, length, key, keySet; var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
if (t1 == t2 && t1 == 'object') { if (t1 == t2 && t1 == 'object') {
if (o1 instanceof Array) { if (o1 instanceof Array) {

View file

@ -89,6 +89,28 @@ describe('equals', function(){
it('should ignore functions', function(){ it('should ignore functions', function(){
expect(equals({func: function() {}}, {bar: function() {}})).toEqual(true); expect(equals({func: function() {}}, {bar: function() {}})).toEqual(true);
}); });
it('should work well with nulls', function() {
expect(equals(null, '123')).toBe(false);
expect(equals('123', null)).toBe(false);
var obj = {foo:'bar'};
expect(equals(null, obj)).toBe(false);
expect(equals(obj, null)).toBe(false);
expect(equals(null, null)).toBe(true);
});
it('should work well with undefined', function() {
expect(equals(undefined, '123')).toBe(false);
expect(equals('123', undefined)).toBe(false);
var obj = {foo:'bar'};
expect(equals(undefined, obj)).toBe(false);
expect(equals(obj, undefined)).toBe(false);
expect(equals(undefined, undefined)).toBe(true);
});
}); });
describe('parseKeyValue', function() { describe('parseKeyValue', function() {