stackitem: serialize/deserialize pointers, fix #2815
They of course can't be serialized, but in protected mode we still need to handle them somehow.
This commit is contained in:
parent
286f40b828
commit
9ba18b5dfa
2 changed files with 31 additions and 0 deletions
|
@ -76,6 +76,7 @@ func TestSerialize(t *testing.T) {
|
|||
})
|
||||
t.Run("invalid", func(t *testing.T) {
|
||||
testSerialize(t, ErrUnserializable, NewInterop(42))
|
||||
testSerialize(t, ErrUnserializable, NewPointer(42, []byte{}))
|
||||
testSerialize(t, ErrUnserializable, nil)
|
||||
|
||||
t.Run("protected interop", func(t *testing.T) {
|
||||
|
@ -93,6 +94,22 @@ func TestSerialize(t *testing.T) {
|
|||
require.NoError(t, r.Err)
|
||||
require.IsType(t, (*Interop)(nil), item)
|
||||
})
|
||||
t.Run("protected pointer", func(t *testing.T) {
|
||||
w := io.NewBufBinWriter()
|
||||
EncodeBinaryProtected(NewPointer(42, []byte{}), w.BinWriter)
|
||||
require.NoError(t, w.Err)
|
||||
|
||||
data := w.Bytes()
|
||||
r := io.NewBinReaderFromBuf(data)
|
||||
DecodeBinary(r)
|
||||
require.Error(t, r.Err)
|
||||
|
||||
r = io.NewBinReaderFromBuf(data)
|
||||
item := DecodeBinaryProtected(r)
|
||||
require.NoError(t, r.Err)
|
||||
require.IsType(t, (*Pointer)(nil), item)
|
||||
require.Equal(t, 42, item.Value())
|
||||
})
|
||||
t.Run("protected nil", func(t *testing.T) {
|
||||
w := io.NewBufBinWriter()
|
||||
EncodeBinaryProtected(nil, w.BinWriter)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue