8 func TestConvertProgram(t *testing.T) {
13 fun func(prog []byte) ([]byte, error)
16 desc: "multi sign 2-1",
17 program: "0020e402787b2bf9749f8fcdcc132a44e86bacf36780ec5df2189a11020d590533ee",
18 script: "76aa20e402787b2bf9749f8fcdcc132a44e86bacf36780ec5df2189a11020d590533ee8808ffffffffffffffff7c00c0",
19 fun: ConvertP2SHProgram,
22 desc: "multi sign 5-3",
23 program: "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66",
24 script: "76aa200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac668808ffffffffffffffff7c00c0",
25 fun: ConvertP2SHProgram,
29 program: "001437e1aec83a4e6587ca9609e4e5aa728db7007449",
30 script: "76ab1437e1aec83a4e6587ca9609e4e5aa728db700744988ae7cac",
31 fun: ConvertP2PKHSigProgram,
35 for i, c := range cases {
36 progBytes, err := hex.DecodeString(c.program)
41 gotScript, err := c.fun(progBytes)
42 if c.script != hex.EncodeToString(gotScript) {
43 t.Errorf("case #%d (%s) got script:%s, expect script:%s", i, c.desc, hex.EncodeToString(gotScript), c.script)
48 func TestProgramType(t *testing.T) {
52 fun func(prog []byte) bool
56 desc: "normal P2WPKHScript",
57 program: "001437e1aec83a4e6587ca9609e4e5aa728db7007449",
62 desc: "ugly P2WPKHScript",
63 program: "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66",
68 desc: "ugly P2WPKHScript",
74 desc: "normal P2WSHScript",
75 program: "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66",
80 desc: "ugly P2WSHScript",
81 program: "001437e1aec83a4e6587ca9609e4e5aa728db7007449",
86 desc: "ugly P2WSHScript",
92 desc: "normal IsStraightforward",
94 fun: IsStraightforward,
98 desc: "ugly IsStraightforward",
99 program: "001437e1aec83a4e6587ca9609e4e5aa728db7007449",
100 fun: IsStraightforward,
104 desc: "ugly IsStraightforward",
105 program: "00200824e931fb806bd77fdcd291aad3bd0a4493443a4120062bd659e64a3e0bac66",
106 fun: IsStraightforward,
111 for i, c := range cases {
112 progBytes, err := hex.DecodeString(c.program)
117 if c.fun(progBytes) != c.yes {
118 t.Errorf("case #%d (%s) got %t, expect %t", i, c.desc, c.fun(progBytes), c.yes)