package object

import (
	"testing"

	"github.com/stretchr/testify/require"
)

func TestObject_Payload(t *testing.T) {
	o := new(Object)

	payload := []byte{1, 2, 3}
	o.SetPayload(payload)

	require.Equal(t, payload, o.Payload())
}

func TestCopyPayload(t *testing.T) {
	require.Nil(t, CopyPayload(nil))

	o := new(Object)

	// set initial node key
	initPayload := []byte{1, 2, 3}
	o.SetPayload(initPayload)

	// get payload copy
	pCopy := CopyPayload(o)

	// change the copy
	pCopy[0]++

	// check that payload has not changed
	require.Equal(t, initPayload, o.Payload())
}

func TestSetPayloadCopy(t *testing.T) {
	require.NotPanics(t, func() {
		SetExtendedHeadersCopy(nil, nil)
	})

	o := new(Object)

	// create source payload
	srcPayload := []byte{1, 2, 3}

	// copy and set payload
	SetPayloadCopy(o, srcPayload)

	// get payload
	objPayload := o.Payload()

	// change the source payload
	srcPayload[0]++

	// check that payload has not changed
	require.Equal(t, objPayload, o.Payload())
}