package control_test

import (
	"crypto/rand"
	"testing"

	"github.com/mr-tron/base58"
	"github.com/stretchr/testify/require"
	"google.golang.org/protobuf/proto"
)

type protoMessage interface {
	StableMarshal([]byte) ([]byte, error)
	proto.Message
}

func testStableMarshal(t *testing.T, m1, m2 protoMessage, cmp func(m1, m2 protoMessage) bool) {
	data, err := m1.StableMarshal(nil)
	require.NoError(t, err)

	require.NoError(t, proto.Unmarshal(data, m2))

	require.True(t, cmp(m1, m2))
}

func testData(sz int) []byte {
	d := make([]byte, sz)

	_, _ = rand.Read(d)

	return d
}

func testString() string {
	return base58.Encode(testData(10))
}