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/libs/remix-lib/test/txHelper.ts

168 lines
3.5 KiB

'use strict'
import tape from 'tape'
import * as txHelper from '../src/execution/txHelper'
tape('getFunction', function (st) {
st.plan(11)
let fn = txHelper.getFunction(JSON.parse(abi), 'o((address,uint256))')
st.equal(fn.name, 'o')
fn = txHelper.getFunction(JSON.parse(abi), 'i(bytes32)')
st.equal(fn.name, 'i')
fn = txHelper.getFunction(JSON.parse(abi), 'o1(string,(address,uint256),int256,int256[][3],(address,uint256)[3][])')
st.equal(fn.name, 'o1')
fn = txHelper.getConstructorInterface(JSON.parse(abi))
st.equal(fn.type, 'constructor')
fn = txHelper.getFallbackInterface(JSON.parse(abi))
st.equal(fn.type, 'fallback')
fn = txHelper.getReceiveInterface(JSON.parse(abi))
st.equal(fn.type, 'receive')
fn = txHelper.getFunction(testTupleAbi, 'setUser(tuple)') // some compiler version might resolve to tuple.
st.equal(fn.name, 'setUser')
st.equal(fn.inputs[0].type, 'tuple')
st.equal(fn.inputs[0].name, 'user')
fn = txHelper.getFunctionLiner(testTupleAbi[0], true)
st.equal(fn, 'setUser((string,uint256))')
fn = txHelper.getFunctionLiner(testTupleAbi[0], false)
st.equal(fn, 'setUser(tuple)')
})
const abi = `[
{
"constant": false,
"inputs": [
{
"name": "_param",
"type": "bytes32"
}
],
"name": "i",
"outputs": [
{
"name": "_t",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_g",
"type": "string"
},
{
"components": [
{
"name": "addr",
"type": "address"
},
{
"name": "age",
"type": "uint256"
}
],
"name": "_p",
"type": "tuple"
},
{
"name": "_pg",
"type": "int256"
},
{
"name": "",
"type": "int256[][3]"
},
{
"components": [
{
"name": "addr",
"type": "address"
},
{
"name": "age",
"type": "uint256"
}
],
"name": "",
"type": "tuple[3][]"
}
],
"name": "o1",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"components": [
{
"name": "addr",
"type": "address"
},
{
"name": "age",
"type": "uint256"
}
],
"name": "_p",
"type": "tuple"
}
],
"name": "o",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "_g",
"type": "bytes32"
},
{
"components": [
{
"name": "addr",
"type": "address"
},
{
"name": "age",
"type": "uint256"
}
],
"name": "u",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": false,
"stateMutability": "nonpayable",
"type": "fallback"
},
{
"payable": true,
"stateMutability": "payable",
"type": "receive"
}
]`
const testTupleAbi = [{ "inputs":[{ "components":[{ "internalType":"string","name":"name","type":"string" },{ "internalType":"uint256","name":"age","type":"uint256" }],"internalType":"struct Example.User","name":"user","type":"tuple" }],"name":"setUser","outputs":[],"stateMutability":"nonpayable","type":"function" },{ "inputs":[{ "internalType":"address","name":"","type":"address" }],"name":"userByAddress","outputs":[{ "internalType":"string","name":"name","type":"string" },{ "internalType":"uint256","name":"age","type":"uint256" }],"stateMutability":"view","type":"function" }]