'use strict'; /**

* @module Context
*/

/**

* Expose `Context`.
*/

module.exports = Context;

/**

* Initialize a new `Context`.
*
* @private
*/

function Context() {}

/**

* Set or get the context `Runnable` to `runnable`.
*
* @private
* @param {Runnable} runnable
* @return {Context} context
*/

Context.prototype.runnable = function(runnable) {

if (!arguments.length) {
  return this._runnable;
}
this.test = this._runnable = runnable;
return this;

};

/**

* Set or get test timeout `ms`.
*
* @private
* @param {number} ms
* @return {Context} self
*/

Context.prototype.timeout = function(ms) {

if (!arguments.length) {
  return this.runnable().timeout();
}
this.runnable().timeout(ms);
return this;

};

/**

* Set test timeout `enabled`.
*
* @private
* @param {boolean} enabled
* @return {Context} self
*/

Context.prototype.enableTimeouts = function(enabled) {

if (!arguments.length) {
  return this.runnable().enableTimeouts();
}
this.runnable().enableTimeouts(enabled);
return this;

};

/**

* Set or get test slowness threshold `ms`.
*
* @private
* @param {number} ms
* @return {Context} self
*/

Context.prototype.slow = function(ms) {

if (!arguments.length) {
  return this.runnable().slow();
}
this.runnable().slow(ms);
return this;

};

/**

* Mark a test as skipped.
*
* @private
* @throws Pending
*/

Context.prototype.skip = function() {

this.runnable().skip();

};

/**

* Set or get a number of allowed retries on failed tests
*
* @private
* @param {number} n
* @return {Context} self
*/

Context.prototype.retries = function(n) {

if (!arguments.length) {
  return this.runnable().retries();
}
this.runnable().retries(n);
return this;

};