Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions test/helpers/test/time.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const time = require('../time');
const shouldFail = require('../shouldFail');
const { advanceBlock } = require('../advanceToBlock');

const BigNumber = web3.BigNumber;
require('chai')
.use(require('chai-bignumber')(BigNumber))
.should();

describe('time', function () {
const TOLERANCE_SECONDS = 1;

beforeEach(async function () {
await advanceBlock();
this.start = await time.latest();
});

describe('increase', function () {
it('increases time by a duration', async function () {
await time.increase(time.duration.hours(1));

const end = this.start + time.duration.hours(1);
(await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS);
});

it('throws with negative durations', async function () {
await shouldFail(time.increase(-1));
});
});

describe('increaseTo', function () {
it('increases time to a time in the future', async function () {
const end = this.start + time.duration.hours(1);
await time.increaseTo(end);
(await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS);
});

it('throws with a time in the past', async function () {
await shouldFail(time.increaseTo(this.start - 30));
});
});

describe('duration', function () {
it('converts seconds to seconds', function () {
time.duration.seconds(1).should.equal(1);
});

it('converts minutes to seconds', function () {
time.duration.minutes(1).should.equal(60);
});

it('converts hours to seconds', function () {
time.duration.hours(1).should.equal(60 * 60);
});

it('converts days to seconds', function () {
time.duration.days(1).should.equal(60 * 60 * 24);
});

it('converts weeks to seconds', function () {
time.duration.weeks(1).should.equal(60 * 60 * 24 * 7);
});

it('converts years to seconds', function () {
time.duration.years(1).should.equal(60 * 60 * 24 * 365);
});
});
});
4 changes: 3 additions & 1 deletion test/helpers/time.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ function increase (duration) {
const id = Date.now();

return new Promise((resolve, reject) => {
if (duration < 0) throw Error(`Cannot increase time by a negative amount (${duration})`);

web3.currentProvider.sendAsync({
jsonrpc: '2.0',
method: 'evm_increaseTime',
Expand Down Expand Up @@ -40,7 +42,7 @@ function increase (duration) {
async function increaseTo (target) {
const now = (await latest());

if (target < now) throw Error(`Cannot increase current time(${now}) to a moment in the past(${target})`);
if (target < now) throw Error(`Cannot increase current time (${now}) to a moment in the past (${target})`);
const diff = target - now;
return increase(diff);
}
Expand Down