package fileid

import (
	"testing"

	"github.com/stretchr/testify/require"

	"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
)

func TestPhotoSizeSourceEncodeDecode(t *testing.T) {
	tests := []PhotoSizeSource{
		{
			Type:   PhotoSizeSourceLegacy,
			Secret: 10,
		},
		{
			Type:                 PhotoSizeSourceStickerSetThumbnail,
			StickerSetID:         12,
			StickerSetAccessHash: 13,
		},
		{
			Type:     PhotoSizeSourceFullLegacy,
			VolumeID: 13,
			LocalID:  14,
			Secret:   15,
		},
		{
			Type:             PhotoSizeSourceDialogPhotoBigLegacy,
			VolumeID:         13,
			LocalID:          14,
			DialogID:         -1001228418968,
			DialogAccessHash: 15,
		},
		{
			Type:                 PhotoSizeSourceStickerSetThumbnailLegacy,
			VolumeID:             10,
			LocalID:              11,
			StickerSetID:         12,
			StickerSetAccessHash: 13,
		},
		{
			Type:                 PhotoSizeSourceStickerSetThumbnailVersion,
			StickerSetID:         12,
			StickerSetAccessHash: 13,
			StickerVersion:       1,
		},
	}

	for _, tt := range tests {
		t.Run(tt.Type.String(), func(t *testing.T) {
			a := require.New(t)
			var b bin.Buffer

			tt.encode(&b)
			var got PhotoSizeSource
			a.NoError(got.decode(&b, latestSubVersion))
			a.Equal(tt, got)
		})
	}
}
