| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [1e5], |
| objectToTest: [ |
| 'object', |
| 'null', |
| 'array', |
| 'function', |
| ], |
| }, { |
| flags: ['--expose-internals'], |
| }); |
| |
| function getObjectToTest(objectToTest) { |
| switch (objectToTest) { |
| case 'object': |
| return { foo: 'bar' }; |
| case 'null': |
| return null; |
| case 'array': |
| return ['foo', 'bar']; |
| case 'function': |
| return () => 'foo'; |
| default: |
| throw new Error(`Value ${objectToTest} is not a valid objectToTest.`); |
| } |
| } |
| |
| function getOptions(objectToTest) { |
| const { |
| kValidateObjectAllowNullable, |
| kValidateObjectAllowArray, |
| kValidateObjectAllowFunction, |
| } = require('internal/validators'); |
| |
| switch (objectToTest) { |
| case 'object': |
| return 0; |
| case 'null': |
| return kValidateObjectAllowNullable; |
| case 'array': |
| return kValidateObjectAllowArray; |
| case 'function': |
| return kValidateObjectAllowFunction; |
| default: |
| throw new Error(`Value ${objectToTest} is not a valid objectToTest.`); |
| } |
| } |
| |
| let _validateResult; |
| |
| function main({ n, objectToTest }) { |
| const { |
| validateObject, |
| } = require('internal/validators'); |
| |
| const value = getObjectToTest(objectToTest); |
| const options = getOptions(objectToTest); |
| |
| bench.start(); |
| for (let i = 0; i < n; ++i) { |
| try { |
| _validateResult = validateObject(value, 'Object', options); |
| } catch { |
| _validateResult = undefined; |
| } |
| } |
| bench.end(n); |
| |
| assert.ok(!_validateResult); |
| } |