InitialRate must be strictly larger than finalRate. (#1441)
(cherry picked from commit a936cbf5fb)
This commit is contained in:
committed by
Leo Arias
parent
47b5d61844
commit
ecae7608f9
@ -22,11 +22,19 @@ contract IncreasingPriceCrowdsale is TimedCrowdsale {
|
|||||||
*/
|
*/
|
||||||
constructor(uint256 initialRate, uint256 finalRate) internal {
|
constructor(uint256 initialRate, uint256 finalRate) internal {
|
||||||
require(finalRate > 0);
|
require(finalRate > 0);
|
||||||
require(initialRate >= finalRate);
|
require(initialRate > finalRate);
|
||||||
_initialRate = initialRate;
|
_initialRate = initialRate;
|
||||||
_finalRate = finalRate;
|
_finalRate = finalRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The base rate function is overridden to revert, since this crowdsale doens't use it, and
|
||||||
|
* all calls to it are a mistake.
|
||||||
|
*/
|
||||||
|
function rate() public view returns(uint256) {
|
||||||
|
revert();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the initial rate of the crowdsale.
|
* @return the initial rate of the crowdsale.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -34,13 +34,19 @@ contract('IncreasingPriceCrowdsale', function ([_, investor, wallet, purchaser])
|
|||||||
this.token = await SimpleToken.new();
|
this.token = await SimpleToken.new();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('rejects a final rate larger than the initial rate', async function () {
|
it('reverts with a final rate larger than the initial rate', async function () {
|
||||||
await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new(
|
await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new(
|
||||||
this.startTime, this.closingTime, wallet, this.token.address, initialRate, initialRate.plus(1)
|
this.startTime, this.closingTime, wallet, this.token.address, initialRate, initialRate.plus(1)
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('rejects a final rate of zero', async function () {
|
it('reverts with a final equal to the initial rate', async function () {
|
||||||
|
await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new(
|
||||||
|
this.startTime, this.closingTime, wallet, this.token.address, initialRate, initialRate
|
||||||
|
));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('reverts with a final rate of zero', async function () {
|
||||||
await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new(
|
await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new(
|
||||||
this.startTime, this.closingTime, wallet, this.token.address, initialRate, 0
|
this.startTime, this.closingTime, wallet, this.token.address, initialRate, 0
|
||||||
));
|
));
|
||||||
@ -59,6 +65,10 @@ contract('IncreasingPriceCrowdsale', function ([_, investor, wallet, purchaser])
|
|||||||
(await this.crowdsale.finalRate()).should.be.bignumber.equal(finalRate);
|
(await this.crowdsale.finalRate()).should.be.bignumber.equal(finalRate);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('reverts when the base Crowdsale\'s rate function is called', async function () {
|
||||||
|
await shouldFail.reverting(this.crowdsale.rate());
|
||||||
|
});
|
||||||
|
|
||||||
it('returns a rate of 0 before the crowdsale starts', async function () {
|
it('returns a rate of 0 before the crowdsale starts', async function () {
|
||||||
(await this.crowdsale.getCurrentRate()).should.be.bignumber.equal(0);
|
(await this.crowdsale.getCurrentRate()).should.be.bignumber.equal(0);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user