mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-26 19:42:23 +00:00
opcode: implement FromString()
This commit is contained in:
parent
e53055a560
commit
1100f629df
2 changed files with 30 additions and 0 deletions
20
pkg/vm/opcode/from_string.go
Normal file
20
pkg/vm/opcode/from_string.go
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
package opcode
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
var stringToOpcode = make(map[string]Opcode)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
for i := 0; i < 255; i++ {
|
||||||
|
op := Opcode(i)
|
||||||
|
stringToOpcode[op.String()] = op
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString converts string representation to and opcode itself.
|
||||||
|
func FromString(s string) (Opcode, error) {
|
||||||
|
if op, ok := stringToOpcode[s]; ok {
|
||||||
|
return op, nil
|
||||||
|
}
|
||||||
|
return 0, errors.New("invalid opcode")
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Nothing more to test here, really.
|
// Nothing more to test here, really.
|
||||||
|
@ -18,3 +19,12 @@ func TestStringer(t *testing.T) {
|
||||||
assert.Equal(t, s, o.String())
|
assert.Equal(t, s, o.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFromString(t *testing.T) {
|
||||||
|
_, err := FromString("abcdef")
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
op, err := FromString(MUL.String())
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, MUL, op)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue