-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.js
69 lines (55 loc) · 2.4 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
const test = require('tape')
const Nanoeth = require('nanoeth/http')
const { utils, units } = require('eth-helpers')
const { abi, rlp } = require('eth-serde')
const eth = new Nanoeth('http://localhost:8545')
const VegaTokenProxy = require('.')
test('simple', async function (assert) {
// Deterministic addresses from the first run of `truffle test`
// in vegaproject/Vega_Token_V2
const erc20Address = '0xAc6F6038bf90fb4DF40a54705F8f3Ca87fe01A11'
const vestingAddress = '0xa956B5c58B4Ac8Dd1D44Ade3e8972A16e9C917E4'
const tx = await mined(eth, {
data: VegaTokenProxy.create({
erc20Address,
vestingAddress
}),
from: await eth.coinbase(),
gasLimit: (await eth.getBlockByNumber(await eth.blockNumber())).gasLimit,
gasPrice: await eth.gasPrice()
})
const contract = new VegaTokenProxy(tx.contractAddress)
console.log(tx.contractAddress)
const name = decodeString(await eth.call(contract.name(), 'latest'))
assert.equal(name, 'Vega (Locked)', 'IERC20.name()')
const symbol = decodeString(await eth.call(contract.symbol(), 'latest'))
assert.equal(symbol, 'VEGA', 'IERC20.symbol()')
const symbol2 = await eth.call({ to: tx.contractAddress, data: '0x06fdde03' }, 'latest')
console.log(symbol2)
const decimals = utils.parse.number(await eth.call(contract.decimals(), 'latest'))
assert.equal(decimals, 18, 'IERC20.decimals()')
const totalSupplyTx = contract.totalSupply()
const totalSupply = utils.parse.bigint(await eth.call(totalSupplyTx, 'latest'))
totalSupplyTx.to = erc20Address
const totalSupplyErc20 = utils.parse.bigint(await eth.call(totalSupplyTx, 'latest'))
assert.equal(totalSupply, totalSupplyErc20, 'IERC20.totalSupply()')
const userAddr = '0x4ac2efe06b867213698ab317e9569872f8a5e85a'
const proxyBalance = utils.parse.bigint(await eth.call(contract.balanceOf(userAddr)))
const vestingBalance = utils.parse.bigint(await eth.call({
to: vestingAddress,
data: '0x' + abi.encodeMethod('user_total_all_tranches', ['address'], [userAddr]).toString('hex')
}))
assert.equal(proxyBalance, vestingBalance, 'IERC20.balanceOf(userAddr)')
assert.end()
})
async function mined (eth, tx) {
const id = await eth.sendTransaction(tx)
return eth.getTransactionReceipt(id)
}
function decodeString (hex) {
const items = hex.slice(2).split(/(.{32})/)
console.log(items)
const res = rlp.decode(Buffer.from(hex.slice(2), 'hex'))
console.log(res)
return res
}