diff options
author | Valentin Wüstholz <wuestholz@users.noreply.github.com> | 2017-02-27 19:21:19 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-02-27 19:21:19 +0800 |
commit | 37511ec5207b46829226b94e7c0da6a74609dd2a (patch) | |
tree | 4688a87378dd16cd9785ee66150380d4fdd66cb3 /core/asm/asm_test.go | |
parent | 5c8fe28b725bd9b128edceae3215132ea741641b (diff) | |
download | go-tangerine-37511ec5207b46829226b94e7c0da6a74609dd2a.tar.gz go-tangerine-37511ec5207b46829226b94e7c0da6a74609dd2a.tar.zst go-tangerine-37511ec5207b46829226b94e7c0da6a74609dd2a.zip |
core, core/vm, cmd/disasm: unify procedures for disassembling evm code (#3530)
Diffstat (limited to 'core/asm/asm_test.go')
-rw-r--r-- | core/asm/asm_test.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/core/asm/asm_test.go b/core/asm/asm_test.go new file mode 100644 index 000000000..92b26b67a --- /dev/null +++ b/core/asm/asm_test.go @@ -0,0 +1,74 @@ +// Copyright 2017 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package asm + +import ( + "testing" + + "encoding/hex" +) + +// Tests disassembling the instructions for valid evm code +func TestInstructionIteratorValid(t *testing.T) { + cnt := 0 + script, _ := hex.DecodeString("61000000") + + it := NewInstructionIterator(script) + for it.Next() { + cnt++ + } + + if err := it.Error(); err != nil { + t.Errorf("Expected 2, but encountered error %v instead.", err) + } + if cnt != 2 { + t.Errorf("Expected 2, but got %v instead.", cnt) + } +} + +// Tests disassembling the instructions for invalid evm code +func TestInstructionIteratorInvalid(t *testing.T) { + cnt := 0 + script, _ := hex.DecodeString("6100") + + it := NewInstructionIterator(script) + for it.Next() { + cnt++ + } + + if it.Error() == nil { + t.Errorf("Expected an error, but got %v instead.", cnt) + } +} + +// Tests disassembling the instructions for empty evm code +func TestInstructionIteratorEmpty(t *testing.T) { + cnt := 0 + script, _ := hex.DecodeString("") + + it := NewInstructionIterator(script) + for it.Next() { + cnt++ + } + + if err := it.Error(); err != nil { + t.Errorf("Expected 0, but encountered error %v instead.", err) + } + if cnt != 0 { + t.Errorf("Expected 0, but got %v instead.", cnt) + } +} |