UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

34 lines (33 loc) 1.15 kB
import { safeNumberToString, safeSubstring } from '../../../utils/globals.js'; const safeNumberParseInt = Number.parseInt; export function natToStringifiedNatMapper(options) { const [style, v] = options; switch (style) { case 'oct': return `0${safeNumberToString(v, 8)}`; case 'hex': return `0x${safeNumberToString(v, 16)}`; case 'dec': default: return `${v}`; } } export function tryParseStringifiedNat(stringValue, radix) { const parsedNat = safeNumberParseInt(stringValue, radix); if (safeNumberToString(parsedNat, radix) !== stringValue) { throw new Error('Invalid value'); } return parsedNat; } export function natToStringifiedNatUnmapper(value) { if (typeof value !== 'string') { throw new Error('Invalid type'); } if (value.length >= 2 && value[0] === '0') { if (value[1] === 'x') { return ['hex', tryParseStringifiedNat(safeSubstring(value, 2), 16)]; } return ['oct', tryParseStringifiedNat(safeSubstring(value, 1), 8)]; } return ['dec', tryParseStringifiedNat(value, 10)]; }