tests for value & VM transaction instance fix

pull/5370/head
aniket-engg 5 years ago committed by Aniket
parent fdac8ec956
commit c1ac5e0f61
  1. 15
      remix-lib/src/execution/txRunner.js
  2. 12
      remix-tests/tests/testRunner.ts
  3. 17
      remix-tests/tests/various_sender/sender_and_value_test.sol

@ -95,7 +95,7 @@ class TxRunner {
runInVm (from, to, data, value, gasLimit, useCall, timestamp, callback) { runInVm (from, to, data, value, gasLimit, useCall, timestamp, callback) {
const self = this const self = this
var account = self.vmaccounts[from] const account = self.vmaccounts[from]
if (!account) { if (!account) {
return callback('Invalid account selected') return callback('Invalid account selected')
} }
@ -104,19 +104,20 @@ class TxRunner {
if (err) { if (err) {
callback('Account not found') callback('Account not found')
} else { } else {
var tx = new EthJSTX({ // See https://github.com/ethereumjs/ethereumjs-tx/blob/master/docs/classes/transaction.md#constructor
timestamp: timestamp, // for initialization fields and their types
nonce: new BN(res.nonce), const tx = new EthJSTX({
gasPrice: new BN(1), nonce: '0x' + res.nonce.toString('hex'),
gasPrice: '0x1',
gasLimit: gasLimit, gasLimit: gasLimit,
to: to, to: to,
value: new BN(value, 10), value: value,
data: Buffer.from(data.slice(2), 'hex') data: Buffer.from(data.slice(2), 'hex')
}) })
tx.sign(account.privateKey) tx.sign(account.privateKey)
const coinbases = ['0x0e9281e9c6a0808672eaba6bd1220e144c9bb07a', '0x8945a1288dc78a6d8952a92c77aee6730b414778', '0x94d76e24f818426ae84aa404140e8d5f60e10e7e'] const coinbases = ['0x0e9281e9c6a0808672eaba6bd1220e144c9bb07a', '0x8945a1288dc78a6d8952a92c77aee6730b414778', '0x94d76e24f818426ae84aa404140e8d5f60e10e7e']
const difficulties = [new BN('69762765929000', 10), new BN('70762765929000', 10), new BN('71762765929000', 10)] const difficulties = [new BN('69762765929000', 10), new BN('70762765929000', 10), new BN('71762765929000', 10)]
var block = new EthJSBlock({ const block = new EthJSBlock({
header: { header: {
timestamp: timestamp || (new Date().getTime() / 1000 | 0), timestamp: timestamp || (new Date().getTime() / 1000 | 0),
number: self.blockNumber, number: self.blockNumber,

@ -234,22 +234,22 @@ describe('testRunner', () => {
}) })
}) })
// Test Transaction with different sender // Test Transaction with custom sender & value
describe('various sender', function () { describe('various sender', function () {
const filename: string = 'tests/various_sender/sender_test.sol' const filename: string = 'tests/various_sender/sender_and_value_test.sol'
before(function (done) { before(function (done) {
compileAndDeploy(filename, function (_err: Error | null | undefined, compilationData: object, contracts: any, asts: any, accounts: string[]) { compileAndDeploy(filename, function (_err: Error | null | undefined, compilationData: object, contracts: any, asts: any, accounts: string[]) {
runTest('SenderTest', contracts.SenderTest, compilationData[filename]['SenderTest'], asts[filename], { accounts }, testCallback, resultsCallback(done)) runTest('SenderAndValueTest', contracts.SenderAndValueTest, compilationData[filename]['SenderAndValueTest'], asts[filename], { accounts }, testCallback, resultsCallback(done))
}) })
}) })
after(() => { tests = [] }) after(() => { tests = [] })
it('should have 4 passing tests', function () { it('should have 5 passing tests', function () {
assert.equal(results.passingNum, 4) assert.equal(results.passingNum, 5)
}) })
it('should have 1 failing tests', function () { it('should have 0 failing tests', function () {
assert.equal(results.failureNum, 0) assert.equal(results.failureNum, 0)
}) })
}) })

@ -1,7 +1,7 @@
import "remix_tests.sol"; // this import is automatically injected by Remix. import "remix_tests.sol"; // this import is automatically injected by Remix.
import "remix_accounts.sol"; import "remix_accounts.sol";
contract SenderTest { contract SenderAndValueTest {
function beforeAll () public {} function beforeAll () public {}
/// #sender: account-1 /// #sender: account-1
@ -11,16 +11,21 @@ contract SenderTest {
/// #sender: account-0 /// #sender: account-0
/// #value: 10 /// #value: 10
function checkSenderIs0 () public payable{ function checkSenderIs0AndValueis10 () public payable{
Assert.equal(msg.sender, TestsAccounts.getAccount(0), "wrong sender in checkSenderIs0"); Assert.equal(msg.sender, TestsAccounts.getAccount(0), "wrong sender in checkSenderIs0AndValueis10");
Assert.equal(msg.value, 10, "wrong value in checkSenderIs0AndValueis10");
} }
/// #value: 100 /// #value: 100
function checkSenderIsNt0 () public payable{ function checkValueIs100 () public payable{
Assert.equal(msg.sender, TestsAccounts.getAccount(0), "wrong sender in checkSenderIsNot0"); Assert.equal(msg.value, 100, "wrong value in checkValueIs100");
} }
function checkSenderIsnt2 () public { function checkSenderIsnt2 () public {
Assert.notEqual(msg.sender, TestsAccounts.getAccount(1), "wrong sender in checkSenderIsnt2"); Assert.notEqual(msg.sender, TestsAccounts.getAccount(2), "wrong sender in checkSenderIsnt2");
}
function checkValueIsnt10 () public payable{
Assert.notEqual(msg.value, 10, "wrong value in checkValueIsnt10");
} }
} }
Loading…
Cancel
Save