(t *testing.T)
| 128 | } |
| 129 | |
| 130 | func TestScriptNumSerialize(t *testing.T) { |
| 131 | t.Parallel() |
| 132 | |
| 133 | tests := []struct { |
| 134 | num ScriptNum |
| 135 | serialized []byte |
| 136 | }{ |
| 137 | {ScriptNum{0}, nil}, |
| 138 | {ScriptNum{1}, hexToBytes("01")}, |
| 139 | {ScriptNum{-1}, hexToBytes("81")}, |
| 140 | {ScriptNum{127}, hexToBytes("7f")}, |
| 141 | {ScriptNum{-127}, hexToBytes("ff")}, |
| 142 | {ScriptNum{128}, hexToBytes("8000")}, |
| 143 | {ScriptNum{-128}, hexToBytes("8080")}, |
| 144 | {ScriptNum{129}, hexToBytes("8100")}, |
| 145 | {ScriptNum{-129}, hexToBytes("8180")}, |
| 146 | {ScriptNum{256}, hexToBytes("0001")}, |
| 147 | {ScriptNum{-256}, hexToBytes("0081")}, |
| 148 | {ScriptNum{32767}, hexToBytes("ff7f")}, |
| 149 | {ScriptNum{-32767}, hexToBytes("ffff")}, |
| 150 | {ScriptNum{32768}, hexToBytes("008000")}, |
| 151 | {ScriptNum{-32768}, hexToBytes("008080")}, |
| 152 | {ScriptNum{65535}, hexToBytes("ffff00")}, |
| 153 | {ScriptNum{-65535}, hexToBytes("ffff80")}, |
| 154 | {ScriptNum{524288}, hexToBytes("000008")}, |
| 155 | {ScriptNum{-524288}, hexToBytes("000088")}, |
| 156 | {ScriptNum{7340032}, hexToBytes("000070")}, |
| 157 | {ScriptNum{-7340032}, hexToBytes("0000f0")}, |
| 158 | {ScriptNum{8388608}, hexToBytes("00008000")}, |
| 159 | {ScriptNum{-8388608}, hexToBytes("00008080")}, |
| 160 | {ScriptNum{2147483647}, hexToBytes("ffffff7f")}, |
| 161 | {ScriptNum{-2147483647}, hexToBytes("ffffffff")}, |
| 162 | |
| 163 | // Values that are out of range for data that is interpreted as |
| 164 | // numbers, but are allowed as the result of numeric operations. |
| 165 | {ScriptNum{2147483648}, hexToBytes("0000008000")}, |
| 166 | {ScriptNum{-2147483648}, hexToBytes("0000008080")}, |
| 167 | {ScriptNum{2415919104}, hexToBytes("0000009000")}, |
| 168 | {ScriptNum{-2415919104}, hexToBytes("0000009080")}, |
| 169 | {ScriptNum{4294967295}, hexToBytes("ffffffff00")}, |
| 170 | {ScriptNum{-4294967295}, hexToBytes("ffffffff80")}, |
| 171 | {ScriptNum{4294967296}, hexToBytes("0000000001")}, |
| 172 | {ScriptNum{-4294967296}, hexToBytes("0000000081")}, |
| 173 | {ScriptNum{281474976710655}, hexToBytes("ffffffffffff00")}, |
| 174 | {ScriptNum{-281474976710655}, hexToBytes("ffffffffffff80")}, |
| 175 | {ScriptNum{72057594037927935}, hexToBytes("ffffffffffffff00")}, |
| 176 | {ScriptNum{-72057594037927935}, hexToBytes("ffffffffffffff80")}, |
| 177 | {ScriptNum{9223372036854775807}, hexToBytes("ffffffffffffff7f")}, |
| 178 | {ScriptNum{-9223372036854775807}, hexToBytes("ffffffffffffffff")}, |
| 179 | } |
| 180 | |
| 181 | for _, test := range tests { |
| 182 | gotBytes := test.num.Serialize() |
| 183 | if !bytes.Equal(gotBytes, test.serialized) { |
| 184 | t.Errorf("Bytes: did not get expected bytes for %d - "+ |
| 185 | "got %x, want %x", test.num.Value, gotBytes, |
| 186 | test.serialized) |
| 187 | continue |
nothing calls this directly
no test coverage detected