You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3749 lines
74 KiB
3749 lines
74 KiB
// Copyright (c) 2013-2015 The btcsuite developers |
|
// Use of this source code is governed by an ISC |
|
// license that can be found in the LICENSE file. |
|
|
|
/* |
|
This test file is part of the txscript package rather than than the |
|
txscript_test package so it can bridge access to the internals to properly test |
|
cases which are either not possible or can't reliably be tested via the public |
|
interface. The functions are only exported while the tests are being run. |
|
*/ |
|
|
|
package txscript |
|
|
|
import "testing" |
|
|
|
// TstMaxScriptSize makes the internal maxScriptSize constant available to the |
|
// test package. |
|
const TstMaxScriptSize = maxScriptSize |
|
|
|
// TstHasCanoncialPushes makes the internal isCanonicalPush function available |
|
// to the test package. |
|
var TstHasCanonicalPushes = canonicalPush |
|
|
|
// TstParseScript makes the internal parseScript function available to the |
|
// test package. |
|
var TstParseScript = parseScript |
|
|
|
// TstConcatRawScript makes the ability to add the pass script directly to |
|
// an existing script to the test package. This differs from AddData since it |
|
// doesn't add a push data opcode. |
|
func (b *ScriptBuilder) TstConcatRawScript(data []byte) *ScriptBuilder { |
|
if b.err != nil { |
|
return b |
|
} |
|
|
|
b.script = append(b.script, data...) |
|
return b |
|
} |
|
|
|
// TstCheckPubKeyEncoding makes the internal checkPubKeyEncoding function |
|
// available to the test package. Since it only really needs from the engine |
|
// for the flags, just accept the flags and create a new engine skeleton. |
|
func TstCheckPubKeyEncoding(pubKey []byte, flags ScriptFlags) error { |
|
vm := Engine{flags: flags} |
|
return vm.checkPubKeyEncoding(pubKey) |
|
} |
|
|
|
// TstCheckSignatureEncoding makes the internal checkSignatureEncoding function |
|
// available to the test package. Since it only really needs from the engine |
|
// for the flags, just accept the flags and create a new engine skeleton with |
|
// them. |
|
func TstCheckSignatureEncoding(sig []byte, flags ScriptFlags) error { |
|
vm := Engine{flags: flags} |
|
return vm.checkSignatureEncoding(sig) |
|
} |
|
|
|
// TstRemoveOpcode makes the internal removeOpcode function available to the |
|
// test package. |
|
func TstRemoveOpcode(pkscript []byte, opcode byte) ([]byte, error) { |
|
pops, err := parseScript(pkscript) |
|
if err != nil { |
|
return nil, err |
|
} |
|
pops = removeOpcode(pops, opcode) |
|
return unparseScript(pops) |
|
} |
|
|
|
// TstRemoveOpcodeByData makes the internal removeOpcodeByData function |
|
// available to the test package. |
|
func TstRemoveOpcodeByData(pkscript []byte, data []byte) ([]byte, error) { |
|
pops, err := parseScript(pkscript) |
|
if err != nil { |
|
return nil, err |
|
} |
|
pops = removeOpcodeByData(pops, data) |
|
return unparseScript(pops) |
|
} |
|
|
|
// TestSetPC allows the test modules to set the program counter to whatever they |
|
// want. |
|
func (vm *Engine) TstSetPC(script, off int) { |
|
vm.scriptIdx = script |
|
vm.scriptOff = off |
|
} |
|
|
|
// Internal tests for opcode parsing with bad data templates. |
|
func TestParseOpcode(t *testing.T) { |
|
// Deep copy the array and make one of the opcodes invalid by setting it |
|
// to the wrong length. |
|
fakeArray := opcodeArray |
|
fakeArray[OP_PUSHDATA4] = opcode{value: OP_PUSHDATA4, |
|
name: "OP_PUSHDATA4", length: -8, opfunc: opcodePushData} |
|
|
|
// This script would be fine if -8 was a valid length. |
|
_, err := parseScriptTemplate([]byte{OP_PUSHDATA4, 0x1, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00}, &fakeArray) |
|
if err == nil { |
|
t.Errorf("no error with dodgy opcode array!") |
|
} |
|
} |
|
|
|
func TestUnparsingInvalidOpcodes(t *testing.T) { |
|
tests := []struct { |
|
name string |
|
pop *parsedOpcode |
|
expectedErr error |
|
}{ |
|
{ |
|
name: "OP_FALSE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_FALSE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_FALSE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_FALSE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_1 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_1], |
|
data: nil, |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_1", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_1], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_1 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_1], |
|
data: make([]byte, 2), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_2 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_2], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_2], |
|
data: make([]byte, 2), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_2 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_2], |
|
data: make([]byte, 3), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_3 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_3], |
|
data: make([]byte, 2), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_3", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_3], |
|
data: make([]byte, 3), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_3 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_3], |
|
data: make([]byte, 4), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_4 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_4], |
|
data: make([]byte, 3), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_4", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_4], |
|
data: make([]byte, 4), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_4 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_4], |
|
data: make([]byte, 5), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_5 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_5], |
|
data: make([]byte, 4), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_5", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_5], |
|
data: make([]byte, 5), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_5 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_5], |
|
data: make([]byte, 6), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_6 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_6], |
|
data: make([]byte, 5), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_6", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_6], |
|
data: make([]byte, 6), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_6 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_6], |
|
data: make([]byte, 7), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_7 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_7], |
|
data: make([]byte, 6), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_7", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_7], |
|
data: make([]byte, 7), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_7 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_7], |
|
data: make([]byte, 8), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_8 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_8], |
|
data: make([]byte, 7), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_8", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_8], |
|
data: make([]byte, 8), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_8 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_8], |
|
data: make([]byte, 9), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_9 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_9], |
|
data: make([]byte, 8), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_9", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_9], |
|
data: make([]byte, 9), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_9 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_9], |
|
data: make([]byte, 10), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_10 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_10], |
|
data: make([]byte, 9), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_10", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_10], |
|
data: make([]byte, 10), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_10 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_10], |
|
data: make([]byte, 11), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_11 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_11], |
|
data: make([]byte, 10), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_11", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_11], |
|
data: make([]byte, 11), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_11 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_11], |
|
data: make([]byte, 12), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_12 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_12], |
|
data: make([]byte, 11), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_12", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_12], |
|
data: make([]byte, 12), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_12 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_12], |
|
data: make([]byte, 13), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_13 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_13], |
|
data: make([]byte, 12), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_13", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_13], |
|
data: make([]byte, 13), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_13 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_13], |
|
data: make([]byte, 14), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_14 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_14], |
|
data: make([]byte, 13), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_14", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_14], |
|
data: make([]byte, 14), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_14 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_14], |
|
data: make([]byte, 15), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_15 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_15], |
|
data: make([]byte, 14), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_15", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_15], |
|
data: make([]byte, 15), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_15 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_15], |
|
data: make([]byte, 16), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_16 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_16], |
|
data: make([]byte, 15), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_16", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_16], |
|
data: make([]byte, 16), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_16 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_16], |
|
data: make([]byte, 17), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_17 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_17], |
|
data: make([]byte, 16), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_17", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_17], |
|
data: make([]byte, 17), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_17 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_17], |
|
data: make([]byte, 18), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_18 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_18], |
|
data: make([]byte, 17), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_18", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_18], |
|
data: make([]byte, 18), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_18 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_18], |
|
data: make([]byte, 19), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_19 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_19], |
|
data: make([]byte, 18), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_19", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_19], |
|
data: make([]byte, 19), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_19 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_19], |
|
data: make([]byte, 20), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_20 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_20], |
|
data: make([]byte, 19), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_20", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_20], |
|
data: make([]byte, 20), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_20 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_20], |
|
data: make([]byte, 21), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_21 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_21], |
|
data: make([]byte, 20), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_21", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_21], |
|
data: make([]byte, 21), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_21 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_21], |
|
data: make([]byte, 22), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_22 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_22], |
|
data: make([]byte, 21), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_22", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_22], |
|
data: make([]byte, 22), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_22 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_22], |
|
data: make([]byte, 23), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_23 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_23], |
|
data: make([]byte, 22), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_23", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_23], |
|
data: make([]byte, 23), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_23 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_23], |
|
data: make([]byte, 24), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_24 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_24], |
|
data: make([]byte, 23), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_24", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_24], |
|
data: make([]byte, 24), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_24 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_24], |
|
data: make([]byte, 25), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_25 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_25], |
|
data: make([]byte, 24), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_25", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_25], |
|
data: make([]byte, 25), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_25 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_25], |
|
data: make([]byte, 26), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_26 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_26], |
|
data: make([]byte, 25), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_26", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_26], |
|
data: make([]byte, 26), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_26 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_26], |
|
data: make([]byte, 27), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_27 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_27], |
|
data: make([]byte, 26), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_27", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_27], |
|
data: make([]byte, 27), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_27 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_27], |
|
data: make([]byte, 28), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_28 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_28], |
|
data: make([]byte, 27), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_28", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_28], |
|
data: make([]byte, 28), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_28 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_28], |
|
data: make([]byte, 29), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_29 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_29], |
|
data: make([]byte, 28), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_29", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_29], |
|
data: make([]byte, 29), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_29 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_29], |
|
data: make([]byte, 30), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_30 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_30], |
|
data: make([]byte, 29), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_30", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_30], |
|
data: make([]byte, 30), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_30 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_30], |
|
data: make([]byte, 31), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_31 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_31], |
|
data: make([]byte, 30), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_31", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_31], |
|
data: make([]byte, 31), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_31 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_31], |
|
data: make([]byte, 32), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_32 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_32], |
|
data: make([]byte, 31), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_32", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_32], |
|
data: make([]byte, 32), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_32 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_32], |
|
data: make([]byte, 33), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_33 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_33], |
|
data: make([]byte, 32), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_33", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_33], |
|
data: make([]byte, 33), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_33 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_33], |
|
data: make([]byte, 34), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_34 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_34], |
|
data: make([]byte, 33), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_34", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_34], |
|
data: make([]byte, 34), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_34 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_34], |
|
data: make([]byte, 35), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_35 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_35], |
|
data: make([]byte, 34), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_35", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_35], |
|
data: make([]byte, 35), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_35 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_35], |
|
data: make([]byte, 36), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_36 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_36], |
|
data: make([]byte, 35), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_36", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_36], |
|
data: make([]byte, 36), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_36 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_36], |
|
data: make([]byte, 37), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_37 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_37], |
|
data: make([]byte, 36), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_37", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_37], |
|
data: make([]byte, 37), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_37 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_37], |
|
data: make([]byte, 38), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_38 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_38], |
|
data: make([]byte, 37), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_38", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_38], |
|
data: make([]byte, 38), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_38 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_38], |
|
data: make([]byte, 39), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_39 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_39], |
|
data: make([]byte, 38), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_39", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_39], |
|
data: make([]byte, 39), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_39 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_39], |
|
data: make([]byte, 40), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_40 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_40], |
|
data: make([]byte, 39), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_40", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_40], |
|
data: make([]byte, 40), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_40 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_40], |
|
data: make([]byte, 41), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_41 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_41], |
|
data: make([]byte, 40), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_41", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_41], |
|
data: make([]byte, 41), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_41 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_41], |
|
data: make([]byte, 42), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_42 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_42], |
|
data: make([]byte, 41), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_42", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_42], |
|
data: make([]byte, 42), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_42 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_42], |
|
data: make([]byte, 43), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_43 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_43], |
|
data: make([]byte, 42), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_43", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_43], |
|
data: make([]byte, 43), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_43 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_43], |
|
data: make([]byte, 44), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_44 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_44], |
|
data: make([]byte, 43), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_44", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_44], |
|
data: make([]byte, 44), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_44 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_44], |
|
data: make([]byte, 45), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_45 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_45], |
|
data: make([]byte, 44), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_45", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_45], |
|
data: make([]byte, 45), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_45 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_45], |
|
data: make([]byte, 46), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_46 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_46], |
|
data: make([]byte, 45), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_46", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_46], |
|
data: make([]byte, 46), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_46 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_46], |
|
data: make([]byte, 47), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_47 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_47], |
|
data: make([]byte, 46), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_47", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_47], |
|
data: make([]byte, 47), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_47 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_47], |
|
data: make([]byte, 48), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_48 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_48], |
|
data: make([]byte, 47), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_48", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_48], |
|
data: make([]byte, 48), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_48 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_48], |
|
data: make([]byte, 49), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_49 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_49], |
|
data: make([]byte, 48), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_49", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_49], |
|
data: make([]byte, 49), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_49 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_49], |
|
data: make([]byte, 50), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_50 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_50], |
|
data: make([]byte, 49), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_50", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_50], |
|
data: make([]byte, 50), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_50 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_50], |
|
data: make([]byte, 51), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_51 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_51], |
|
data: make([]byte, 50), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_51", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_51], |
|
data: make([]byte, 51), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_51 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_51], |
|
data: make([]byte, 52), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_52 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_52], |
|
data: make([]byte, 51), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_52", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_52], |
|
data: make([]byte, 52), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_52 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_52], |
|
data: make([]byte, 53), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_53 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_53], |
|
data: make([]byte, 52), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_53", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_53], |
|
data: make([]byte, 53), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_53 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_53], |
|
data: make([]byte, 54), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_54 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_54], |
|
data: make([]byte, 53), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_54", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_54], |
|
data: make([]byte, 54), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_54 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_54], |
|
data: make([]byte, 55), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_55 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_55], |
|
data: make([]byte, 54), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_55", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_55], |
|
data: make([]byte, 55), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_55 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_55], |
|
data: make([]byte, 56), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_56 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_56], |
|
data: make([]byte, 55), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_56", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_56], |
|
data: make([]byte, 56), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_56 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_56], |
|
data: make([]byte, 57), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_57 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_57], |
|
data: make([]byte, 56), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_57", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_57], |
|
data: make([]byte, 57), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_57 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_57], |
|
data: make([]byte, 58), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_58 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_58], |
|
data: make([]byte, 57), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_58", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_58], |
|
data: make([]byte, 58), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_58 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_58], |
|
data: make([]byte, 59), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_59 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_59], |
|
data: make([]byte, 58), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_59", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_59], |
|
data: make([]byte, 59), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_59 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_59], |
|
data: make([]byte, 60), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_60 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_60], |
|
data: make([]byte, 59), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_60", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_60], |
|
data: make([]byte, 60), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_60 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_60], |
|
data: make([]byte, 61), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_61 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_61], |
|
data: make([]byte, 60), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_61", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_61], |
|
data: make([]byte, 61), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_61 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_61], |
|
data: make([]byte, 62), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_62 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_62], |
|
data: make([]byte, 61), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_62", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_62], |
|
data: make([]byte, 62), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_62 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_62], |
|
data: make([]byte, 63), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_63 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_63], |
|
data: make([]byte, 62), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_63", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_63], |
|
data: make([]byte, 63), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_63 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_63], |
|
data: make([]byte, 64), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_64 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_64], |
|
data: make([]byte, 63), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_64", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_64], |
|
data: make([]byte, 64), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_64 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_64], |
|
data: make([]byte, 65), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_65 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_65], |
|
data: make([]byte, 64), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_65", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_65], |
|
data: make([]byte, 65), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_65 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_65], |
|
data: make([]byte, 66), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_66 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_66], |
|
data: make([]byte, 65), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_66", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_66], |
|
data: make([]byte, 66), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_66 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_66], |
|
data: make([]byte, 67), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_67 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_67], |
|
data: make([]byte, 66), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_67", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_67], |
|
data: make([]byte, 67), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_67 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_67], |
|
data: make([]byte, 68), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_68 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_68], |
|
data: make([]byte, 67), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_68", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_68], |
|
data: make([]byte, 68), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_68 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_68], |
|
data: make([]byte, 69), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_69 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_69], |
|
data: make([]byte, 68), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_69", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_69], |
|
data: make([]byte, 69), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_69 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_69], |
|
data: make([]byte, 70), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_70 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_70], |
|
data: make([]byte, 69), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_70", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_70], |
|
data: make([]byte, 70), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_70 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_70], |
|
data: make([]byte, 71), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_71 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_71], |
|
data: make([]byte, 70), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_71", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_71], |
|
data: make([]byte, 71), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_71 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_71], |
|
data: make([]byte, 72), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_72 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_72], |
|
data: make([]byte, 71), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_72", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_72], |
|
data: make([]byte, 72), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_72 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_72], |
|
data: make([]byte, 73), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_73 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_73], |
|
data: make([]byte, 72), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_73", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_73], |
|
data: make([]byte, 73), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_73 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_73], |
|
data: make([]byte, 74), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_74 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_74], |
|
data: make([]byte, 73), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_74", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_74], |
|
data: make([]byte, 74), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_74 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_74], |
|
data: make([]byte, 75), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_75 short", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_75], |
|
data: make([]byte, 74), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DATA_75", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_75], |
|
data: make([]byte, 75), |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DATA_75 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DATA_75], |
|
data: make([]byte, 76), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_PUSHDATA1", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUSHDATA1], |
|
data: []byte{0, 1, 2, 3, 4}, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_PUSHDATA2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUSHDATA2], |
|
data: []byte{0, 1, 2, 3, 4}, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_PUSHDATA4", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUSHDATA1], |
|
data: []byte{0, 1, 2, 3, 4}, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_1NEGATE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1NEGATE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_1NEGATE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1NEGATE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RESERVED", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RESERVED long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_TRUE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TRUE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_TRUE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TRUE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_3", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_3], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_3 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_3], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_4", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_4], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_4 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_4], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_5", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_5], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_5 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_5], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_6", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_6], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_6 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_6], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_7", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_7], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_7 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_7], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_8", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_8], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_8 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_8], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_9", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_9], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_9 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_9], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_10", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_10], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_10 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_10], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_11", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_11], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_11 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_11], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_12", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_12], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_12 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_12], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_13", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_13], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_13 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_13], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_14", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_14], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_14 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_14], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_15", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_15], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_15 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_15], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_16", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_16], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_16 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_16], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_VER", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VER], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_VER long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VER], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_IF", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_IF], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_IF long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_IF], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOTIF", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOTIF], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOTIF long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOTIF], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_VERIF", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERIF], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_VERIF long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERIF], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_VERNOTIF", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERNOTIF], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_VERNOTIF long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERNOTIF], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ELSE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ELSE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ELSE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ELSE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ENDIF", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ENDIF], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ENDIF long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ENDIF], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_VERIFY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERIFY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_VERIFY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_VERIFY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RETURN", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RETURN], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RETURN long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RETURN], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_TOALTSTACK", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TOALTSTACK], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_TOALTSTACK long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TOALTSTACK], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_FROMALTSTACK", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_FROMALTSTACK], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_FROMALTSTACK long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_FROMALTSTACK], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2DROP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DROP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2DROP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DROP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2DUP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DUP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2DUP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DUP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_3DUP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_3DUP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_3DUP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_3DUP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2OVER", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2OVER], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2OVER long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2OVER], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2ROT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2ROT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2ROT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2ROT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2SWAP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2SWAP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2SWAP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2SWAP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_IFDUP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_IFDUP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_IFDUP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_IFDUP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DEPTH", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DEPTH], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DEPTH long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DEPTH], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DROP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DROP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DROP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DROP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DUP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DUP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DUP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DUP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NIP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NIP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NIP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NIP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_OVER", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_OVER], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_OVER long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_OVER], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_PICK", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PICK], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_PICK long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PICK], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ROLL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ROLL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ROLL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ROLL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ROT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ROT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ROT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ROT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SWAP", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SWAP], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SWAP long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SWAP], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_TUCK", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TUCK], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_TUCK long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_TUCK], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CAT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CAT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CAT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CAT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SUBSTR", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SUBSTR], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SUBSTR long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SUBSTR], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_LEFT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LEFT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_LEFT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LEFT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_LEFT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LEFT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_LEFT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LEFT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RIGHT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RIGHT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RIGHT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RIGHT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SIZE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SIZE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SIZE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SIZE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_INVERT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_INVERT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_INVERT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_INVERT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_AND", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_AND], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_AND long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_AND], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_OR", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_OR], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_OR long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_OR], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_XOR", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_XOR], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_XOR long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_XOR], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_EQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_EQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_EQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_EQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_EQUALVERIFY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_EQUALVERIFY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_EQUALVERIFY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_EQUALVERIFY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RESERVED1", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED1], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RESERVED1 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED1], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RESERVED2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED2], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RESERVED2 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RESERVED2], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_1ADD", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1ADD], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_1ADD long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1ADD], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_1SUB", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1SUB], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_1SUB long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_1SUB], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2MUL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2MUL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2MUL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2MUL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_2DIV", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DIV], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_2DIV long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_2DIV], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NEGATE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NEGATE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NEGATE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NEGATE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ABS", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ABS], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ABS long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ABS], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_0NOTEQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_0NOTEQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_0NOTEQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_0NOTEQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_ADD", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ADD], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_ADD long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_ADD], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SUB", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SUB], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SUB long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SUB], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_MUL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MUL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_MUL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MUL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_DIV", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DIV], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_DIV long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_DIV], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_MOD", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MOD], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_MOD long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MOD], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_LSHIFT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LSHIFT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_LSHIFT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LSHIFT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RSHIFT", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RSHIFT], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RSHIFT long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RSHIFT], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_BOOLAND", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_BOOLAND], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_BOOLAND long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_BOOLAND], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_BOOLOR", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_BOOLOR], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_BOOLOR long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_BOOLOR], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NUMEQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMEQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NUMEQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMEQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NUMEQUALVERIFY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMEQUALVERIFY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NUMEQUALVERIFY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMEQUALVERIFY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NUMNOTEQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMNOTEQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NUMNOTEQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NUMNOTEQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_LESSTHAN", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LESSTHAN], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_LESSTHAN long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LESSTHAN], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_GREATERTHAN", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_GREATERTHAN], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_GREATERTHAN long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_GREATERTHAN], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_LESSTHANOREQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LESSTHANOREQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_LESSTHANOREQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_LESSTHANOREQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_GREATERTHANOREQUAL", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_GREATERTHANOREQUAL], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_GREATERTHANOREQUAL long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_GREATERTHANOREQUAL], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_MIN", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MIN], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_MIN long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MIN], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_MAX", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MAX], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_MAX long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_MAX], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_WITHIN", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_WITHIN], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_WITHIN long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_WITHIN], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_RIPEMD160", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RIPEMD160], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_RIPEMD160 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_RIPEMD160], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SHA1", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SHA1], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SHA1 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SHA1], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_SHA256", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SHA256], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_SHA256 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_SHA256], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_HASH160", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_HASH160], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_HASH160 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_HASH160], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_HASH256", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_HASH256], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_HASH256 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_HASH256], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CODESAPERATOR", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CODESEPARATOR], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CODESEPARATOR long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CODESEPARATOR], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CHECKSIG", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKSIG], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CHECKSIG long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKSIG], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CHECKSIGVERIFY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKSIGVERIFY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CHECKSIGVERIFY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKSIGVERIFY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CHECKMULTISIG", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKMULTISIG], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CHECKMULTISIG long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKMULTISIG], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_CHECKMULTISIGVERIFY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKMULTISIGVERIFY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_CHECKMULTISIGVERIFY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_CHECKMULTISIGVERIFY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP1", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP1], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP1 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP1], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP2", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP2], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP2 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP2], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP3", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP3], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP3 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP3], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP4", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP4], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP4 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP4], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP5", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP5], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP5 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP5], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP6", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP6], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP6 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP6], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP7", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP7], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP7 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP7], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP8", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP8], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP8 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP8], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP9", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP9], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP9 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP9], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_NOP10", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP10], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_NOP10 long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_NOP10], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_PUBKEYHASH", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUBKEYHASH], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_PUBKEYHASH long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUBKEYHASH], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_PUBKEY", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUBKEY], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_PUBKEY long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_PUBKEY], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
{ |
|
name: "OP_INVALIDOPCODE", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_INVALIDOPCODE], |
|
data: nil, |
|
}, |
|
expectedErr: nil, |
|
}, |
|
{ |
|
name: "OP_INVALIDOPCODE long", |
|
pop: &parsedOpcode{ |
|
opcode: &opcodeArray[OP_INVALIDOPCODE], |
|
data: make([]byte, 1), |
|
}, |
|
expectedErr: ErrStackInvalidOpcode, |
|
}, |
|
} |
|
|
|
for _, test := range tests { |
|
_, err := test.pop.bytes() |
|
if err != test.expectedErr { |
|
t.Errorf("Parsed Opcode test '%s' failed", test.name) |
|
t.Error(err, test.expectedErr) |
|
} |
|
} |
|
}
|
|
|