package jsonrpc

import (
	"testing"

	"github.com/intel-go/fastjson"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestUnmarshal(t *testing.T) {

	err := Unmarshal(nil, nil)
	require.IsType(t, &Error{}, err)
	assert.Equal(t, ErrorCodeInvalidParams, err.Code)

	src := fastjson.RawMessage([]byte(`{"name":"john"}`))

	Unmarshal(&src, nil)
	require.IsType(t, &Error{}, err)
	assert.Equal(t, ErrorCodeInvalidParams, err.Code)

	dst := struct {
		Name string `json:"name"`
	}{}

	err = Unmarshal(&src, &dst)
	require.Nil(t, err)
	assert.Equal(t, "john", dst.Name)
}