'use strict';
require('../common');
var assert = require('assert');

// the default behavior, return an Array "tuple" of numbers
var tuple = process.hrtime();

// validate the default behavior
validateTuple(tuple);

// validate that passing an existing tuple returns another valid tuple
validateTuple(process.hrtime(tuple));

// test that only an Array may be passed to process.hrtime()
assert.throws(function() {
  process.hrtime(1);
});

function validateTuple(tuple) {
  assert(Array.isArray(tuple));
  assert.equal(2, tuple.length);
  tuple.forEach(function(v) {
    assert.equal('number', typeof v);
    assert(isFinite(v));
  });
}

const diff = process.hrtime([0, 1e9 - 1]);
assert(diff[1] >= 0);  // https://github.com/nodejs/node/issues/4751