TimersBlockNumberImpl.test.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const { BN, time } = require('@openzeppelin/test-helpers');
  2. const { expect } = require('chai');
  3. const TimersBlockNumberImpl = artifacts.require('TimersBlockNumberImpl');
  4. contract('TimersBlockNumber', function (accounts) {
  5. beforeEach(async function () {
  6. this.instance = await TimersBlockNumberImpl.new();
  7. this.now = await web3.eth.getBlock('latest').then(({ number }) => number);
  8. });
  9. it('unset', async function () {
  10. expect(await this.instance.getDeadline()).to.be.bignumber.equal('0');
  11. expect(await this.instance.isUnset()).to.be.equal(true);
  12. expect(await this.instance.isStarted()).to.be.equal(false);
  13. expect(await this.instance.isPending()).to.be.equal(false);
  14. expect(await this.instance.isExpired()).to.be.equal(false);
  15. });
  16. it('pending', async function () {
  17. await this.instance.setDeadline(this.now + 3);
  18. expect(await this.instance.getDeadline()).to.be.bignumber.equal(new BN(this.now + 3));
  19. expect(await this.instance.isUnset()).to.be.equal(false);
  20. expect(await this.instance.isStarted()).to.be.equal(true);
  21. expect(await this.instance.isPending()).to.be.equal(true);
  22. expect(await this.instance.isExpired()).to.be.equal(false);
  23. });
  24. it('expired', async function () {
  25. await this.instance.setDeadline(this.now - 3);
  26. expect(await this.instance.getDeadline()).to.be.bignumber.equal(new BN(this.now - 3));
  27. expect(await this.instance.isUnset()).to.be.equal(false);
  28. expect(await this.instance.isStarted()).to.be.equal(true);
  29. expect(await this.instance.isPending()).to.be.equal(false);
  30. expect(await this.instance.isExpired()).to.be.equal(true);
  31. });
  32. it('reset', async function () {
  33. await this.instance.reset();
  34. expect(await this.instance.getDeadline()).to.be.bignumber.equal(new BN(0));
  35. expect(await this.instance.isUnset()).to.be.equal(true);
  36. expect(await this.instance.isStarted()).to.be.equal(false);
  37. expect(await this.instance.isPending()).to.be.equal(false);
  38. expect(await this.instance.isExpired()).to.be.equal(false);
  39. });
  40. it('fast forward', async function () {
  41. await this.instance.setDeadline(this.now + 3);
  42. expect(await this.instance.isPending()).to.be.equal(true);
  43. expect(await this.instance.isExpired()).to.be.equal(false);
  44. await time.advanceBlockTo(this.now + 3);
  45. expect(await this.instance.isPending()).to.be.equal(false);
  46. expect(await this.instance.isExpired()).to.be.equal(true);
  47. });
  48. });