diff --git a/lib/discrepances.js b/lib/discrepances.js index 7b9b274..5537a9d 100644 --- a/lib/discrepances.js +++ b/lib/discrepances.js @@ -202,6 +202,10 @@ function DiscrepancesTester(tester){ this.message = bestGlobals.functionName(tester); } +function getName(type, variable, clase) { + return type==='object' && variable.constructor ? constructorName(variable):clase; +} + discrepances = function discrepances(a, b, opts){ opts = changing(defaultOpts, opts||{}); if(a === b){ return null; } @@ -221,12 +225,14 @@ discrepances = function discrepances(a, b, opts){ if(typeA==='object' && typeB==='object') { var classA = getClassOnlyForSomeOfBuiltIns(a, opts); var classB = getClassOnlyForSomeOfBuiltIns(b, opts); + var nameA = getName(typeA,a,classA); + var nameB = getName(typeB,b,classB); if(classA !== classB) { - var r = {classes:[classA,classB]}; + var r = {classes:[nameA,nameB]}; if(isSimpleValue(classA) && isSimpleValue(classB)) { r.values=[a,b]; } return r; } else if(!opts.duckTyping && a.constructor !== b.constructor) { - return {classes:[constructorName(a),constructorName(b)]}; + return {classes:[nameA,nameB]}; } else { return compareClasses(classA, a, b, opts); } diff --git a/test/test.js b/test/test.js index febde8e..4d6c12b 100644 --- a/test/test.js +++ b/test/test.js @@ -65,7 +65,7 @@ describe("discrepances", function(){ {a:undefined , b:false , expect:{types:['undefined', 'boolean'], values:[undefined, false]} }, {a:new Example({uno:1}) , b:new Example({uno:1}) , expect:null }, {a:new Example({uno:1}) , b:{uno:1} , expect:{classes:['Example', 'Object']} }, - {skip:'#5', a:new Example({uno:1}) , b:[1,2] , expect:{classes:['Example', 'Array']} }, + {a:new Example({uno:1}) , b:[1,2] , expect:{classes:['Example', 'Array']} }, {a:new Example({uno:1}) , b:new Example({uno:2}) , expect:{object:{"uno":discrepances(1,2)}} }, {a:{0:1, length:1} , b:{0:1,1:2,length:2} , expect:{object:{length:discrepances(1,2), 1:{onlyRight:2}}}