MCPcopy Create free account
hub / github.com/copernet/copernicus / TestGetScriptNum

Function TestGetScriptNum

model/script/scriptnum_test.go:19–128  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

17}
18
19func TestGetScriptNum(t *testing.T) {
20 t.Parallel()
21
22 //errNumTooBig := errors.New("script number overflow")
23 //errMinimalData := errors.New("non-minimally encoded script number")
24 errNumOverflow := errcode.New(errcode.ScriptErrUnknownError)
25 errNonMinimal := errcode.New(errcode.ScriptErrUnknownError)
26
27 tests := []struct {
28 serialized []byte
29 num ScriptNum
30 numLen int
31 minimalEncoding bool
32 err error
33 }{
34 // Minimal encoding must reject negative 0.
35 {hexToBytes("80"), ScriptNum{0}, DefaultMaxNumSize, true, errNonMinimal},
36
37 // Minimally encoded valid values with minimal encoding flag.
38 // Should not error and return expected integral number.
39 {nil, ScriptNum{0}, DefaultMaxNumSize, true, nil},
40 {hexToBytes("01"), ScriptNum{1}, DefaultMaxNumSize, true, nil},
41 {hexToBytes("81"), ScriptNum{-1}, DefaultMaxNumSize, true, nil},
42 {hexToBytes("7f"), ScriptNum{127}, DefaultMaxNumSize, true, nil},
43 {hexToBytes("ff"), ScriptNum{-127}, DefaultMaxNumSize, true, nil},
44 {hexToBytes("8000"), ScriptNum{128}, DefaultMaxNumSize, true, nil},
45 {hexToBytes("8080"), ScriptNum{-128}, DefaultMaxNumSize, true, nil},
46 {hexToBytes("8100"), ScriptNum{129}, DefaultMaxNumSize, true, nil},
47 {hexToBytes("8180"), ScriptNum{-129}, DefaultMaxNumSize, true, nil},
48 {hexToBytes("0001"), ScriptNum{256}, DefaultMaxNumSize, true, nil},
49 {hexToBytes("0081"), ScriptNum{-256}, DefaultMaxNumSize, true, nil},
50 {hexToBytes("ff7f"), ScriptNum{32767}, DefaultMaxNumSize, true, nil},
51 {hexToBytes("ffff"), ScriptNum{-32767}, DefaultMaxNumSize, true, nil},
52 {hexToBytes("008000"), ScriptNum{32768}, DefaultMaxNumSize, true, nil},
53 {hexToBytes("008080"), ScriptNum{-32768}, DefaultMaxNumSize, true, nil},
54 {hexToBytes("ffff00"), ScriptNum{65535}, DefaultMaxNumSize, true, nil},
55 {hexToBytes("ffff80"), ScriptNum{-65535}, DefaultMaxNumSize, true, nil},
56 {hexToBytes("000008"), ScriptNum{524288}, DefaultMaxNumSize, true, nil},
57 {hexToBytes("000088"), ScriptNum{-524288}, DefaultMaxNumSize, true, nil},
58 {hexToBytes("000070"), ScriptNum{7340032}, DefaultMaxNumSize, true, nil},
59 {hexToBytes("0000f0"), ScriptNum{-7340032}, DefaultMaxNumSize, true, nil},
60 {hexToBytes("00008000"), ScriptNum{8388608}, DefaultMaxNumSize, true, nil},
61 {hexToBytes("00008080"), ScriptNum{-8388608}, DefaultMaxNumSize, true, nil},
62 {hexToBytes("ffffff7f"), ScriptNum{2147483647}, DefaultMaxNumSize, true, nil},
63 {hexToBytes("ffffffff"), ScriptNum{-2147483647}, DefaultMaxNumSize, true, nil},
64 {hexToBytes("ffffffff7f"), ScriptNum{549755813887}, 5, true, nil},
65 {hexToBytes("ffffffffff"), ScriptNum{-549755813887}, 5, true, nil},
66 {hexToBytes("ffffffffffffff7f"), ScriptNum{9223372036854775807}, 8, true, nil},
67 {hexToBytes("ffffffffffffffff"), ScriptNum{-9223372036854775807}, 8, true, nil},
68 {hexToBytes("ffffffffffffffff7f"), ScriptNum{-1}, 9, true, nil},
69 {hexToBytes("ffffffffffffffffff"), ScriptNum{1}, 9, true, nil},
70 {hexToBytes("ffffffffffffffffff7f"), ScriptNum{-1}, 10, true, nil},
71 {hexToBytes("ffffffffffffffffffff"), ScriptNum{1}, 10, true, nil},
72
73 // Minimally encoded values that are out of range for data that
74 // is interpreted as script numbers with the minimal encoding
75 // flag set. Should error and return 0.
76 {hexToBytes("0000008000"), ScriptNum{0}, DefaultMaxNumSize, true, errNumOverflow},

Callers

nothing calls this directly

Calls 3

hexToBytesFunction · 0.85
GetScriptNumFunction · 0.85
EqualMethod · 0.45

Tested by

no test coverage detected