package util_test import ( "crypto/rand" "testing" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/util" objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id" "github.com/google/uuid" "github.com/stretchr/testify/require" ) func TestMergeSplitInfo(t *testing.T) { uid, err := uuid.NewUUID() require.NoError(t, err) splitID := objectSDK.NewSplitID() splitID.SetUUID(uid) var rawLinkID, rawLastID [32]byte var linkID oid.ID var lastID oid.ID _, err = rand.Read(rawLinkID[:]) require.NoError(t, err) linkID.SetSHA256(rawLinkID) _, err = rand.Read(rawLastID[:]) require.NoError(t, err) lastID.SetSHA256(rawLastID) target := objectSDK.NewSplitInfo() // target is SplitInfo struct with all fields set target.SetSplitID(splitID) target.SetLastPart(lastID) target.SetLink(linkID) t.Run("merge empty", func(t *testing.T) { to := objectSDK.NewSplitInfo() result := util.MergeSplitInfo(target, to) require.Equal(t, result, target) }) t.Run("merge link", func(t *testing.T) { from := objectSDK.NewSplitInfo() from.SetSplitID(splitID) from.SetLastPart(lastID) to := objectSDK.NewSplitInfo() to.SetLink(linkID) result := util.MergeSplitInfo(from, to) require.Equal(t, result, target) }) t.Run("merge last", func(t *testing.T) { from := objectSDK.NewSplitInfo() from.SetSplitID(splitID) from.SetLink(linkID) to := objectSDK.NewSplitInfo() to.SetLastPart(lastID) result := util.MergeSplitInfo(from, to) require.Equal(t, result, target) }) }