diff --git a/pkg/vm/vm_test.go b/pkg/vm/vm_test.go index b3fb9f81a..9d6d86452 100644 --- a/pkg/vm/vm_test.go +++ b/pkg/vm/vm_test.go @@ -2610,6 +2610,50 @@ func TestDupBool(t *testing.T) { assert.Equal(t, true, vm.estack.Pop().Bool()) } +func TestSHA1(t *testing.T) { + // 0x0100 hashes to 0e356ba505631fbf715758bed27d503f8b260e3a + res := "0e356ba505631fbf715758bed27d503f8b260e3a" + prog := makeProgram(opcode.PUSHBYTES2, 1, 0, + opcode.SHA1) + vm := load(prog) + runVM(t, vm) + assert.Equal(t, 1, vm.estack.Len()) + assert.Equal(t, res, hex.EncodeToString(vm.estack.Pop().Bytes())) +} + +func TestSHA256(t *testing.T) { + // 0x0100 hashes to 47dc540c94ceb704a23875c11273e16bb0b8a87aed84de911f2133568115f254 + res := "47dc540c94ceb704a23875c11273e16bb0b8a87aed84de911f2133568115f254" + prog := makeProgram(opcode.PUSHBYTES2, 1, 0, + opcode.SHA256) + vm := load(prog) + runVM(t, vm) + assert.Equal(t, 1, vm.estack.Len()) + assert.Equal(t, res, hex.EncodeToString(vm.estack.Pop().Bytes())) +} + +func TestHASH160(t *testing.T) { + // 0x0100 hashes to fbc22d517f38e7612798ece8e5957cf6c41d8caf + res := "fbc22d517f38e7612798ece8e5957cf6c41d8caf" + prog := makeProgram(opcode.PUSHBYTES2, 1, 0, + opcode.HASH160) + vm := load(prog) + runVM(t, vm) + assert.Equal(t, 1, vm.estack.Len()) + assert.Equal(t, res, hex.EncodeToString(vm.estack.Pop().Bytes())) +} + +func TestHASH256(t *testing.T) { + // 0x0100 hashes to 677b2d718464ee0121475600b929c0b4155667486577d1320b18c2dc7d4b4f99 + res := "677b2d718464ee0121475600b929c0b4155667486577d1320b18c2dc7d4b4f99" + prog := makeProgram(opcode.PUSHBYTES2, 1, 0, + opcode.HASH256) + vm := load(prog) + runVM(t, vm) + assert.Equal(t, 1, vm.estack.Len()) + assert.Equal(t, res, hex.EncodeToString(vm.estack.Pop().Bytes())) +} + func makeProgram(opcodes ...opcode.Opcode) []byte { prog := make([]byte, len(opcodes)+1) // RET for i := 0; i < len(opcodes); i++ {