From e9963c5ba3b487a812dd5be2d726691980ba0598 Mon Sep 17 00:00:00 2001 From: "Diego F.(EW7)" Date: Tue, 4 Oct 2016 09:38:38 -0300 Subject: [PATCH] Date/RegExp --- lib/discrepances.js | 15 +++++++++++++++ test/test.js | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/discrepances.js b/lib/discrepances.js index 399589b..b664da8 100644 --- a/lib/discrepances.js +++ b/lib/discrepances.js @@ -31,13 +31,28 @@ function getType(variable) { return typeof variable; } +function getClass(variable) { + if(variable instanceof Date) { return 'Date'; } + if(variable instanceof RegExp) { return 'RegExp'; } + if(variable instanceof Array) { return 'Array'; } + if(variable instanceof Object) { return 'Object'; } + throw new Error('undetected class type'); +} discrepances = function discrepances(a, b){ if(a === b){ return null; } var typeA = getType(a); var typeB = getType(b); + //console.log("typeA", typeA, "typeB", typeB) if(typeA === typeB) { + if(typeA==='object' || typeB==='object') { + var classA = getClass(a); + var classB = getClass(b); + if(classA !== classB) { + return {classes:[classA,classB], values:[a,b]}; + } + } if(typeA === 'number') { return {difference:a-b, values:[a,b]}; } diff --git a/test/test.js b/test/test.js index 71d5bff..6177db8 100644 --- a/test/test.js +++ b/test/test.js @@ -4,13 +4,15 @@ var JSON4all = require('json4all'); var expect = require('expect.js'); var discrepances = require('../lib/discrepances.js'); +var fechaActual = new Date(); + describe("discrepances", function(){ [ {a:4 , b:4 , expected: null }, {a:4 , b:5 , expected: {difference:-1 , values:[4, 5] }}, {a:"4" , b:4 , expected: {types:['string', 'number'], values:["4", 4] }}, {a:null , b:0 , expected: {types:['null' , 'number'], values:[null, 0] }}, - {skip:true, a:new Date() , b:/a/ , expected: {class:['Date' , 'RegExp'], values:[new Date(), /a/] }}, + {a:fechaActual , b:/a/ , expected: {classes:['Date' , 'RegExp'], values:[fechaActual, /a/] }}, {skip:true, a:new Date(2011,1,3), b:new Date(2011,1,4) , expected: {difference:'a definir', values:[new Date(2011,1,3), new Date(2011,1,4)] }}, {skip:true, a:[1,2,3,4,5] , b:[1,2,33,4,5,6] , expected: {array:{length:discrepances(5,6), 2:discrepances(3,33)} }}, {skip:true, a:{x:1, y:2} , b:{y:3, z:{zz:3}} , expected: {object:{x:{onlyLeft:1}, y:discrepances(2,3), z:{onlyRight:{zz:3}}} }},