add mapping test

pull/3094/head
yann300 7 years ago
parent 72ec72fb39
commit 715536247e
  1. 14
      remix-solidity/test/decoder/contracts/mappingStorage.js
  2. 2
      remix-solidity/test/decoder/localsTests/int.js
  3. 2
      remix-solidity/test/decoder/localsTests/misc.js
  4. 2
      remix-solidity/test/decoder/localsTests/misc2.js
  5. 2
      remix-solidity/test/decoder/localsTests/structArray.js
  6. 71
      remix-solidity/test/decoder/storageDecoder.js
  7. 4
      remix-solidity/test/decoder/vmCall.js
  8. 10
      remix-solidity/test/tests.js

@ -0,0 +1,14 @@
module.exports = {
contract: `
pragma solidity ^0.4.19;
contract SimpleMappingState {
uint _num;
mapping(string => uint) _iBreakSolidityState;
function updateNum(uint num, string str) public {
_num = num;
_iBreakSolidityState[str] = num;
}
}
`
}

@ -2,7 +2,7 @@
var remixCore = require('remix-core')
var TraceManager = remixCore.trace.TraceManager
var CodeManager = remixCore.code.CodeManager
var vmSendTx = require('./vmCall')
var vmSendTx = require('../vmCall')
var remixLib = require('remix-lib')
var traceHelper = remixLib.helpers.trace

@ -2,7 +2,7 @@
var remixCore = require('remix-core')
var TraceManager = remixCore.trace.TraceManager
var CodeManager = remixCore.code.CodeManager
var vmSendTx = require('./vmCall')
var vmSendTx = require('../vmCall')
var remixLib = require('remix-lib')
var traceHelper = remixLib.helpers.trace
var global = remixLib.global

@ -2,7 +2,7 @@
var remixCore = require('remix-core')
var TraceManager = remixCore.trace.TraceManager
var CodeManager = remixCore.code.CodeManager
var vmSendTx = require('./vmCall')
var vmSendTx = require('../vmCall')
var remixLib = require('remix-lib')
var traceHelper = remixLib.helpers.trace
var global = remixLib.global

@ -2,7 +2,7 @@
var remixCore = require('remix-core')
var TraceManager = remixCore.trace.TraceManager
var CodeManager = remixCore.code.CodeManager
var vmSendTx = require('./vmCall')
var vmSendTx = require('../vmCall')
var remixLib = require('remix-lib')
var traceHelper = remixLib.helpers.trace
var global = remixLib.global

@ -11,7 +11,9 @@ tape('solidity', function (t) {
testIntStorage(st, function () {
testByteStorage(st, function () {
testStructArrayStorage(st, function () {
st.end()
testMappingStorage(st, function () {
st.end()
})
})
})
})
@ -271,3 +273,70 @@ function testStructArrayStorage (st, cb) {
cb()
})
}
function testMappingStorage (st, cb) {
var mappingStorage = require('./contracts/mappingStorage')
var vmSendTx = require('./vmCall')
var privateKey = new Buffer('dae9801649ba2d95a21e688b56f77905e5667c44ce868ec83f82e838712a2c7a', 'hex')
var vm = initVM(st, privateKey)
var output = compiler.compileStandardWrapper(compilerInput(mappingStorage.contract))
output = JSON.parse(output)
vmSendTx(vm, {nonce: 0, privateKey: privateKey}, null, 0, output.contracts['test.sol']['SimpleMappingState'].evm.bytecode.object, function (error, txHash) {
if (error) {
console.log(error)
st.end(error)
} else {
vmSendTx(vm, {nonce: 1, privateKey: privateKey}, null, 0, '2fd0a83a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001074686973206973206120737472696e6700000000000000000000000000000000',
function (error, txHash) {
if (error) {
console.log(error)
st.end(error)
} else {
console.log(txHash)
var TraceManager = require('remix-core').trace.TraceManager
var traceManager = new TraceManager()
var StorageResolver = require('remix-core').storage.StorageResolver
var StorageViewer = require('remix-core').storage.StorageViewer
var storageViewer = new StorageViewer({
stepIndex: 180,
tx: null,
address: null
}, new StorageResolver(), traceManager)
var stateVars = stateDecoder.extractStateVariables('SimpleMappingState', output.sources)
stateDecoder.decodeState(stateVars, storageViewer).then((result) => {
console.log(result)
})
}
})
}
})
}
/*
Init VM / Send Transaction
*/
function initVM (st, privateKey) {
var remixLib = require('remix-lib')
var utileth = require('ethereumjs-util')
var VM = require('ethereumjs-vm')
var Web3Providers = remixLib.vm.Web3Providers
var address = utileth.privateToAddress(privateKey)
var vm = new VM({
enableHomestead: true,
activatePrecompiles: true
})
vm.stateManager.putAccountBalance(address, 'f00000000000000001', function cb () {})
var web3Providers = new Web3Providers()
web3Providers.addVM('VM', vm)
web3Providers.get('VM', function (error, obj) {
if (error) {
var mes = 'provider TEST not defined'
console.log(mes)
st.fail(mes)
} else {
global.web3 = obj
st.end()
}
})
return vm
}

@ -23,7 +23,9 @@ function sendTx (vm, from, to, value, data, cb) {
uncleHeaders: []
})
vm.runTx({block: block, tx: tx, skipBalance: true, skipNonce: true}, function (error, result) {
cb(error, utileth.bufferToHex(tx.hash()))
setTimeout(() => {
cb(error, utileth.bufferToHex(tx.hash()))
}, 500)
})
}

@ -1,7 +1,7 @@
require('./decoder/decodeInfo.js')
require('./decoder/storageLocation.js')
// require('./decoder/decodeInfo.js')
// require('./decoder/storageLocation.js')
require('./decoder/storageDecoder.js')
require('./decoder/localDecoder.js')
// require('./decoder/localDecoder.js')
require('./analysis/staticAnalysisCommon-test.js')
require('./analysis/staticAnalysisIntegration-test.js')
// require('./analysis/staticAnalysisCommon-test.js')
// require('./analysis/staticAnalysisIntegration-test.js')

Loading…
Cancel
Save