remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
remix-project/test/solidity/decodeInfo.js

91 lines
5.4 KiB

8 years ago
'use strict'
var tape = require('tape')
var compiler = require('solc')
var index = require('../../babelify-src/index')
var contracts = require('./contracts/miscContracts')
8 years ago
var simplecontracts = require('./contracts/simpleContract')
8 years ago
tape('solidity', function (t) {
t.test('astHelper, decodeInfo', function (st) {
var output = compiler.compile(contracts, 0)
8 years ago
var state = index.solidity.astHelper.extractStateDefinitions(':contractUint', output.sources)
8 years ago
var states = index.solidity.astHelper.extractStatesDefinitions(output.sources)
var stateDef = state.stateDefinitions
var decodeInfo = index.solidity.decodeInfo.parseType(stateDef[0].attributes.type, states, 'contractUint')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 1, 'uint8')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[2].attributes.type, states, 'contractUint')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 32, 'uint256')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[3].attributes.type, states, 'contractUint')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 32, 'uint256')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[4].attributes.type, states, 'contractUint')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 16, 'bytes16')
8 years ago
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':contractStructAndArray', output.sources)
8 years ago
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[1].attributes.type, states, 'contractStructAndArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 2, 32, 'struct contractStructAndArray.structDef')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[2].attributes.type, states, 'contractStructAndArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 6, 32, 'struct contractStructAndArray.structDef[3]')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[3].attributes.type, states, 'contractStructAndArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 2, 32, 'bytes12[4]')
8 years ago
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':contractArray', output.sources)
8 years ago
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[0].attributes.type, states, 'contractArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 32, 'uint32[5]')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[1].attributes.type, states, 'contractArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 32, 'int8[]')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[2].attributes.type, states, 'contractArray')
8 years ago
checkDecodeInfo(st, decodeInfo, 4, 32, 'int16[][3][][4]')
8 years ago
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':contractEnum', output.sources)
8 years ago
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[1].attributes.type, states, 'contractEnum')
checkDecodeInfo(st, decodeInfo, 1, 2, 'enum')
8 years ago
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':contractSmallVariable', output.sources)
8 years ago
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[0].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 1, 'int8')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[1].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 1, 'uint8')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[2].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 2, 'uint16')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[3].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 4, 'int32')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[4].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 32, 'uint256')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[5].attributes.type, states, 'contractSmallVariable')
8 years ago
checkDecodeInfo(st, decodeInfo, 1, 2, 'int16')
8 years ago
8 years ago
output = compiler.compile(simplecontracts, 0)
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':simpleContract', output.sources)
8 years ago
states = index.solidity.astHelper.extractStatesDefinitions(output.sources)
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[2].attributes.type, states, 'simpleContract')
8 years ago
checkDecodeInfo(st, decodeInfo, 2, 32, 'struct simpleContract.structDef')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[3].attributes.type, states, 'simpleContract')
8 years ago
checkDecodeInfo(st, decodeInfo, 6, 32, 'struct simpleContract.structDef[3]')
8 years ago
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[4].attributes.type, states, 'simpleContract')
checkDecodeInfo(st, decodeInfo, 1, 1, 'enum')
8 years ago
state = index.solidity.astHelper.extractStateDefinitions(':test2', output.sources)
8 years ago
stateDef = state.stateDefinitions
decodeInfo = index.solidity.decodeInfo.parseType(stateDef[0].attributes.type, states, 'test1')
8 years ago
checkDecodeInfo(st, decodeInfo, 0, 32, 'struct test1.str')
8 years ago
8 years ago
state = index.solidity.stateDecoder.extractStateVariables(':test2', output.sources)
8 years ago
checkDecodeInfo(st, decodeInfo, 0, 32, 'struct test1.str')
8 years ago
8 years ago
st.end()
})
})
function checkDecodeInfo (st, decodeInfo, storageSlots, storageBytes, typeName) {
st.equal(decodeInfo.storageSlots, storageSlots)
8 years ago
st.equal(decodeInfo.storageBytes, storageBytes)
st.equal(decodeInfo.typeName, typeName)
}