(t *testing.T)
| 17 | } |
| 18 | |
| 19 | func 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}, |
nothing calls this directly
no test coverage detected