package payload

import (
	"bytes"
	"reflect"
	"testing"
)

func TestVersionEncodeDecode(t *testing.T) {
	version := NewVersion(13337, 3000, "/NEO:0.0.1/", 0, true)

	buf := new(bytes.Buffer)
	if err := version.EncodeBinary(buf); err != nil {
		t.Fatal(err)
	}

	versionDecoded := &Version{}
	if err := versionDecoded.DecodeBinary(buf); err != nil {
		t.Fatal(err)
	}

	if !reflect.DeepEqual(version, versionDecoded) {
		t.Fatalf("expected both version payload to be equal: %+v and %+v", version, versionDecoded)
	}

	if version.Size() != uint32(minVersionSize+len(version.UserAgent)) {
		t.Fatalf("Expected version size of %d", minVersionSize+len(version.UserAgent))
	}
}