Skip to content

Instantly share code, notes, and snippets.

@kirillsurkov
Last active April 3, 2018 11:49
Show Gist options
  • Select an option

  • Save kirillsurkov/3bc186bcddb7284ee475784a455f03af to your computer and use it in GitHub Desktop.

Select an option

Save kirillsurkov/3bc186bcddb7284ee475784a455f03af to your computer and use it in GitHub Desktop.
let FaceterToken = artifacts.require("./FaceterToken.sol");
let FaceterTokenLock = artifacts.require("./FaceterTokenLockV2.sol");
let toNumber = (value, decimals) => value.slice(0, value.length-decimals) + "." + value.slice(value.length-decimals);
let getTime = () => new Promise(next => web3.eth.getBlock("latest", (err, block) => next(block.timestamp)));
let incTime = seconds => new Promise(next =>
web3.currentProvider.sendAsync({jsonrpc: "2.0", method: "evm_increaseTime", params: [seconds], id: 0}, () =>
web3.currentProvider.sendAsync({jsonrpc: "2.0", method: "evm_mine", id: 0}, next)
)
);
const THREE_MONTHS = 7948800;
module.exports = function(deployer, network, accounts) {
const buffer = accounts[0];
const customer = accounts[1];
const whitelisted = accounts[2];
deployer.deploy(FaceterToken, buffer).then(() => FaceterToken.deployed()).then(async faceterToken => {
console.log("running tests\n");
console.log("adding '" + whitelisted + "' to whitelist");
await faceterToken.addToWhitelist(whitelisted);
const faceterTokenLock = FaceterTokenLock.at(await faceterToken.holder());
const decimals = parseInt((await faceterToken.decimals()).toString());
let unlock = async () => {
console.log("time: " + await getTime());
console.log("step: " + await faceterTokenLock.unlockStep());
console.log("trying to unlock");
try {
await faceterTokenLock.unlock();
console.log("success");
} catch(e) {
console.log("failed");
}
console.log("buffer balance: " + (await faceterToken.balanceOf(buffer)).div("1" + Array(decimals).fill("0").join("")).toString() + "\n");
};
for (let i = 0; i < 10; i++) {
await unlock();
await incTime(THREE_MONTHS);
}
console.log();
let transfer = async from => {
console.log("transfer to buffer from '" + from + "'");
try {
await faceterToken.transfer(buffer, 1000, {from: from});
console.log("success");
} catch(e) {
console.log("failed");
}
};
let transferFrom = async from => {
console.log("transferFrom to buffer from '" + from + "'");
try {
await faceterToken.transferFrom(buffer, buffer, 1000, {from: from});
console.log("success");
} catch(e) {
console.log("failed");
}
};
let testWhitelist = async () => {
console.log("paused: " + await faceterToken.paused());
await transfer(customer);
await transferFrom(customer);
await transfer(whitelisted);
await transferFrom(whitelisted);
};
await faceterToken.transfer(customer, 2000, {from: buffer});
await faceterToken.transfer(whitelisted, 2000, {from: buffer});
await faceterToken.approve(customer, 2000, {from: buffer});
await faceterToken.approve(whitelisted, 2000, {from: buffer});
await testWhitelist();
console.log();
await faceterToken.unpause();
await testWhitelist();
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment