UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

54 lines (53 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSlicesForString = createSlicesForString; const globals_1 = require("../../../utils/globals"); const dangerousStrings = [ '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', '__proto__', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'apply', 'arguments', 'bind', 'call', 'caller', 'length', 'name', 'prototype', 'key', 'ref', ]; function computeCandidateString(dangerous, charArbitrary, stringSplitter) { let candidate; try { candidate = stringSplitter(dangerous); } catch (err) { return undefined; } for (const entry of candidate) { if (!charArbitrary.canShrinkWithoutContext(entry)) { return undefined; } } return candidate; } function createSlicesForString(charArbitrary, stringSplitter) { const slicesForString = []; for (const dangerous of dangerousStrings) { const candidate = computeCandidateString(dangerous, charArbitrary, stringSplitter); if (candidate !== undefined) { (0, globals_1.safePush)(slicesForString, candidate); } } return slicesForString; }