return only first 300

pull/7/head
yann300 8 years ago
parent e85fd4ce7f
commit 3ff04e107f
  1. 8
      src/solidity/types/ArrayType.js
  2. 149
      test/solidity/storageDecoder.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

@ -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')
}

Loading…
Cancel
Save