package sarama

import (
	"reflect"
	"testing"
)

var (
	syncGroupResponseNoError = []byte{
		0x00, 0x00, // No error
		0, 0, 0, 3, 0x01, 0x02, 0x03, // Member assignment data
	}

	syncGroupResponseWithError = []byte{
		0, 27, // ErrRebalanceInProgress
		0, 0, 0, 0, // No member assignment data
	}
)

func TestSyncGroupResponse(t *testing.T) {
	var response *SyncGroupResponse

	response = new(SyncGroupResponse)
	testVersionDecodable(t, "no error", response, syncGroupResponseNoError, 0)
	if response.Err != ErrNoError {
		t.Error("Decoding Err failed: no error expected but found", response.Err)
	}
	if !reflect.DeepEqual(response.MemberAssignment, []byte{0x01, 0x02, 0x03}) {
		t.Error("Decoding MemberAssignment failed, found:", response.MemberAssignment)
	}

	response = new(SyncGroupResponse)
	testVersionDecodable(t, "no error", response, syncGroupResponseWithError, 0)
	if response.Err != ErrRebalanceInProgress {
		t.Error("Decoding Err failed: ErrRebalanceInProgress expected but found", response.Err)
	}
	if !reflect.DeepEqual(response.MemberAssignment, []byte{}) {
		t.Error("Decoding MemberAssignment failed, found:", response.MemberAssignment)
	}
}