Commit 0c85b370 authored by yann300's avatar yann300

add tests

parent 1bc99662
......@@ -20,7 +20,7 @@ BasicPanel.prototype.render = function () {
${this.name}
</div>
<div style=${ui.formatCss(style.panel.tableContainer)}>
<pre style=${ui.formatCss(style.panel.table, style.font)} >${this.data}</pre>
<pre style=${ui.formatCss(style.panel.table, style.font)} id='basicpanel' >${this.data}</pre>
</div>
</div>`
if (!this.view) {
......
......@@ -25,7 +25,7 @@ Sticker.prototype.render = function () {
<td>
VMtracestep:
</td>
<td>
<td id='vmtracestepinfo' >
${this.vmTraceStep}
</td>
</tr>
......@@ -33,7 +33,7 @@ Sticker.prototype.render = function () {
<td>
Step:
</td>
<td>
<td id='stepinfo'>
${this.step}
</td>
</tr>
......@@ -41,7 +41,7 @@ Sticker.prototype.render = function () {
<td>
Add memory:
</td>
<td>
<td id='addmemoryinfo'>
${this.addmemory}
</td>
</tr>
......@@ -49,7 +49,7 @@ Sticker.prototype.render = function () {
<td>
Gas:
</td>
<td>
<td id='gasinfo'>
${this.gas}
</td>
</tr>
......@@ -57,15 +57,15 @@ Sticker.prototype.render = function () {
<td>
Remaining gas:
</td>
<td>
<td id='remaininggasinfo'>
${this.remainingGas}
</td>
</tr>
<tr key='remaininggas'>
<tr key='loadedaddress'>
<td>
Loaded address:
</td>
<td>
<td id='loadedaddressinfo'>
${this.loadedAddress}
</td>
</tr>
......
......@@ -33,26 +33,25 @@ VmDebugger.prototype.render = function () {
<tbody>
<tr>
<td>
${this.asmCode.render()}
</td>
<td>
<td id='stackpanel'>
${this.stackPanel.render()}
</td>
</tr>
<tr>
<td>
<td id='storagepanel'>
${this.storagePanel.render()}
</td>
<td>
<td id='memorypanel'>
${this.memoryPanel.render()}
</td>
</tr>
<tr>
<td>
<td id='calldatapanel'>
${this.calldataPanel.render()}
</td>
<td>
<td id='callstackpanel'>
${this.CallstackPanel.render()}
</td>
</tr>
......
/* global web3Override */
module.exports = {
beforeEach: function (browser, done) {
init(browser, done)
},
'Load Trace - not found': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.assert.containsText('#txhash', '<not found>')
.end()
},
'Load Trace - found': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.assert.containsText('#txhash', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.assert.containsText('#txfrom', '0x00101c5bfa3fc8bad02c9f5fd65b069306251915')
.assert.containsText('#txto', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.click('#unload')
.waitForElementNotVisible('#vmdebugger', 1000)
.end()
},
'Stepping': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#intoforward')
.click('#intoforward')
.checkCurrentSelectedItem('004 MSTORE')
.click('#intoforward')
.click('#intoback')
.click('#intoback')
.checkCurrentSelectedItem('002 PUSH 40')
.click('#nextcall')
.checkCurrentSelectedItem('181 CREATE')
.click('#intoforward')
.click('#intoforward')
.click('#intoforward')
.click('#intoforward')
.click('#overforward')
.checkCurrentSelectedItem('058 RETURN')
.click('#intoforward')
.click('#overback')
.checkCurrentSelectedItem('181 CREATE')
.end()
},
'Slider': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#intoforward')
.click('#intoforward')
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.LEFT_ARROW)
.checkCurrentSelectedItem('041 PUSH 60fe47b1')
.end()
}
}
function init (browser, callback) {
browser.checkCurrentSelectedItem = function (expected) {
browser.getValue('#asmitems', function (result) {
browser.assert.containsText('#asmitems option[value="' + result.value + '"]', expected)
})
return browser
}
browser
.url('http://127.0.0.1:8080')
injectScript('./test/resources/testWeb3.js', browser, function () {
callback()
})
}
function readFile (filename, callback) {
var fs = require('fs')
try {
console.log('reading ' + filename)
fs.readFile(filename, 'utf8', callback)
} catch (e) {
console.log(e)
callback(e)
}
}
function injectScript (file, browser, callback) {
readFile(file, function (error, result) {
if (!error) {
browser.execute(function (data) {
eval.call(null, data) // eslint-disable-line
var vmdebugger = document.getElementById('app').vmdebugger
vmdebugger.web3.eth.getCode = web3Override.getCode
vmdebugger.web3.debug.traceTransaction = web3Override.traceTransaction
vmdebugger.web3.debug.storageAt = web3Override.storageAt
vmdebugger.web3.eth.getTransaction = web3Override.getTransaction
vmdebugger.web3.eth.getTransactionFromBlock = web3Override.getTransactionFromBlock
vmdebugger.web3.eth.getBlockNumber = web3Override.getBlockNumber
}, [result], function () {
callback()
})
}
})
}
require('./vmdebugger')
/* global web3Override */
module.exports = function (browser, callback) {
extendBrowser(browser)
browser
.url('http://127.0.0.1:8080')
injectScript('./test/resources/testWeb3.js', browser, function () {
callback()
})
}
function readFile (filename, callback) {
var fs = require('fs')
try {
console.log('reading ' + filename)
fs.readFile(filename, 'utf8', callback)
} catch (e) {
console.log(e)
callback(e)
}
}
function injectScript (file, browser, callback) {
readFile(file, function (error, result) {
if (!error) {
browser.execute(function (data) {
eval.call(null, data) // eslint-disable-line
var vmdebugger = document.getElementById('app').vmdebugger
vmdebugger.web3.eth.getCode = web3Override.getCode
vmdebugger.web3.debug.traceTransaction = web3Override.traceTransaction
vmdebugger.web3.debug.storageAt = web3Override.storageAt
vmdebugger.web3.eth.getTransaction = web3Override.getTransaction
vmdebugger.web3.eth.getTransactionFromBlock = web3Override.getTransactionFromBlock
vmdebugger.web3.eth.getBlockNumber = web3Override.getBlockNumber
}, [result], function () {
callback()
})
}
})
}
function extendBrowser (browser) {
browser.assertCurrentSelectedItem = function (expected) {
browser.getValue('#asmitems', function (result) {
browser.assert.containsText('#asmitems option[value="' + result.value + '"]', expected)
})
return browser
}
browser.assertSticker = function (vmtracestepinfo, stepinfo, addmemoryinfo, gasinfo, remaininggasinfo, loadedaddressinfo) {
browser.expect.element('#vmtracestepinfo').text.to.equal(vmtracestepinfo)
browser.expect.element('#stepinfo').text.to.equal(stepinfo)
browser.expect.element('#addmemoryinfo').text.to.equal(addmemoryinfo)
browser.expect.element('#gasinfo').text.to.equal(gasinfo)
browser.expect.element('#remaininggasinfo').text.to.equal(remaininggasinfo)
browser.expect.element('#loadedaddressinfo').text.to.equal(loadedaddressinfo)
return browser
}
browser.assertStack = function (value) {
return assertPanel('#stackpanel', browser, value)
}
browser.assertStorageChanges = function (value) {
return assertPanel('#storagepanel', browser, value)
}
browser.assertMemory = function (value) {
return assertPanel('#memorypanel', browser, value)
}
browser.assertCallData = function (value) {
return assertPanel('#calldatapanel', browser, value)
}
browser.assertCallStack = function (value) {
return assertPanel('#callstackpanel', browser, value)
}
browser.assertStackValue = function (index, value) {
return assertPanelValue('#stackpanel', browser, index, value)
}
browser.assertStorageChangesValue = function (index, value) {
return assertPanelValue('#storagepanel', browser, index, value)
}
browser.assertMemoryValue = function (index, value) {
return assertPanelValue('#memorypanel', browser, index, value)
}
browser.assertCallStackValue = function (index, value) {
return assertPanelValue('#callstackpanel', browser, index, value)
}
}
function assertPanel (id, browser, value) {
browser.expect.element(id + ' #basicpanel').text.to.equal(value)
return browser
}
function assertPanelValue (id, browser, index, value, done) {
browser.getText(id + ' #basicpanel', function (result) {
var values = result.value.split('\n')
browser.assert.equal(values[index], value)
})
return browser
}
'use strict'
var init = require('./init')
module.exports = {
beforeEach: function (browser, done) {
init(browser, done)
},
'Load Trace - not found': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.assert.containsText('#txhash', '<not found>')
.end()
},
'Load Trace - found': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.expect.element('#txhash').text.to.equal('0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
browser.expect.element('#txfrom').text.to.equal('0x00101c5bfa3fc8bad02c9f5fd65b069306251915')
browser.expect.element('#txto').text.to.equal('0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
browser.expect.element('#txto').text.to.equal('0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
browser.click('#unload')
.waitForElementNotVisible('#vmdebugger', 1000)
.end()
},
'Stepping': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#intoforward')
.click('#intoforward')
.assertCurrentSelectedItem('004 MSTORE')
.click('#intoforward')
.click('#intoback')
.click('#intoback')
.assertCurrentSelectedItem('002 PUSH 40')
.click('#nextcall')
.assertCurrentSelectedItem('181 CREATE')
.click('#intoforward')
.click('#intoforward')
.click('#intoforward')
.click('#intoforward')
.click('#overforward')
.assertCurrentSelectedItem('058 RETURN')
.click('#intoforward')
.click('#overback')
.assertCurrentSelectedItem('181 CREATE')
.end()
},
'Slider': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#intoforward')
.click('#intoforward')
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.LEFT_ARROW)
.assertCurrentSelectedItem('041 PUSH 60fe47b1')
.end()
},
'Sticker': function (browser) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#intoforward')
.click('#intoforward')
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.sendKeys('#slider', browser.Keys.RIGHT_ARROW)
.assertSticker('6', '6', '', '3', '84476', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.click('#nextcall')
.assertSticker('63', '63', '', '32000', '79283', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.click('#intoforward')
.click('#overforward')
.assertSticker('108', '44', '', '0', '27145', '(Contract Creation - Step 63)')
.click('#intoforward')
.assertSticker('109', '64', '', '3', '25145', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.end()
},
'Panels': function (browser, done) {
browser
.clearValue('#txinput')
.setValue('#txinput', '0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51')
.click('#load')
.waitForElementVisible('#vmdebugger', 1000)
.click('#nextcall')
.assertStack('0x\n0x60\n0x65\n0x38\n0x55\n0x60fe47b1')
.assertStackValue(1, '0x60')
.assertStorageChanges('0x00 0x38')
.assertMemoryValue(6, '0xc0 60 60 60 40 52 60 40 51 60 20 80 60 45 83 39 81 ????R??Q????E?9?')
.assertMemoryValue(7, '0xe0 01 60 40 52 80 80 51 90 60 20 01 90 91 90 50 50 ???R??Q???????PP')
.assertMemoryValue(8, '0x100 5b 80 60 01 01 60 00 60 00 50 81 90 55 50 5b 50 ?????????P??UP?P')
.assertCallData('0x60fe47b10000000000000000000000000000000000000000000000000000000000000038')
.assertCallStack('0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.click('#intoforward') // CREATE
.assertStack('')
.assertStorageChanges('')
.assertMemory('')
.assertCallData('0x0000000000000000000000000000000000000000000000000000000000000000000000000000006060606040526040516020806045833981016040528080519060200190919050505b806001016000600050819055')
.assertCallStack('0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5\n(Contract Creation - Step 63)')
.end()
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment