OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / net / bpf / vm_ret_test.go
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package bpf_test
6
7 import (
8         "testing"
9
10         "golang.org/x/net/bpf"
11 )
12
13 func TestVMRetA(t *testing.T) {
14         vm, done, err := testVM(t, []bpf.Instruction{
15                 bpf.LoadAbsolute{
16                         Off:  8,
17                         Size: 1,
18                 },
19                 bpf.RetA{},
20         })
21         if err != nil {
22                 t.Fatalf("failed to load BPF program: %v", err)
23         }
24         defer done()
25
26         out, err := vm.Run([]byte{
27                 0xff, 0xff, 0xff, 0xff,
28                 0xff, 0xff, 0xff, 0xff,
29                 9,
30         })
31         if err != nil {
32                 t.Fatalf("unexpected error while running program: %v", err)
33         }
34         if want, got := 1, out; want != got {
35                 t.Fatalf("unexpected number of output bytes:\n- want: %d\n-  got: %d",
36                         want, got)
37         }
38 }
39
40 func TestVMRetALargerThanInput(t *testing.T) {
41         vm, done, err := testVM(t, []bpf.Instruction{
42                 bpf.LoadAbsolute{
43                         Off:  8,
44                         Size: 2,
45                 },
46                 bpf.RetA{},
47         })
48         if err != nil {
49                 t.Fatalf("failed to load BPF program: %v", err)
50         }
51         defer done()
52
53         out, err := vm.Run([]byte{
54                 0xff, 0xff, 0xff, 0xff,
55                 0xff, 0xff, 0xff, 0xff,
56                 0, 255,
57         })
58         if err != nil {
59                 t.Fatalf("unexpected error while running program: %v", err)
60         }
61         if want, got := 2, out; want != got {
62                 t.Fatalf("unexpected number of output bytes:\n- want: %d\n-  got: %d",
63                         want, got)
64         }
65 }
66
67 func TestVMRetConstant(t *testing.T) {
68         vm, done, err := testVM(t, []bpf.Instruction{
69                 bpf.RetConstant{
70                         Val: 9,
71                 },
72         })
73         if err != nil {
74                 t.Fatalf("failed to load BPF program: %v", err)
75         }
76         defer done()
77
78         out, err := vm.Run([]byte{
79                 0xff, 0xff, 0xff, 0xff,
80                 0xff, 0xff, 0xff, 0xff,
81                 0, 1,
82         })
83         if err != nil {
84                 t.Fatalf("unexpected error while running program: %v", err)
85         }
86         if want, got := 1, out; want != got {
87                 t.Fatalf("unexpected number of output bytes:\n- want: %d\n-  got: %d",
88                         want, got)
89         }
90 }
91
92 func TestVMRetConstantLargerThanInput(t *testing.T) {
93         vm, done, err := testVM(t, []bpf.Instruction{
94                 bpf.RetConstant{
95                         Val: 16,
96                 },
97         })
98         if err != nil {
99                 t.Fatalf("failed to load BPF program: %v", err)
100         }
101         defer done()
102
103         out, err := vm.Run([]byte{
104                 0xff, 0xff, 0xff, 0xff,
105                 0xff, 0xff, 0xff, 0xff,
106                 0, 1,
107         })
108         if err != nil {
109                 t.Fatalf("unexpected error while running program: %v", err)
110         }
111         if want, got := 2, out; want != got {
112                 t.Fatalf("unexpected number of output bytes:\n- want: %d\n-  got: %d",
113                         want, got)
114         }
115 }