diff --git a/contracts/mocks/AutoIncrementingImpl.sol b/contracts/mocks/AutoIncrementingImpl.sol deleted file mode 100644 index ea15e8e39..000000000 --- a/contracts/mocks/AutoIncrementingImpl.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.4.24; - -import "../utils/AutoIncrementing.sol"; - - -contract AutoIncrementingImpl { - using AutoIncrementing for AutoIncrementing.Counter; - - uint256 public theId; - - // use whatever key you want to track your counters - mapping(string => AutoIncrementing.Counter) private _counters; - - function doThing(string key) - public - returns (uint256) - { - theId = _counters[key].nextId(); - return theId; - } -} diff --git a/contracts/mocks/CounterImpl.sol b/contracts/mocks/CounterImpl.sol new file mode 100644 index 000000000..222c0526e --- /dev/null +++ b/contracts/mocks/CounterImpl.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.4.24; + +import "../utils/Counter.sol"; + + +contract CounterImpl { + using Counter for Counter.Index; + + uint256 public theId; + + // use whatever key you want to track your counters + mapping(string => Counter.Index) private _counters; + + function doThing(string key) + public + returns (uint256) + { + theId = _counters[key].next(); + return theId; + } +} diff --git a/contracts/utils/AutoIncrementing.sol b/contracts/utils/Counter.sol similarity index 59% rename from contracts/utils/AutoIncrementing.sol rename to contracts/utils/Counter.sol index f739e539d..516b798f0 100644 --- a/contracts/utils/AutoIncrementing.sol +++ b/contracts/utils/Counter.sol @@ -2,28 +2,28 @@ pragma solidity ^0.4.24; /** - * @title AutoIncrementing + * @title Counter * @author Matt Condon (@shrugs) - * @dev Provides an auto-incrementing uint256 id acquired by the `Counter#nextId` getter. + * @dev Provides an incrementing uint256 id acquired by the `Index#next` getter. * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really. * - * Include with `using AutoIncrementing for AutoIncrementing.Counter;` + * Include with `using Counter for Counter.Index;` * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity. * Does not protect from overflows, but if you have 2^256 ids, you have other problems. * (But actually, it's generally impossible to increment a counter this many times, energy wise * so it's not something you have to worry about.) */ -library AutoIncrementing { +library Counter { - struct Counter { - uint256 prevId; // default: 0 + struct Index { + uint256 currentId; // default: 0 } - function nextId(Counter storage counter) + function next(Index storage index) internal returns (uint256) { - counter.prevId = counter.prevId + 1; - return counter.prevId; + index.currentId = index.currentId + 1; + return index.currentId; } } diff --git a/test/AutoIncrementing.test.js b/test/Counter.test.js similarity index 85% rename from test/AutoIncrementing.test.js rename to test/Counter.test.js index 6b4815830..ca661c113 100644 --- a/test/AutoIncrementing.test.js +++ b/test/Counter.test.js @@ -1,4 +1,5 @@ -const AutoIncrementing = artifacts.require('AutoIncrementingImpl'); + +const Counter = artifacts.require('CounterImpl'); require('chai') .use(require('chai-bignumber')(web3.BigNumber)) @@ -8,9 +9,9 @@ const EXPECTED = [1, 2, 3, 4]; const KEY1 = web3.sha3('key1'); const KEY2 = web3.sha3('key2'); -contract('AutoIncrementing', function ([_, owner]) { +contract('Counter', function ([_, owner]) { beforeEach(async function () { - this.mock = await AutoIncrementing.new({ from: owner }); + this.mock = await Counter.new({ from: owner }); }); context('custom key', async function () {