8 "github.com/vapor/protocol/vm"
11 func TestAddJump(t *testing.T) {
15 fn func(t *testing.T, b *Builder)
18 "single jump single target not yet defined",
20 func(t *testing.T, b *Builder) {
21 target := b.NewJumpTarget()
24 b.SetJumpTarget(target)
28 "single jump single target already defined",
30 func(t *testing.T, b *Builder) {
31 target := b.NewJumpTarget()
32 b.SetJumpTarget(target)
38 "two jumps single target not yet defined",
39 "630c00000061630c00000061",
40 func(t *testing.T, b *Builder) {
41 target := b.NewJumpTarget()
46 b.SetJumpTarget(target)
50 "two jumps single target already defined",
51 "616300000000616300000000",
52 func(t *testing.T, b *Builder) {
53 target := b.NewJumpTarget()
54 b.SetJumpTarget(target)
62 "two jumps single target, one not yet defined, one already defined",
63 "630600000061616306000000",
64 func(t *testing.T, b *Builder) {
65 target := b.NewJumpTarget()
68 b.SetJumpTarget(target)
74 "two jumps, two targets, not yet defined",
75 "630c00000061630d0000006161",
76 func(t *testing.T, b *Builder) {
77 target1 := b.NewJumpTarget()
80 target2 := b.NewJumpTarget()
83 b.SetJumpTarget(target1)
85 b.SetJumpTarget(target2)
89 "two jumps, two targets, already defined",
90 "6161616301000000616302000000",
91 func(t *testing.T, b *Builder) {
93 target1 := b.NewJumpTarget()
94 b.SetJumpTarget(target1)
96 target2 := b.NewJumpTarget()
97 b.SetJumpTarget(target2)
105 for _, c := range cases {
106 t.Run(c.name, func(t *testing.T) {
109 prog, err := b.Build()
113 want, err := hex.DecodeString(c.wantHex)
117 if !bytes.Equal(prog, want) {
118 t.Errorf("got %x, want %x", prog, want)