vm/tests: unmarshal VM state in JSON tests properly

This commit is contained in:
Evgenii Stratonikov 2020-05-20 15:02:01 +03:00
parent 0c7b163280
commit e71cc04c70

View file

@ -44,7 +44,7 @@ type (
} }
vmUTExecutionEngineState struct { vmUTExecutionEngineState struct {
State vmUTState `json:"state"` State State `json:"state"`
ResultStack []vmUTStackItem `json:"resultStack"` ResultStack []vmUTStackItem `json:"resultStack"`
InvocationStack []vmUTExecutionContextState `json:"invocationStack"` InvocationStack []vmUTExecutionContextState `json:"invocationStack"`
} }
@ -61,8 +61,6 @@ type (
Result vmUTExecutionEngineState `json:"result"` Result vmUTExecutionEngineState `json:"result"`
} }
vmUTState State
vmUTStackItemType string vmUTStackItemType string
) )
@ -138,8 +136,8 @@ func testFile(t *testing.T, filename string) {
for i := range test.Steps { for i := range test.Steps {
execStep(t, vm, test.Steps[i]) execStep(t, vm, test.Steps[i])
result := test.Steps[i].Result result := test.Steps[i].Result
require.Equal(t, State(result.State), vm.state) require.Equal(t, result.State, vm.state)
if result.State == vmUTState(faultState) { // do not compare stacks on fault if result.State == faultState { // do not compare stacks on fault
continue continue
} }
@ -280,20 +278,6 @@ func execStep(t *testing.T, v *VM, step vmUTStep) {
} }
} }
func (v *vmUTState) UnmarshalJSON(data []byte) error {
switch s := string(data); s {
case `"Break"`:
*v = vmUTState(breakState)
case `"Fault"`:
*v = vmUTState(faultState)
case `"Halt"`:
*v = vmUTState(haltState)
default:
panic(fmt.Sprintf("invalid state: %s", s))
}
return nil
}
func (v *vmUTScript) UnmarshalJSON(data []byte) error { func (v *vmUTScript) UnmarshalJSON(data []byte) error {
var ops []string var ops []string
if err := json.Unmarshal(data, &ops); err != nil { if err := json.Unmarshal(data, &ops); err != nil {