From 5e82baf476ae08663fc010b6992cf9af09b64308 Mon Sep 17 00:00:00 2001 From: "Owain G. Ainsworth" Date: Wed, 19 Jun 2013 00:38:57 +0100 Subject: [PATCH] add some basic tests for stack.PopInt() --- stack_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/stack_test.go b/stack_test.go index cfdf97a3..54ae5110 100644 --- a/stack_test.go +++ b/stack_test.go @@ -170,7 +170,70 @@ var stackTests = []stackTest{ btcscript.StackErrUnderflow, [][]byte{}, }, - // XXX test popInt -> byte format matters here. + { + "popInt 0", + [][]byte{{0x0}}, + func(stack *btcscript.Stack) error { + v, err := stack.PopInt() + if err != nil { + return err + } + if v.Sign() != 0 { + return errors.New("0 != 0 on popInt") + } + return nil + }, + nil, + [][]byte{}, + }, + { + "popInt -0", + [][]byte{{0x80}}, + func(stack *btcscript.Stack) error { + v, err := stack.PopInt() + if err != nil { + return err + } + if v.Sign() != 0 { + return errors.New("-0 != 0 on popInt") + } + return nil + }, + nil, + [][]byte{}, + }, + { + "popInt 1", + [][]byte{{0x01}}, + func(stack *btcscript.Stack) error { + v, err := stack.PopInt() + if err != nil { + return err + } + if v.Cmp(big.NewInt(1)) != 0 { + return errors.New("1 != 1 on popInt") + } + return nil + }, + nil, + [][]byte{}, + }, + { + "popInt 1 leading 0", + [][]byte{{0x00000001}}, + func(stack *btcscript.Stack) error { + v, err := stack.PopInt() + if err != nil { + return err + } + if v.Cmp(big.NewInt(1)) != 0 { + return errors.New("1 != 1 on popInt") + } + return nil + }, + nil, + [][]byte{}, + }, { "dup", [][]byte{{1}},