return typename together with the value

pull/7/head
yann300 8 years ago
parent 0de7453651
commit c519a35ded
  1. 9
      src/solidity/types/ArrayType.js
  2. 6
      src/solidity/types/DynamicByteArray.js
  3. 10
      src/solidity/types/Struct.js
  4. 19
      src/solidity/types/ValueType.js
  5. 32
      test/solidity/localsTests/int.js
  6. 64
      test/solidity/localsTests/misc.js
  7. 94
      test/solidity/localsTests/structArray.js
  8. 356
      test/solidity/storageDecoder.js

@ -52,7 +52,8 @@ class ArrayType extends RefType {
}
return {
value: ret,
length: '0x' + size.toString(16)
length: '0x' + size.toString(16),
type: this.typeName
}
}
@ -69,7 +70,11 @@ class ArrayType extends RefType {
ret.push(this.underlyingType.decodeFromMemory(contentOffset, memory))
offset += 32
}
return ret
return {
value: ret,
length: '0x' + length.toString(16),
type: this.typeName
}
}
}

@ -30,7 +30,8 @@ class DynamicByteArray extends RefType {
var size = parseInt(value.substr(value.length - 2, 2), 16) / 2
return {
value: '0x' + value.substr(0, size * 2),
length: '0x' + size.toString(16)
length: '0x' + size.toString(16),
type: this.typeName
}
}
}
@ -41,7 +42,8 @@ class DynamicByteArray extends RefType {
length = 2 * parseInt(length, 16)
return {
length: '0x' + length.toString(16),
value: '0x' + memory.substr(offset + 64, length)
value: '0x' + memory.substr(offset + 64, length),
type: this.typeName
}
}
}

@ -17,7 +17,10 @@ class Struct extends RefType {
}
ret[item.name] = item.type.decodeFromStorage(globalLocation, storageContent)
})
return ret
return {
value: ret,
type: this.typeName
}
}
decodeFromMemoryInternal (offset, memory) {
@ -28,7 +31,10 @@ class Struct extends RefType {
ret[item.name] = member
offset += 32
})
return ret
return {
value: ret,
type: this.typeName
}
}
}

@ -18,7 +18,10 @@ class ValueType {
*/
decodeFromStorage (location, storageContent) {
var value = util.extractHexValue(location, storageContent, this.storageBytes)
return this.decodeValue(value)
return {
value: this.decodeValue(value),
type: this.typeName
}
}
/**
@ -30,10 +33,15 @@ class ValueType {
* @return {Object} - decoded value
*/
decodeFromStack (stackDepth, stack, memory) {
var value
if (stackDepth >= stack.length) {
return this.decodeValue('')
value = this.decodeValue('')
} else {
return this.decodeValue(stack[stack.length - 1 - stackDepth].replace('0x', ''))
value = this.decodeValue(stack[stack.length - 1 - stackDepth].replace('0x', ''))
}
return {
value: value,
type: this.typeName
}
}
@ -46,7 +54,10 @@ class ValueType {
*/
decodeFromMemory (offset, memory) {
var value = memory.substr(2 * offset, 64)
return this.decodeValue(util.extractHexByteSlice(value, this.storageBytes, 0))
return {
value: this.decodeValue(util.extractHexByteSlice(value, this.storageBytes, 0)),
type: this.typeName
}
}
}

@ -63,26 +63,26 @@ module.exports = function (st, vm, privateKey, contractBytecode, compilationResu
helper.decodeLocals(st, 125, traceManager, callTree, function (locals) {
st.equals(Object.keys(locals).length, 16)
st.equals(locals['ui8'], '130')
st.equals(locals['ui16'], '456')
st.equals(locals['ui32'], '4356')
st.equals(locals['ui64'], '3543543543')
st.equals(locals['ui128'], '234567')
st.equals(locals['ui256'], '115792089237316195423570985008687907853269984665640564039457584007880697216513')
st.equals(locals['ui'], '123545666')
st.equals(locals['i8'], '-45')
st.equals(locals['i16'], '-1234')
st.equals(locals['i32'], '3455')
st.equals(locals['i64'], '-35566')
st.equals(locals['i128'], '-444444')
st.equals(locals['i256'], '3434343')
st.equals(locals['i'], '-32432423423')
st.equals(locals['ishrink'], '2')
st.equals(locals['ui8'].value, '130')
st.equals(locals['ui16'].value, '456')
st.equals(locals['ui32'].value, '4356')
st.equals(locals['ui64'].value, '3543543543')
st.equals(locals['ui128'].value, '234567')
st.equals(locals['ui256'].value, '115792089237316195423570985008687907853269984665640564039457584007880697216513')
st.equals(locals['ui'].value, '123545666')
st.equals(locals['i8'].value, '-45')
st.equals(locals['i16'].value, '-1234')
st.equals(locals['i32'].value, '3455')
st.equals(locals['i64'].value, '-35566')
st.equals(locals['i128'].value, '-444444')
st.equals(locals['i256'].value, '3434343')
st.equals(locals['i'].value, '-32432423423')
st.equals(locals['ishrink'].value, '2')
})
helper.decodeLocals(st, 177, traceManager, callTree, function (locals) {
try {
st.equals(locals['ui8'], '123')
st.equals(locals['ui8'].value, '123')
st.equals(Object.keys(locals).length, 1)
} catch (e) {
st.fail(e.message)

@ -32,22 +32,22 @@ module.exports = function (st, vm, privateKey, contractBytecode, compilationResu
callTree.event.register('callTreeReady', (scopes, scopeStarts) => {
helper.decodeLocals(st, 70, traceManager, callTree, function (locals) {
try {
st.equals(locals['boolFalse'], false)
st.equals(locals['boolTrue'], true)
st.equals(locals['testEnum'], 'three')
st.equals(locals['sender'], '0x4B0897B0513FDC7C541B6D9D7E929C4E5364D2DB')
st.equals(locals['_bytes1'], '0x99')
st.equals(locals['__bytes1'], '0x99')
st.equals(locals['__bytes2'], '0x99AB')
st.equals(locals['__bytes4'], '0x99FA0000')
st.equals(locals['__bytes6'], '0x990000000000')
st.equals(locals['__bytes7'], '0x99356700000000')
st.equals(locals['__bytes8'], '0x99ABD41700000000')
st.equals(locals['__bytes9'], '0x99156744AF00000000')
st.equals(locals['__bytes13'], '0x99123423425300000000000000')
st.equals(locals['__bytes16'], '0x99AFAD23432400000000000000000000')
st.equals(locals['__bytes24'], '0x99AFAD234324000000000000000000000000000000000000')
st.equals(locals['__bytes32'], '0x9999ABD41799ABD4170000000000000000000000000000000000000000000000')
st.equals(locals['boolFalse'].value, false)
st.equals(locals['boolTrue'].value, true)
st.equals(locals['testEnum'].value, 'three')
st.equals(locals['sender'].value, '0x4B0897B0513FDC7C541B6D9D7E929C4E5364D2DB')
st.equals(locals['_bytes1'].value, '0x99')
st.equals(locals['__bytes1'].value, '0x99')
st.equals(locals['__bytes2'].value, '0x99AB')
st.equals(locals['__bytes4'].value, '0x99FA0000')
st.equals(locals['__bytes6'].value, '0x990000000000')
st.equals(locals['__bytes7'].value, '0x99356700000000')
st.equals(locals['__bytes8'].value, '0x99ABD41700000000')
st.equals(locals['__bytes9'].value, '0x99156744AF00000000')
st.equals(locals['__bytes13'].value, '0x99123423425300000000000000')
st.equals(locals['__bytes16'].value, '0x99AFAD23432400000000000000000000')
st.equals(locals['__bytes24'].value, '0x99AFAD234324000000000000000000000000000000000000')
st.equals(locals['__bytes32'].value, '0x9999ABD41799ABD4170000000000000000000000000000000000000000000000')
st.equals(Object.keys(locals).length, 16)
} catch (e) {
st.fail(e.message)
@ -56,22 +56,22 @@ module.exports = function (st, vm, privateKey, contractBytecode, compilationResu
helper.decodeLocals(st, 7, traceManager, callTree, function (locals) {
try {
st.equals(locals['boolFalse'], false)
st.equals(locals['boolTrue'], false)
st.equals(locals['testEnum'], 'one')
st.equals(locals['sender'], '0x0000000000000000000000000000000000000000')
st.equals(locals['_bytes1'], '0x')
st.equals(locals['__bytes1'], '0x')
st.equals(locals['__bytes2'], '0x')
st.equals(locals['__bytes4'], '0x')
st.equals(locals['__bytes6'], '0x')
st.equals(locals['__bytes7'], '0x')
st.equals(locals['__bytes8'], '0x')
st.equals(locals['__bytes9'], '0x')
st.equals(locals['__bytes13'], '0x')
st.equals(locals['__bytes16'], '0x')
st.equals(locals['__bytes24'], '0x')
st.equals(locals['__bytes32'], '0x')
st.equals(locals['boolFalse'].value, false)
st.equals(locals['boolTrue'].value, false)
st.equals(locals['testEnum'].value, 'one')
st.equals(locals['sender'].value, '0x0000000000000000000000000000000000000000')
st.equals(locals['_bytes1'].value, '0x')
st.equals(locals['__bytes1'].value, '0x')
st.equals(locals['__bytes2'].value, '0x')
st.equals(locals['__bytes4'].value, '0x')
st.equals(locals['__bytes6'].value, '0x')
st.equals(locals['__bytes7'].value, '0x')
st.equals(locals['__bytes8'].value, '0x')
st.equals(locals['__bytes9'].value, '0x')
st.equals(locals['__bytes13'].value, '0x')
st.equals(locals['__bytes16'].value, '0x')
st.equals(locals['__bytes24'].value, '0x')
st.equals(locals['__bytes32'].value, '0x')
st.equals(Object.keys(locals).length, 16)
} catch (e) {
st.fail(e.message)

@ -34,63 +34,63 @@ module.exports = function (st, vm, privateKey, contractBytecode, compilationResu
try {
st.equals(locals['bytesSimple'].length, '0x14')
st.equals(locals['bytesSimple'].value, '0x746573745f7375706572')
st.equals(locals['e']['a'].value, 'test')
st.equals(locals['e']['a'].length, '0x8')
st.equals(locals['e']['a'].raw, '0x74657374')
st.equals(locals['e']['b'], '5')
st.equals(locals['e']['c'].length, '0x220')
st.equals(locals['e']['c'].raw, '0x746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374')
st.equals(locals['e']['c'].value, 'test_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_test')
st.equals(locals['e']['d'], '3')
st.equals(locals['e'].value['a'].value, 'test')
st.equals(locals['e'].value['a'].length, '0x8')
st.equals(locals['e'].value['a'].raw, '0x74657374')
st.equals(locals['e'].value['b'].value, '5')
st.equals(locals['e'].value['c'].length, '0x220')
st.equals(locals['e'].value['c'].raw, '0x746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374')
st.equals(locals['e'].value['c'].value, 'test_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_test')
st.equals(locals['e'].value['d'].value, '3')
st.equals(locals['f'].length, '0x1b8')
st.equals(locals['f'].raw, '0x746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f')
st.equals(locals['f'].value, 'test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_test_long_')
st.equals(locals['e']['e'], true)
st.equals(locals['e'].value['e'].value, true)
st.equals(locals['simpleArray'][0], '45')
st.equals(locals['simpleArray'][1], '324324')
st.equals(locals['simpleArray'][2], '-333')
st.equals(locals['simpleArray'][3], '5656')
st.equals(locals['simpleArray'][4], '-1111')
st.equals(locals['simpleArray'].value[0].value, '45')
st.equals(locals['simpleArray'].value[1].value, '324324')
st.equals(locals['simpleArray'].value[2].value, '-333')
st.equals(locals['simpleArray'].value[3].value, '5656')
st.equals(locals['simpleArray'].value[4].value, '-1111')
st.equals(locals['stringArray'][0].value, 'long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_')
st.equals(locals['stringArray'][1].value, 'two')
st.equals(locals['stringArray'][2].value, 'three')
st.equals(locals['stringArray'].value[0].value, 'long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_long_one_')
st.equals(locals['stringArray'].value[1].value, 'two')
st.equals(locals['stringArray'].value[2].value, 'three')
st.equals(locals['dynArray'][0][0], '3423423532')
st.equals(locals['dynArray'][1][0], '-342343323532')
st.equals(locals['dynArray'][1][1], '23432')
st.equals(locals['dynArray'][2][0], '-432432')
st.equals(locals['dynArray'][2][1], '3423423532')
st.equals(locals['dynArray'][2][2], '-432432')
st.equals(locals['dynArray'].value[0].value[0].value, '3423423532')
st.equals(locals['dynArray'].value[1].value[0].value, '-342343323532')
st.equals(locals['dynArray'].value[1].value[1].value, '23432')
st.equals(locals['dynArray'].value[2].value[0].value, '-432432')
st.equals(locals['dynArray'].value[2].value[1].value, '3423423532')
st.equals(locals['dynArray'].value[2].value[2].value, '-432432')
st.equals(locals['structArray'][0]['a'].value, 'test')
st.equals(locals['structArray'][0]['a'].length, '0x8')
st.equals(locals['structArray'][0]['a'].raw, '0x74657374')
st.equals(locals['structArray'][0]['b'], '5')
st.equals(locals['structArray'][0]['c'].length, '0x220')
st.equals(locals['structArray'][0]['c'].raw, '0x746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374')
st.equals(locals['structArray'][0]['c'].value, 'test_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_test')
st.equals(locals['structArray'][0]['d'], '3')
st.equals(locals['structArray'][0]['e'], true)
st.equals(locals['structArray'].value[0].value['a'].value, 'test')
st.equals(locals['structArray'].value[0].value['a'].length, '0x8')
st.equals(locals['structArray'].value[0].value['a'].raw, '0x74657374')
st.equals(locals['structArray'].value[0].value['b'].value, '5')
st.equals(locals['structArray'].value[0].value['c'].length, '0x220')
st.equals(locals['structArray'].value[0].value['c'].raw, '0x746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374746573745f6c6f6e675f746573745f6c6f6e675f746573745f6c6f6e675f74657374')
st.equals(locals['structArray'].value[0].value['c'].value, 'test_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_testtest_long_test_long_test_long_test')
st.equals(locals['structArray'].value[0].value['d'].value, '3')
st.equals(locals['structArray'].value[0].value['e'].value, true)
st.equals(locals['structArray'][1]['a'].value, 'item1 a')
st.equals(locals['structArray'][1]['b'], '20')
st.equals(locals['structArray'][1]['c'].value, 'item1 c')
st.equals(locals['structArray'][1]['d'], '-45')
st.equals(locals['structArray'][1]['e'], false)
st.equals(locals['structArray'].value[1].value['a'].value, 'item1 a')
st.equals(locals['structArray'].value[1].value['b'].value, '20')
st.equals(locals['structArray'].value[1].value['c'].value, 'item1 c')
st.equals(locals['structArray'].value[1].value['d'].value, '-45')
st.equals(locals['structArray'].value[1].value['e'].value, false)
st.equals(locals['structArray'][2]['a'].value, 'item2 a')
st.equals(locals['structArray'][2]['b'], '200')
st.equals(locals['structArray'][2]['c'].value, 'item2 c')
st.equals(locals['structArray'][2]['d'], '-450')
st.equals(locals['structArray'][2]['e'], true)
st.equals(locals['structArray'].value[2].value['a'].value, 'item2 a')
st.equals(locals['structArray'].value[2].value['b'].value, '200')
st.equals(locals['structArray'].value[2].value['c'].value, 'item2 c')
st.equals(locals['structArray'].value[2].value['d'].value, '-450')
st.equals(locals['structArray'].value[2].value['e'].value, true)
st.equals(locals['arrayStruct'].a[0].value, 'string')
st.equals(locals['arrayStruct'].b[0], '34')
st.equals(locals['arrayStruct'].b[1], '-23')
st.equals(locals['arrayStruct'].b[2], '-3')
st.equals(locals['arrayStruct'].c, 'three')
st.equals(locals['arrayStruct'].value.a.value[0].value, 'string')
st.equals(locals['arrayStruct'].value.b.value[0].value, '34')
st.equals(locals['arrayStruct'].value.b.value[1].value, '-23')
st.equals(locals['arrayStruct'].value.b.value[2].value, '-3')
st.equals(locals['arrayStruct'].value.c.value, 'three')
st.equals(Object.keys(locals).length, 8)
} catch (e) {

@ -17,39 +17,39 @@ function testIntStorage (st) {
var output = compiler.compile(intStorage.contract, 0)
for (var storage of [intStorage.fullStorage, shrinkStorage(intStorage.fullStorage)]) {
var decoded = stateDecoder.solidityState(storage, output.sources, 'intStorage')
st.equal(decoded['ui8'], '130')
st.equal(decoded['ui16'], '456')
st.equal(decoded['ui32'], '4356')
st.equal(decoded['ui64'], '3543543543')
st.equal(decoded['ui128'], '234567')
st.equal(decoded['ui256'], '115792089237316195423570985008687907853269984665640564039457584007880697216513')
st.equal(decoded['ui'], '123545666')
st.equal(decoded['i8'], '-45')
st.equal(decoded['i16'], '-1234')
st.equal(decoded['i32'], '3455')
st.equal(decoded['i64'], '-35566')
st.equal(decoded['i128'], '-444444')
st.equal(decoded['i256'], '3434343')
st.equal(decoded['i'], '-32432423423')
st.equal(decoded['ishrink'], '2')
st.equal(decoded['ui8'].value, '130')
st.equal(decoded['ui16'].value, '456')
st.equal(decoded['ui32'].value, '4356')
st.equal(decoded['ui64'].value, '3543543543')
st.equal(decoded['ui128'].value, '234567')
st.equal(decoded['ui256'].value, '115792089237316195423570985008687907853269984665640564039457584007880697216513')
st.equal(decoded['ui'].value, '123545666')
st.equal(decoded['i8'].value, '-45')
st.equal(decoded['i16'].value, '-1234')
st.equal(decoded['i32'].value, '3455')
st.equal(decoded['i64'].value, '-35566')
st.equal(decoded['i128'].value, '-444444')
st.equal(decoded['i256'].value, '3434343')
st.equal(decoded['i'].value, '-32432423423')
st.equal(decoded['ishrink'].value, '2')
}
decoded = stateDecoder.solidityState({}, output.sources, 'intStorage')
st.equal(decoded['ui8'], '0')
st.equal(decoded['ui16'], '0')
st.equal(decoded['ui32'], '0')
st.equal(decoded['ui64'], '0')
st.equal(decoded['ui128'], '0')
st.equal(decoded['ui256'], '0')
st.equal(decoded['ui'], '0')
st.equal(decoded['i8'], '0')
st.equal(decoded['i16'], '0')
st.equal(decoded['i32'], '0')
st.equal(decoded['i64'], '0')
st.equal(decoded['i128'], '0')
st.equal(decoded['i256'], '0')
st.equal(decoded['i'], '0')
st.equal(decoded['ishrink'], '0')
st.equal(decoded['ui8'].value, '0')
st.equal(decoded['ui16'].value, '0')
st.equal(decoded['ui32'].value, '0')
st.equal(decoded['ui64'].value, '0')
st.equal(decoded['ui128'].value, '0')
st.equal(decoded['ui256'].value, '0')
st.equal(decoded['ui'].value, '0')
st.equal(decoded['i8'].value, '0')
st.equal(decoded['i16'].value, '0')
st.equal(decoded['i32'].value, '0')
st.equal(decoded['i64'].value, '0')
st.equal(decoded['i128'].value, '0')
st.equal(decoded['i256'].value, '0')
st.equal(decoded['i'].value, '0')
st.equal(decoded['ishrink'].value, '0')
}
function testByteStorage (st) {
@ -57,90 +57,90 @@ function testByteStorage (st) {
var output = compiler.compile(byteStorage.contract, 0)
for (var storage of [byteStorage.storage, shrinkStorage(byteStorage.storage)]) {
var decoded = stateDecoder.solidityState(storage, output.sources, 'byteStorage')
st.equal(decoded['b1'], false)
st.equal(decoded['a1'], '0xFE350F199F244AC9A79038D254400B632A633225')
st.equal(decoded['b2'], true)
st.equal(decoded['b1'].value, false)
st.equal(decoded['a1'].value, '0xFE350F199F244AC9A79038D254400B632A633225')
st.equal(decoded['b2'].value, true)
st.equal(decoded['dynb1'].value, '0x64796e616d69636279746573')
st.equal(decoded['dynb1'].length, '0xc')
st.equal(decoded['stab'], '0x01')
st.equal(decoded['stab1'], '0x12')
st.equal(decoded['stab2'], '0x1579')
st.equal(decoded['stab3'], '0x359356')
st.equal(decoded['stab4'], '0x23750000')
st.equal(decoded['stab5'], '0x0235764500')
st.equal(decoded['stab6'], '0x324435000000')
st.equal(decoded['stab7'], '0x00432400000000')
st.equal(decoded['stab8'], '0x3245546457650000')
st.equal(decoded['stab9'], '0x034345430000000000')
st.equal(decoded['stab10'], '0x04543543654657000000')
st.equal(decoded['stab11'], '0x5435465400000000000000')
st.equal(decoded['stab12'], '0x030000000000000000000000')
st.equal(decoded['stab13'], '0x03243242345435000000000000')
st.equal(decoded['stab14'], '0x3245435435435300000000000000')
st.equal(decoded['stab15'], '0x032454434435000000000000000000')
st.equal(decoded['stab16'], '0x32454354440000000000000000000000')
st.equal(decoded['stab17'], '0x0324543432432432450000000000000000')
st.equal(decoded['stab18'], '0x032453432543543500000000000000000000')
st.equal(decoded['stab19'], '0x03245434354354350000000000000000000000')
st.equal(decoded['stab20'], '0x032454543543AB35000000000000000000000000')
st.equal(decoded['stab21'], '0x324544324234350000000000000000000000000000')
st.equal(decoded['stab22'], '0x324543AEF50000000000000000000000000000000000')
st.equal(decoded['stab23'], '0x3245435FFF000000000000000000000000000000000000')
st.equal(decoded['stab24'], '0x3245435F0000000000000000000000000000000000000000')
st.equal(decoded['stab25'], '0x3245435F000000000000000000000000000000000000000000')
st.equal(decoded['stab26'], '0x3245435F00000000000000000000000000000000000000000000')
st.equal(decoded['stab27'], '0x03245FFFFFFF000000000000000000000000000000000000000000')
st.equal(decoded['stab28'], '0x03241235000000000000000000000000000000000000000000000000')
st.equal(decoded['stab29'], '0x0325213213000000000000000000000000000000000000000000000000')
st.equal(decoded['stab30'], '0x032454352324230000000000000000000000000000000000000000000000')
st.equal(decoded['stab31'], '0x32454351230000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab32'], '0x324324423432543543AB00000000000000000000000000000000000000000000')
st.equal(decoded['enumDec'], 'e240')
st.equal(decoded['stab'].value, '0x01')
st.equal(decoded['stab1'].value, '0x12')
st.equal(decoded['stab2'].value, '0x1579')
st.equal(decoded['stab3'].value, '0x359356')
st.equal(decoded['stab4'].value, '0x23750000')
st.equal(decoded['stab5'].value, '0x0235764500')
st.equal(decoded['stab6'].value, '0x324435000000')
st.equal(decoded['stab7'].value, '0x00432400000000')
st.equal(decoded['stab8'].value, '0x3245546457650000')
st.equal(decoded['stab9'].value, '0x034345430000000000')
st.equal(decoded['stab10'].value, '0x04543543654657000000')
st.equal(decoded['stab11'].value, '0x5435465400000000000000')
st.equal(decoded['stab12'].value, '0x030000000000000000000000')
st.equal(decoded['stab13'].value, '0x03243242345435000000000000')
st.equal(decoded['stab14'].value, '0x3245435435435300000000000000')
st.equal(decoded['stab15'].value, '0x032454434435000000000000000000')
st.equal(decoded['stab16'].value, '0x32454354440000000000000000000000')
st.equal(decoded['stab17'].value, '0x0324543432432432450000000000000000')
st.equal(decoded['stab18'].value, '0x032453432543543500000000000000000000')
st.equal(decoded['stab19'].value, '0x03245434354354350000000000000000000000')
st.equal(decoded['stab20'].value, '0x032454543543AB35000000000000000000000000')
st.equal(decoded['stab21'].value, '0x324544324234350000000000000000000000000000')
st.equal(decoded['stab22'].value, '0x324543AEF50000000000000000000000000000000000')
st.equal(decoded['stab23'].value, '0x3245435FFF000000000000000000000000000000000000')
st.equal(decoded['stab24'].value, '0x3245435F0000000000000000000000000000000000000000')
st.equal(decoded['stab25'].value, '0x3245435F000000000000000000000000000000000000000000')
st.equal(decoded['stab26'].value, '0x3245435F00000000000000000000000000000000000000000000')
st.equal(decoded['stab27'].value, '0x03245FFFFFFF000000000000000000000000000000000000000000')
st.equal(decoded['stab28'].value, '0x03241235000000000000000000000000000000000000000000000000')
st.equal(decoded['stab29'].value, '0x0325213213000000000000000000000000000000000000000000000000')
st.equal(decoded['stab30'].value, '0x032454352324230000000000000000000000000000000000000000000000')
st.equal(decoded['stab31'].value, '0x32454351230000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab32'].value, '0x324324423432543543AB00000000000000000000000000000000000000000000')
st.equal(decoded['enumDec'].value, 'e240')
st.equal(decoded['str1'].value, 'short')
st.equal(decoded['str12'].value, 'шеллы')
st.equal(decoded['str2'].value, 'long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long__long')
}
decoded = stateDecoder.solidityState({}, output.sources, 'byteStorage')
st.equal(decoded['b1'], false)
st.equal(decoded['a1'], '0x0000000000000000000000000000000000000000')
st.equal(decoded['b2'], false)
st.equal(decoded['b1'].value, false)
st.equal(decoded['a1'].value, '0x0000000000000000000000000000000000000000')
st.equal(decoded['b2'].value, false)
st.equal(decoded['dynb1'].value, '0x')
st.equal(decoded['dynb1'].length, '0x0')
st.equal(decoded['stab'], '0x00')
st.equal(decoded['stab1'], '0x00')
st.equal(decoded['stab2'], '0x0000')
st.equal(decoded['stab3'], '0x000000')
st.equal(decoded['stab4'], '0x00000000')
st.equal(decoded['stab5'], '0x0000000000')
st.equal(decoded['stab6'], '0x000000000000')
st.equal(decoded['stab7'], '0x00000000000000')
st.equal(decoded['stab8'], '0x0000000000000000')
st.equal(decoded['stab9'], '0x000000000000000000')
st.equal(decoded['stab10'], '0x00000000000000000000')
st.equal(decoded['stab11'], '0x0000000000000000000000')
st.equal(decoded['stab12'], '0x000000000000000000000000')
st.equal(decoded['stab13'], '0x00000000000000000000000000')
st.equal(decoded['stab14'], '0x0000000000000000000000000000')
st.equal(decoded['stab15'], '0x000000000000000000000000000000')
st.equal(decoded['stab16'], '0x00000000000000000000000000000000')
st.equal(decoded['stab17'], '0x0000000000000000000000000000000000')
st.equal(decoded['stab18'], '0x000000000000000000000000000000000000')
st.equal(decoded['stab19'], '0x00000000000000000000000000000000000000')
st.equal(decoded['stab20'], '0x0000000000000000000000000000000000000000')
st.equal(decoded['stab21'], '0x000000000000000000000000000000000000000000')
st.equal(decoded['stab22'], '0x00000000000000000000000000000000000000000000')
st.equal(decoded['stab23'], '0x0000000000000000000000000000000000000000000000')
st.equal(decoded['stab24'], '0x000000000000000000000000000000000000000000000000')
st.equal(decoded['stab25'], '0x00000000000000000000000000000000000000000000000000')
st.equal(decoded['stab26'], '0x0000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab27'], '0x000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab28'], '0x00000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab29'], '0x0000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab30'], '0x000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab31'], '0x00000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab32'], '0x0000000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['enumDec'], 'e0')
st.equal(decoded['stab'].value, '0x00')
st.equal(decoded['stab1'].value, '0x00')
st.equal(decoded['stab2'].value, '0x0000')
st.equal(decoded['stab3'].value, '0x000000')
st.equal(decoded['stab4'].value, '0x00000000')
st.equal(decoded['stab5'].value, '0x0000000000')
st.equal(decoded['stab6'].value, '0x000000000000')
st.equal(decoded['stab7'].value, '0x00000000000000')
st.equal(decoded['stab8'].value, '0x0000000000000000')
st.equal(decoded['stab9'].value, '0x000000000000000000')
st.equal(decoded['stab10'].value, '0x00000000000000000000')
st.equal(decoded['stab11'].value, '0x0000000000000000000000')
st.equal(decoded['stab12'].value, '0x000000000000000000000000')
st.equal(decoded['stab13'].value, '0x00000000000000000000000000')
st.equal(decoded['stab14'].value, '0x0000000000000000000000000000')
st.equal(decoded['stab15'].value, '0x000000000000000000000000000000')
st.equal(decoded['stab16'].value, '0x00000000000000000000000000000000')
st.equal(decoded['stab17'].value, '0x0000000000000000000000000000000000')
st.equal(decoded['stab18'].value, '0x000000000000000000000000000000000000')
st.equal(decoded['stab19'].value, '0x00000000000000000000000000000000000000')
st.equal(decoded['stab20'].value, '0x0000000000000000000000000000000000000000')
st.equal(decoded['stab21'].value, '0x000000000000000000000000000000000000000000')
st.equal(decoded['stab22'].value, '0x00000000000000000000000000000000000000000000')
st.equal(decoded['stab23'].value, '0x0000000000000000000000000000000000000000000000')
st.equal(decoded['stab24'].value, '0x000000000000000000000000000000000000000000000000')
st.equal(decoded['stab25'].value, '0x00000000000000000000000000000000000000000000000000')
st.equal(decoded['stab26'].value, '0x0000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab27'].value, '0x000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab28'].value, '0x00000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab29'].value, '0x0000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab30'].value, '0x000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab31'].value, '0x00000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['stab32'].value, '0x0000000000000000000000000000000000000000000000000000000000000000')
st.equal(decoded['enumDec'].value, 'e0')
st.equal(decoded['str1'].length, '0x0')
st.equal(decoded['str2'].length, '0x0')
st.equal(decoded['str1'].value, '')
@ -162,95 +162,95 @@ function testStructArrayStorage (st) {
var structArrayStorage = require('./contracts/structArrayStorage')
var output = compiler.compile(structArrayStorage.contract, 0)
var decoded = stateDecoder.solidityState(structArrayStorage.storage, output.sources, 'structArrayStorage')
st.equal(decoded['intStructDec']['i8'], '32')
st.equal(decoded['intStructDec']['i16'], '-54')
st.equal(decoded['intStructDec']['ui32'], '128')
st.equal(decoded['intStructDec']['i256'], '-1243565465756')
st.equal(decoded['intStructDec']['ui16'], '34556')
st.equal(decoded['intStructDec']['i32'], '-345446546')
st.equal(decoded['intStructDec'].value['i8'].value, '32')
st.equal(decoded['intStructDec'].value['i16'].value, '-54')
st.equal(decoded['intStructDec'].value['ui32'].value, '128')
st.equal(decoded['intStructDec'].value['i256'].value, '-1243565465756')
st.equal(decoded['intStructDec'].value['ui16'].value, '34556')
st.equal(decoded['intStructDec'].value['i32'].value, '-345446546')
st.equal(decoded['i5'].length, '0x7')
st.equal(decoded['i5'].value[0], '-2134')
st.equal(decoded['i5'].value[1], '345')
st.equal(decoded['i5'].value[2], '-3246')
st.equal(decoded['i5'].value[3], '4357')
st.equal(decoded['i5'].value[4], '324')
st.equal(decoded['i5'].value[5], '-2344')
st.equal(decoded['i5'].value[6], '3254')
st.equal(decoded['i5'].value[0].value, '-2134')
st.equal(decoded['i5'].value[1].value, '345')
st.equal(decoded['i5'].value[2].value, '-3246')
st.equal(decoded['i5'].value[3].value, '4357')
st.equal(decoded['i5'].value[4].value, '324')
st.equal(decoded['i5'].value[5].value, '-2344')
st.equal(decoded['i5'].value[6].value, '3254')
st.equal(decoded['idyn5'].length, '0x9')
st.equal(decoded['idyn5'].value[0], '-2134')
st.equal(decoded['idyn5'].value[1], '345')
st.equal(decoded['idyn5'].value[2], '-3246')
st.equal(decoded['idyn5'].value[3], '4357')
st.equal(decoded['idyn5'].value[4], '324')
st.equal(decoded['idyn5'].value[5], '-2344')
st.equal(decoded['idyn5'].value[6], '3254')
st.equal(decoded['idyn5'].value[7], '-254')
st.equal(decoded['idyn5'].value[8], '-2354')
st.equal(decoded['idyn5'].value[0].value, '-2134')
st.equal(decoded['idyn5'].value[1].value, '345')
st.equal(decoded['idyn5'].value[2].value, '-3246')
st.equal(decoded['idyn5'].value[3].value, '4357')
st.equal(decoded['idyn5'].value[4].value, '324')
st.equal(decoded['idyn5'].value[5].value, '-2344')
st.equal(decoded['idyn5'].value[6].value, '3254')
st.equal(decoded['idyn5'].value[7].value, '-254')
st.equal(decoded['idyn5'].value[8].value, '-2354')
st.equal(decoded['dyn1'].length, '0x4')
st.equal(decoded['dyn1'].value[0].length, '0x1')
st.equal(decoded['dyn1'].value[0].value[0], '3')
st.equal(decoded['dyn1'].value[0].value[0].value, '3')
st.equal(decoded['dyn1'].value[1].length, '0x3')
st.equal(decoded['dyn1'].value[1].value[0], '12')
st.equal(decoded['dyn1'].value[1].value[1], '-12')
st.equal(decoded['dyn1'].value[1].value[2], '-1234')
st.equal(decoded['dyn1'].value[1].value[0].value, '12')
st.equal(decoded['dyn1'].value[1].value[1].value, '-12')
st.equal(decoded['dyn1'].value[1].value[2].value, '-1234')
st.equal(decoded['dyn1'].value[2].length, '0xa')
st.equal(decoded['dyn1'].value[2].value[0], '1')
st.equal(decoded['dyn1'].value[2].value[1], '12')
st.equal(decoded['dyn1'].value[2].value[2], '1235')
st.equal(decoded['dyn1'].value[2].value[3], '-12')
st.equal(decoded['dyn1'].value[2].value[4], '-123456')
st.equal(decoded['dyn1'].value[2].value[5], '-23435435')
st.equal(decoded['dyn1'].value[2].value[6], '543543')
st.equal(decoded['dyn1'].value[2].value[7], '2')
st.equal(decoded['dyn1'].value[2].value[8], '-1')
st.equal(decoded['dyn1'].value[2].value[9], '232432')
st.equal(decoded['dyn1'].value[2].value[0].value, '1')
st.equal(decoded['dyn1'].value[2].value[1].value, '12')
st.equal(decoded['dyn1'].value[2].value[2].value, '1235')
st.equal(decoded['dyn1'].value[2].value[3].value, '-12')
st.equal(decoded['dyn1'].value[2].value[4].value, '-123456')
st.equal(decoded['dyn1'].value[2].value[5].value, '-23435435')
st.equal(decoded['dyn1'].value[2].value[6].value, '543543')
st.equal(decoded['dyn1'].value[2].value[7].value, '2')
st.equal(decoded['dyn1'].value[2].value[8].value, '-1')
st.equal(decoded['dyn1'].value[2].value[9].value, '232432')
st.equal(decoded['dyn1'].value[3].length, '0x2')
st.equal(decoded['dyn1'].value[3].value[0], '232432')
st.equal(decoded['dyn1'].value[3].value[0], '232432')
st.equal(decoded['dyn1'].value[3].value[0].value, '232432')
st.equal(decoded['dyn1'].value[3].value[0].value, '232432')
st.equal(decoded['dyn2'].length, '0x2')
st.equal(decoded['dyn2'].value[0].length, '0x4')
st.equal(decoded['dyn2'].value[0].value[0].value[0], '23')
st.equal(decoded['dyn2'].value[0].value[0].value[1], '-23')
st.equal(decoded['dyn2'].value[0].value[0].value[2], '-28')
st.equal(decoded['dyn2'].value[0].value[1].value[0], '23')
st.equal(decoded['dyn2'].value[0].value[1].value[1], '-23')
st.equal(decoded['dyn2'].value[0].value[1].value[2], '-28')
st.equal(decoded['dyn2'].value[0].value[2].value[0], '23')
st.equal(decoded['dyn2'].value[0].value[2].value[1], '-23')
st.equal(decoded['dyn2'].value[0].value[2].value[2], '-28')
st.equal(decoded['dyn2'].value[0].value[3].value[0], '23')
st.equal(decoded['dyn2'].value[0].value[3].value[1], '-23')
st.equal(decoded['dyn2'].value[0].value[3].value[2], '-28')
st.equal(decoded['dyn2'].value[0].value[0].value[0].value, '23')
st.equal(decoded['dyn2'].value[0].value[0].value[1].value, '-23')
st.equal(decoded['dyn2'].value[0].value[0].value[2].value, '-28')
st.equal(decoded['dyn2'].value[0].value[1].value[0].value, '23')
st.equal(decoded['dyn2'].value[0].value[1].value[1].value, '-23')
st.equal(decoded['dyn2'].value[0].value[1].value[2].value, '-28')
st.equal(decoded['dyn2'].value[0].value[2].value[0].value, '23')
st.equal(decoded['dyn2'].value[0].value[2].value[1].value, '-23')
st.equal(decoded['dyn2'].value[0].value[2].value[2].value, '-28')
st.equal(decoded['dyn2'].value[0].value[3].value[0].value, '23')
st.equal(decoded['dyn2'].value[0].value[3].value[1].value, '-23')
st.equal(decoded['dyn2'].value[0].value[3].value[2].value, '-28')
st.equal(decoded['dyn2'].value[1].length, '0x4')
st.equal(decoded['dyn2'].value[1].value[0].value[0], '23')
st.equal(decoded['dyn2'].value[1].value[0].value[1], '-23')
st.equal(decoded['dyn2'].value[1].value[0].value[2], '-28')
st.equal(decoded['dyn2'].value[1].value[1].value[0], '23')
st.equal(decoded['dyn2'].value[1].value[1].value[1], '-23')
st.equal(decoded['dyn2'].value[1].value[1].value[2], '-28')
st.equal(decoded['dyn2'].value[1].value[2].value[0], '23')
st.equal(decoded['dyn2'].value[1].value[2].value[1], '-23')
st.equal(decoded['dyn2'].value[1].value[2].value[2], '-28')
st.equal(decoded['dyn2'].value[1].value[3].value[0], '23')
st.equal(decoded['dyn2'].value[1].value[3].value[1], '-23')
st.equal(decoded['dyn2'].value[1].value[3].value[2], '-28')
st.equal(decoded['arrayStruct'].value[0].value[0].i8, '34')
st.equal(decoded['arrayStruct'].value[0].value[0].str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[0].value[1].i8, '-123')
st.equal(decoded['arrayStruct'].value[0].value[1].str.value, 'test_str_long test_str_lo ngtest_str_longtest_str_ longtest_str_longtest_ str_longtest_str_l ongtest_str_long')
st.equal(decoded['arrayStruct'].value[1].value[0].i8, '50')
st.equal(decoded['arrayStruct'].value[1].value[0].str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[2].value[0].i8, '60')
st.equal(decoded['arrayStruct'].value[2].value[0].str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[2].value[1].i8, '84')
st.equal(decoded['arrayStruct'].value[2].value[1].str.value, 'test_str_long test_str_lo ngtest_str_longtest_str_ longtest_str_longtest_ str_longtest_str_l ongtest_str_long')
st.equal(decoded['arrayStruct'].value[2].value[2].i8, '-34')
st.equal(decoded['arrayStruct'].value[2].value[2].str.value, 'test_str_short')
st.equal(decoded['dyn2'].value[1].value[0].value[0].value, '23')
st.equal(decoded['dyn2'].value[1].value[0].value[1].value, '-23')
st.equal(decoded['dyn2'].value[1].value[0].value[2].value, '-28')
st.equal(decoded['dyn2'].value[1].value[1].value[0].value, '23')
st.equal(decoded['dyn2'].value[1].value[1].value[1].value, '-23')
st.equal(decoded['dyn2'].value[1].value[1].value[2].value, '-28')
st.equal(decoded['dyn2'].value[1].value[2].value[0].value, '23')
st.equal(decoded['dyn2'].value[1].value[2].value[1].value, '-23')
st.equal(decoded['dyn2'].value[1].value[2].value[2].value, '-28')
st.equal(decoded['dyn2'].value[1].value[3].value[0].value, '23')
st.equal(decoded['dyn2'].value[1].value[3].value[1].value, '-23')
st.equal(decoded['dyn2'].value[1].value[3].value[2].value, '-28')
st.equal(decoded['arrayStruct'].value[0].value[0].value.i8.value, '34')
st.equal(decoded['arrayStruct'].value[0].value[0].value.str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[0].value[1].value.i8.value, '-123')
st.equal(decoded['arrayStruct'].value[0].value[1].value.str.value, 'test_str_long test_str_lo ngtest_str_longtest_str_ longtest_str_longtest_ str_longtest_str_l ongtest_str_long')
st.equal(decoded['arrayStruct'].value[1].value[0].value.i8.value, '50')
st.equal(decoded['arrayStruct'].value[1].value[0].value.str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[2].value[0].value.i8.value, '60')
st.equal(decoded['arrayStruct'].value[2].value[0].value.str.value, 'test_str_short')
st.equal(decoded['arrayStruct'].value[2].value[1].value.i8.value, '84')
st.equal(decoded['arrayStruct'].value[2].value[1].value.str.value, 'test_str_long test_str_lo ngtest_str_longtest_str_ longtest_str_longtest_ str_longtest_str_l ongtest_str_long')
st.equal(decoded['arrayStruct'].value[2].value[2].value.i8.value, '-34')
st.equal(decoded['arrayStruct'].value[2].value[2].value.str.value, 'test_str_short')
}

Loading…
Cancel
Save