Added claimAfterBlock variable and tests changes to support changes

pull/78/head
AugustoL 8 years ago
parent e310e6728b
commit d974924045
  1. 12
      contracts/DelayedClaimable.sol
  2. 35
      test/DelayedClaimble.js

@ -4,18 +4,24 @@ import './Claimable.sol';
/* /*
* DelayedClaimable * DelayedClaimable
* Extension for the Claimable contract, where the ownership needs to be claimed before certain block number * Extension for the Claimable contract, where the ownership needs to be claimed before/after certain block number
*/ */
contract DelayedClaimable is Ownable, Claimable { contract DelayedClaimable is Ownable, Claimable {
uint public claimBeforeBlock; uint public claimBeforeBlock;
uint public claimAfterBlock;
function setClaimBefore(uint _claimBeforeBlock) onlyOwner { function setClaimBlocks(uint _claimBeforeBlock, uint _claimAfterBlock) onlyOwner {
if (_claimAfterBlock > claimBeforeBlock)
throw;
claimBeforeBlock = _claimBeforeBlock; claimBeforeBlock = _claimBeforeBlock;
claimAfterBlock = _claimAfterBlock;
} }
function claimOwnership() onlyPendingOwner { function claimOwnership() onlyPendingOwner {
if (block.number > claimBeforeBlock) throw; if ((block.number > claimBeforeBlock) || (block.number < claimAfterBlock))
throw;
owner = pendingOwner; owner = pendingOwner;
pendingOwner = 0x0; pendingOwner = 0x0;
claimBeforeBlock = 0; claimBeforeBlock = 0;

@ -7,16 +7,20 @@ contract('DelayedClaimable', function(accounts) {
}); });
}); });
it("changes pendingOwner after transfer succesful", function(done) { it("Changes pendingOwner after transfer succesfull", function(done) {
return delayedClaimable.transferOwnership(accounts[2]) return delayedClaimable.transferOwnership(accounts[2])
.then(function(){ .then(function(){
return delayedClaimable.setClaimBefore(1000) return delayedClaimable.setClaimBlocks(1000,0);
}) })
.then(function(){ .then(function(){
return delayedClaimable.claimBeforeBlock(); return delayedClaimable.claimBeforeBlock();
}) })
.then(function(claimBeforeBlock) { .then(function(claimBeforeBlock) {
assert.isTrue(claimBeforeBlock == 1000); assert.isTrue(claimBeforeBlock == 1000);
return delayedClaimable.claimAfterBlock();
})
.then(function(claimAfterBlock) {
assert.isTrue(claimAfterBlock == 0);
return delayedClaimable.pendingOwner(); return delayedClaimable.pendingOwner();
}) })
.then(function(pendingOwner) { .then(function(pendingOwner) {
@ -29,19 +33,23 @@ contract('DelayedClaimable', function(accounts) {
.then(function(owner) { .then(function(owner) {
assert.isTrue(owner === accounts[2]); assert.isTrue(owner === accounts[2]);
}) })
.then(done) .then(done);
}); });
it("changes pendingOwner after transfer fails", function(done) { it("Changes pendingOwner after transfer fails", function(done) {
return delayedClaimable.transferOwnership(accounts[1]) return delayedClaimable.transferOwnership(accounts[1])
.then(function(){ .then(function(){
return delayedClaimable.setClaimBefore(1) return delayedClaimable.setClaimBlocks(11000,10000);
}) })
.then(function(){ .then(function(){
return delayedClaimable.claimBeforeBlock(); return delayedClaimable.claimBeforeBlock();
}) })
.then(function(claimBeforeBlock) { .then(function(claimBeforeBlock) {
assert.isTrue(claimBeforeBlock == 1); assert.isTrue(claimBeforeBlock == 11000);
return delayedClaimable.claimAfterBlock();
})
.then(function(claimAfterBlock) {
assert.isTrue(claimAfterBlock == 10000);
return delayedClaimable.pendingOwner(); return delayedClaimable.pendingOwner();
}) })
.then(function(pendingOwner) { .then(function(pendingOwner) {
@ -49,7 +57,7 @@ contract('DelayedClaimable', function(accounts) {
return delayedClaimable.claimOwnership({from: accounts[1]}); return delayedClaimable.claimOwnership({from: accounts[1]});
}) })
.catch(function(error) { .catch(function(error) {
if (error.message.search('invalid JUMP') == -1) throw error if (error.message.search('invalid JUMP') == -1) throw error;
}) })
.then(function() { .then(function() {
return delayedClaimable.owner(); return delayedClaimable.owner();
@ -57,7 +65,18 @@ contract('DelayedClaimable', function(accounts) {
.then(function(owner) { .then(function(owner) {
assert.isTrue(owner != accounts[1]); assert.isTrue(owner != accounts[1]);
}) })
.then(done) .then(done);
});
it("Set claimBeforeBlock and claimAfterBlock invalid values fail", function(done) {
return delayedClaimable.transferOwnership(accounts[1])
.then(function(){
return delayedClaimable.setClaimBlocks(1000,10000);
})
.catch(function(error) {
if (error.message.search('invalid JUMP') == -1) throw error;
})
.then(done);
}); });
}); });

Loading…
Cancel
Save