UNPKG

breaking

Version:

helper suit, for create and mock rest api, test api

40 lines (36 loc) 1.15 kB
var patternEqual, typeEqual, _; _ = require('lodash'); typeEqual = exports.typeEqual = function(a, b) { return (typeof a) === (typeof b); }; patternEqual = exports.patternEqual = function(pattern, target) { if (_.isArray(pattern) && _.isArray(target)) { return patternEqual(pattern[0], target[0]); } return _.every(pattern, function(patt, key) { var options, targ; if (!target) { throw new Error("PatternEqual Error: pattern = " + (JSON.stringify(pattern)) + "(" + (typeof pattern) + "), but res = " + targ + "(" + (typeof targ) + ")."); return false; } options = { optional: false }; if (key.slice(0, 1) === '?') { options.optional = true; key = key.slice(1); } targ = target[key]; if (!targ && options.optional) { return true; } if (!typeEqual(patt, targ)) { throw new Error("PatternEqual Error: pattern." + key + " = " + patt + "(" + (typeof patt) + "), but res." + key + " = " + targ + "(" + (typeof targ) + ")."); return false; } if (_.isObject(patt)) { return patternEqual(patt, targ); } return true; }); };