beforeEach(function() { | |
this.addMatchers({ | |
toExactlyMatch: function(expected) { | |
var a1, a2, | |
l, i, | |
key, | |
actual = this.actual; | |
var getKeys = function(o) { | |
var a = []; | |
for(key in o) { | |
if(o.hasOwnProperty(key)) { | |
a.push(key); | |
} | |
} | |
return a; | |
} | |
a1 = getKeys(actual); | |
a2 = getKeys(expected); | |
l = a1.length; | |
if(l !== a2.length) { | |
return false; | |
} | |
for(i = 0; i < l; i++) { | |
key = a1[i]; | |
expect(key).toEqual(a2[i]); | |
expect(actual[key]).toEqual(expected[key]); | |
} | |
return true; | |
} | |
}) | |
}); |