Skip to content
This repository has been archived by the owner on Apr 4, 2024. It is now read-only.

Commit

Permalink
add exception revert test case
Browse files Browse the repository at this point in the history
  • Loading branch information
yihuang committed Jul 24, 2021
1 parent f6dc80d commit 3842095
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tests/solidity/suites/exception/contracts/TestRevert.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

contract State {
uint256 a = 0;
function set(uint256 input) public {
a = input;
require(a < 10);
}
function force_set(uint256 input) public {
a = input;
}
function query() public view returns(uint256) {
return a;
}
}

contract TestRevert {
State state;
constructor() {
state = new State();
}
function try_set(uint256 input) public {
try state.set(input) {
} catch (bytes memory) {
}
}
function set(uint256 input) public {
state.force_set(input);
}
function query() public view returns(uint256) {
return state.query();
}
}
19 changes: 19 additions & 0 deletions tests/solidity/suites/exception/contracts/test/Migrations.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

contract Migrations {
address public owner = msg.sender;
uint public last_completed_migration;

modifier restricted() {
require(
msg.sender == owner,
"This function is restricted to the contract's owner"
);
_;
}

function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const Migrations = artifacts.require("Migrations");

module.exports = function (deployer) {
deployer.deploy(Migrations);
};
15 changes: 15 additions & 0 deletions tests/solidity/suites/exception/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "exception",
"version": "1.0.0",
"author": "huangyi <[email protected]>",
"license": "GPL-3.0-or-later",
"scripts": {
"test-ganache": "yarn truffle test",
"test-ethermint": "yarn truffle test --network ethermint"
},
"devDependencies": {
"truffle": "^5.1.42",
"truffle-assertions": "^0.9.2",
"web3": "^1.2.11"
}
}
Empty file.
31 changes: 31 additions & 0 deletions tests/solidity/suites/exception/test/revert.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const TestRevert = artifacts.require("TestRevert")
const truffleAssert = require('truffle-assertions');

async function expectRevert(promise) {
try {
await promise;
} catch (error) {
if (error.message.indexOf('revert') === -1) {
expect('revert').to.equal(error.message, 'Wrong kind of exception received');
}
return;
}
expect.fail('Expected an exception but none was received');
}

contract('TestRevert', (accounts) => {
let revert

beforeEach(async () => {
revert = await TestRevert.new()
})
it('should revert', async () => {
await revert.try_set(10)
no = await revert.query()
assert.equal(no, '0', 'The set should be reverted')

await revert.set(10)
no = await revert.query()
assert.equal(no, '10', 'The force set should not be reverted')
})
})
17 changes: 17 additions & 0 deletions tests/solidity/suites/exception/truffle-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module.exports = {
networks: {
// Development network is just left as truffle's default settings
ethermint: {
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
gas: 5000000, // Gas sent with each transaction
gasPrice: 1000000000, // 1 gwei (in wei)
},
},
compilers: {
solc: {
version: "0.8.6",
},
},
}

0 comments on commit 3842095

Please sign in to comment.