vm: clone Struct on APPEND

This commit is contained in:
Evgenii Stratonikov 2019-09-18 14:03:15 +03:00
parent facf34e821
commit 99f1d761ca
3 changed files with 34 additions and 2 deletions

View file

@ -538,6 +538,18 @@ func TestAPPENDStruct(t *testing.T) {
assert.Equal(t, &StructItem{[]StackItem{makeStackItem(5)}}, vm.estack.Pop().value)
}
func TestAPPENDCloneStruct(t *testing.T) {
prog := makeProgram(DUP, PUSH0, NEWSTRUCT, TOALTSTACK, DUPFROMALTSTACK, APPEND, FROMALTSTACK, PUSH1, APPEND)
vm := load(prog)
vm.estack.Push(&Element{value: &ArrayItem{}})
vm.Run()
assert.Equal(t, false, vm.state.HasFlag(faultState))
assert.Equal(t, 1, vm.estack.Len())
assert.Equal(t, &ArrayItem{[]StackItem{
&StructItem{[]StackItem{}},
}}, vm.estack.Pop().value)
}
func TestAPPENDBadNoArguments(t *testing.T) {
prog := makeProgram(APPEND)
vm := load(prog)