From 3ff04e107fdc6c57cf313add6b6c544992b58a53 Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 28 Nov 2016 15:02:22 +0100 Subject: [PATCH] return only first 300 --- src/solidity/types/ArrayType.js | 8 +- test/solidity/storageDecoder.js | 149 +++++++++++++++++--------------- 2 files changed, 87 insertions(+), 70 deletions(-) diff --git a/src/solidity/types/ArrayType.js b/src/solidity/types/ArrayType.js index 2358d5d0a8..480b915171 100644 --- a/src/solidity/types/ArrayType.js +++ b/src/solidity/types/ArrayType.js @@ -42,7 +42,8 @@ ArrayType.prototype.decodeFromStorage = function (location, storageContent) { } var k = util.toBN(0) var one = util.toBN(1) - while (k.lt(size)) { + var max = new BN(300) + while (k.lt(size) && k.lt(max)) { if (currentLocation.offset + this.underlyingType.storageBytes > 32) { currentLocation.offset = 0 currentLocation.slot = '0x' + util.add(currentLocation.slot, one).toString(16) @@ -56,7 +57,10 @@ ArrayType.prototype.decodeFromStorage = function (location, storageContent) { } k = k.add(one) } - return ret + return { + value: ret, + length: '0x' + size.toString(16) + } } module.exports = ArrayType diff --git a/test/solidity/storageDecoder.js b/test/solidity/storageDecoder.js index 8eb55e4f1a..40333eb416 100644 --- a/test/solidity/storageDecoder.js +++ b/test/solidity/storageDecoder.js @@ -169,75 +169,88 @@ function testStructArrayStorage (st) { st.equal(decoded['intStructDec']['ui16'], '34556') st.equal(decoded['intStructDec']['i32'], '-345446546') - st.equal(decoded['i5'][0], '-2134') - st.equal(decoded['i5'][1], '345') - st.equal(decoded['i5'][2], '-3246') - st.equal(decoded['i5'][3], '4357') - st.equal(decoded['i5'][4], '324') - st.equal(decoded['i5'][5], '-2344') - st.equal(decoded['i5'][6], '3254') + 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['idyn5'][0], '-2134') - st.equal(decoded['idyn5'][1], '345') - st.equal(decoded['idyn5'][2], '-3246') - st.equal(decoded['idyn5'][3], '4357') - st.equal(decoded['idyn5'][4], '324') - st.equal(decoded['idyn5'][5], '-2344') - st.equal(decoded['idyn5'][6], '3254') - st.equal(decoded['idyn5'][7], '-254') - st.equal(decoded['idyn5'][8], '-2354') + 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['dyn1'][0][0], '3') - st.equal(decoded['dyn1'][1][0], '12') - st.equal(decoded['dyn1'][1][1], '-12') - st.equal(decoded['dyn1'][1][2], '-1234') - st.equal(decoded['dyn1'][2][0], '1') - st.equal(decoded['dyn1'][2][1], '12') - st.equal(decoded['dyn1'][2][2], '1235') - st.equal(decoded['dyn1'][2][3], '-12') - st.equal(decoded['dyn1'][2][4], '-123456') - st.equal(decoded['dyn1'][2][5], '-23435435') - st.equal(decoded['dyn1'][2][6], '543543') - st.equal(decoded['dyn1'][2][7], '2') - st.equal(decoded['dyn1'][2][8], '-1') - st.equal(decoded['dyn1'][2][9], '232432') - st.equal(decoded['dyn1'][3][0], '232432') - st.equal(decoded['dyn1'][3][0], '232432') + 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['dyn2'][0][0][0], '23') - st.equal(decoded['dyn2'][0][0][1], '-23') - st.equal(decoded['dyn2'][0][0][2], '-28') - st.equal(decoded['dyn2'][0][1][0], '23') - st.equal(decoded['dyn2'][0][1][1], '-23') - st.equal(decoded['dyn2'][0][1][2], '-28') - st.equal(decoded['dyn2'][0][2][0], '23') - st.equal(decoded['dyn2'][0][2][1], '-23') - st.equal(decoded['dyn2'][0][2][2], '-28') - st.equal(decoded['dyn2'][0][3][0], '23') - st.equal(decoded['dyn2'][0][3][1], '-23') - st.equal(decoded['dyn2'][0][3][2], '-28') - st.equal(decoded['dyn2'][1][0][0], '23') - st.equal(decoded['dyn2'][1][0][1], '-23') - st.equal(decoded['dyn2'][1][0][2], '-28') - st.equal(decoded['dyn2'][1][1][0], '23') - st.equal(decoded['dyn2'][1][1][1], '-23') - st.equal(decoded['dyn2'][1][1][2], '-28') - st.equal(decoded['dyn2'][1][2][0], '23') - st.equal(decoded['dyn2'][1][2][1], '-23') - st.equal(decoded['dyn2'][1][2][2], '-28') - st.equal(decoded['dyn2'][1][3][0], '23') - st.equal(decoded['dyn2'][1][3][1], '-23') - st.equal(decoded['dyn2'][1][3][2], '-28') - st.equal(decoded['arrayStruct'][0][0].i8, '34') - st.equal(decoded['arrayStruct'][0][0].str.value, 'test_str_short') - st.equal(decoded['arrayStruct'][0][1].i8, '-123') - st.equal(decoded['arrayStruct'][0][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'][1][0].i8, '50') - st.equal(decoded['arrayStruct'][1][0].str.value, 'test_str_short') - st.equal(decoded['arrayStruct'][2][0].i8, '60') - st.equal(decoded['arrayStruct'][2][0].str.value, 'test_str_short') - st.equal(decoded['arrayStruct'][2][1].i8, '84') - st.equal(decoded['arrayStruct'][2][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'][2][2].i8, '-34') - st.equal(decoded['arrayStruct'][2][2].str.value, 'test_str_short') + 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[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[3].length, '0x2') + st.equal(decoded['dyn1'].value[3].value[0], '232432') + st.equal(decoded['dyn1'].value[3].value[0], '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[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') }