UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

27 lines (26 loc) 881 B
import { cloneMethod, hasCloneMethod } from '../../symbols.js'; const safeObjectDefineProperty = Object.defineProperty; export class Value { constructor(value_, context, customGetValue = undefined) { this.value_ = value_; this.context = context; this.hasToBeCloned = customGetValue !== undefined || hasCloneMethod(value_); this.readOnce = false; if (this.hasToBeCloned) { safeObjectDefineProperty(this, 'value', { get: customGetValue !== undefined ? customGetValue : this.getValue }); } else { this.value = value_; } } getValue() { if (this.hasToBeCloned) { if (!this.readOnce) { this.readOnce = true; return this.value_; } return this.value_[cloneMethod](); } return this.value_; } }