UNPKG

1.44 kBJavaScriptView Raw
1'use strict'
2
3var tape = require('tape')
4var disassemble = require('../src/code/disassembler').disassemble
5
6tape('Disassembler', function (t) {
7 t.test('empty', function (st) {
8 st.plan(1)
9 st.equal(disassemble(''), '')
10 })
11 t.test('add', function (st) {
12 st.plan(1)
13 st.equal(disassemble('0x01'), 'add')
14 })
15 t.test('push', function (st) {
16 st.plan(1)
17 st.equal(disassemble('0x640203'), '0x0203000000')
18 })
19 t.test('complexcode', function (st) {
20 st.plan(1)
21 var code = '60606040526009600060005055607e8060186000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480630dbe671f146039576035565b6002565b3460025760486004805050604a565b005b6000600090505b600a811015607a5760006000818150548092919060010191905055505b80806001019150506051565b5b5056'
22 var asm = `mstore(0x40, 0x60)
230x09
240x00
25pop(0x00)
26sstore
270x7e
28dup1
290x18
300x00
31codecopy
320x00
33return
34mstore(0x40, 0x60)
35calldataload(0x00)
360x0100000000000000000000000000000000000000000000000000000000
37swap1
38div
39dup1
400x0dbe671f
41eq
420x39
43jumpi
44jump(0x35)
45label1:
46jump(0x02)
47label2:
48jumpi(0x02, callvalue())
490x48
500x04
51dup1
52pop
53pop
54jump(0x4a)
55label3:
56stop()
57label4:
580x00
590x00
60swap1
61pop
62label5:
630x0a
64dup2
65lt
66iszero
670x7a
68jumpi
690x00
700x00
71dup2
72dup2
73pop
74sload
75dup1
76swap3
77swap2
78swap1
790x01
80add
81swap2
82swap1
83pop
84sstore
85pop
86label6:
87dup1
88dup1
890x01
90add
91swap2
92pop
93pop
94jump(0x51)
95label7:
96label8:
97pop
98jump`
99 st.equal(disassemble(code), asm)
100 })
101})