package collectiveBeacon

import (
	"testing"

	"github.com/iotaledger/goshimmer/packages/binary/drng/payload/header"
	"github.com/iotaledger/goshimmer/packages/binary/marshalutil"
	"github.com/stretchr/testify/require"
)

func TestParse(t *testing.T) {
	header := header.New(header.CollectiveBeaconType(), 0)
	payload := New(header.Instance(),
		0,
		[]byte("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), // prevSignature
		[]byte("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"), // signature
		[]byte("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")) // distributed PK
	bytes := payload.Bytes()

	marshalUtil := marshalutil.New(bytes)
	parsedpayload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) })
	require.NoError(t, err)

	cb := parsedpayload.(*Payload)

	require.Equal(t, payload.SubType(), cb.SubType())
	require.Equal(t, payload.Instance(), cb.Instance())
	require.Equal(t, payload.Round(), cb.Round())
	require.Equal(t, payload.PrevSignature(), cb.PrevSignature())
	require.Equal(t, payload.Signature(), cb.Signature())
	require.Equal(t, payload.DistributedPK(), cb.DistributedPK())
}