package session

import (
	"testing"

	"github.com/nspcc-dev/neofs-api-go/v2/session"
	"github.com/stretchr/testify/require"
)

func TestXHeader(t *testing.T) {
	x := NewXHeader()

	key := "some key"
	val := "some value"

	x.SetKey(key)
	x.SetValue(val)

	require.Equal(t, key, x.Key())
	require.Equal(t, val, x.Value())

	xV2 := x.ToV2()

	require.Equal(t, key, xV2.GetKey())
	require.Equal(t, val, xV2.GetValue())
}

func TestNewXHeaderFromV2(t *testing.T) {
	t.Run("from nil", func(t *testing.T) {
		var x *session.XHeader

		require.Nil(t, NewXHeaderFromV2(x))
	})
}

func TestXHeader_ToV2(t *testing.T) {
	t.Run("nil", func(t *testing.T) {
		var x *XHeader

		require.Nil(t, x.ToV2())
	})
}

func TestNewXHeader(t *testing.T) {
	t.Run("default values", func(t *testing.T) {
		xh := NewXHeader()

		// check initial values
		require.Empty(t, xh.Value())
		require.Empty(t, xh.Key())

		// convert to v2 message
		xhV2 := xh.ToV2()

		require.Empty(t, xhV2.GetValue())
		require.Empty(t, xhV2.GetKey())
	})
}