package module

import (
	"context"
	"testing"
)

func TestNullModular(t *testing.T) {
	n := &NullModular{}
	n.Name()
	_ = n.Start(context.TODO())
	_ = n.Stop(context.TODO())
	_, _ = n.ReserveResource(context.TODO(), nil)
	n.ReleaseResource(context.TODO(), nil)
	_, _ = n.QueryTasks(context.TODO(), "")
	_, _ = n.QueryBucketMigrate(context.TODO())
	_, _ = n.QuerySpExit(context.TODO())
	_ = n.PreCreateBucketApproval(context.TODO(), nil)
	_, _ = n.HandleCreateBucketApprovalTask(context.TODO(), nil)
	n.PostCreateBucketApproval(context.TODO(), nil)
	_ = n.PreMigrateBucketApproval(context.TODO(), nil)
	_, _ = n.HandleMigrateBucketApprovalTask(context.TODO(), nil)
	n.PostMigrateBucketApproval(context.TODO(), nil)
	_, _ = n.PickVirtualGroupFamily(context.TODO(), nil)
	_ = n.NotifyMigrateSwapOut(context.TODO(), nil)
	_ = n.PreCreateObjectApproval(context.TODO(), nil)
	_, _ = n.HandleCreateObjectApprovalTask(context.TODO(), nil)
	n.PostCreateObjectApproval(context.TODO(), nil)
	_ = n.PreReplicatePieceApproval(context.TODO(), nil)
	_, _ = n.HandleReplicatePieceApproval(context.TODO(), nil)
	_ = n.HandleRecoverPieceTask(context.TODO(), nil)
	n.PostReplicatePieceApproval(context.TODO(), nil)
	_ = n.PreUploadObject(context.TODO(), nil)
	_ = n.PreResumableUploadObject(context.TODO(), nil)
	_ = n.HandleResumableUploadObjectTask(context.TODO(), nil, nil)
	n.PostResumableUploadObject(context.TODO(), nil)
	_ = n.HandleUploadObjectTask(context.TODO(), nil, nil)
	n.PostUploadObject(context.TODO(), nil)
	_, _ = n.DispatchTask(context.TODO(), nil)
	_, _ = n.QueryTask(context.TODO(), "")
	_ = n.HandleCreateUploadObjectTask(context.TODO(), nil)
	_ = n.HandleDoneUploadObjectTask(context.TODO(), nil)
	_ = n.HandleCreateResumableUploadObjectTask(context.TODO(), nil)
	_ = n.HandleDoneResumableUploadObjectTask(context.TODO(), nil)
	_ = n.HandleReplicatePieceTask(context.TODO(), nil)
	_ = n.HandleSealObjectTask(context.TODO(), nil)
	_ = n.HandleReceivePieceTask(context.TODO(), nil)
	_ = n.HandleGCObjectTask(context.TODO(), nil)
	_ = n.HandleGCZombiePieceTask(context.TODO(), nil)
	_ = n.HandleGCMetaTask(context.TODO(), nil)
	_ = n.HandleMigrateGVGTask(context.TODO(), nil)
	_ = n.HandleDownloadObjectTask(context.TODO(), nil)
	_ = n.HandleChallengePieceTask(context.TODO(), nil)
	_, _ = n.VerifyAuthentication(context.TODO(), 0, "", "", "")
	_, _ = n.GetAuthNonce(context.TODO(), "", "")
	_, _ = n.UpdateUserPublicKey(context.TODO(), "", "", 0, 0, "", 0)
	_, _ = n.VerifyOffChainSignature(context.TODO(), "", "", "", "")
	_, _ = n.VerifyGNFD1EddsaSignature(context.TODO(), "", "", "", nil)
}

func TestNilModular(t *testing.T) {
	n := &NilModular{}
	n.Name()
	_ = n.Start(context.TODO())
	_ = n.Stop(context.TODO())
	_, _ = n.ReserveResource(context.TODO(), nil)
	n.ReleaseResource(context.TODO(), nil)
	_, _ = n.QueryTasks(context.TODO(), "")
	_ = n.PreDownloadObject(context.TODO(), nil)
	_, _ = n.HandleDownloadObjectTask(context.TODO(), nil)
	n.PostDownloadObject(context.TODO(), nil)
	_ = n.PreDownloadPiece(context.TODO(), nil)
	_, _ = n.HandleDownloadPieceTask(context.TODO(), nil)
	n.PostDownloadPiece(context.TODO(), nil)
	_ = n.PreChallengePiece(context.TODO(), nil)
	_, _, _, _ = n.HandleChallengePiece(context.TODO(), nil)
	_ = n.AskTask(context.TODO())
	n.PostChallengePiece(context.TODO(), nil)
	_ = n.ReportTask(context.TODO(), nil)
	n.HandleReplicatePieceTask(context.TODO(), nil)
	n.HandleSealObjectTask(context.TODO(), nil)
	n.HandleReceivePieceTask(context.TODO(), nil)
	n.HandleGCObjectTask(context.TODO(), nil)
	n.HandleGCZombiePieceTask(context.TODO(), nil)
	n.HandleGCMetaTask(context.TODO(), nil)
	_, _ = n.HandleReplicatePieceApproval(context.TODO(), nil, 0, 0, 0)
	n.HandleMigrateGVGTask(context.TODO(), nil)
	_, _ = n.HandleQueryBootstrap(context.TODO())
	_, _ = n.SignCreateBucketApproval(context.TODO(), nil)
	_, _ = n.SignMigrateBucketApproval(context.TODO(), nil)
	_, _ = n.SignCreateObjectApproval(context.TODO(), nil)
	_, _ = n.SignReplicatePieceApproval(context.TODO(), nil)
	_, _ = n.SignReceivePieceTask(context.TODO(), nil)
	_, _ = n.SignSecondarySealBls(context.TODO(), 0, 0, nil)
	_, _ = n.SignRecoveryPieceTask(context.TODO(), nil)
	_, _ = n.SignP2PPingMsg(context.TODO(), nil)
	_, _ = n.SignP2PPongMsg(context.TODO(), nil)
	_, _ = n.SealObject(context.TODO(), nil)
	_, _ = n.RejectUnSealObject(context.TODO(), nil)
	_, _ = n.DiscontinueBucket(context.TODO(), nil)
	_, _ = n.CreateGlobalVirtualGroup(context.TODO(), nil)
	_, _ = n.CompleteMigrateBucket(context.TODO(), nil)
	_, _ = n.SignSecondarySPMigrationBucket(context.TODO(), nil)
	_, _ = n.SwapOut(context.TODO(), nil)
	_, _ = n.SignSwapOut(context.TODO(), nil)
	_, _ = n.CompleteSwapOut(context.TODO(), nil)
	_, _ = n.SPExit(context.TODO(), nil)
	_, _ = n.CompleteSPExit(context.TODO(), nil)
	_, _ = n.UpdateSPPrice(context.TODO(), nil)
	_, _ = n.SignMigrateGVG(context.TODO(), nil)
}

func TestNullReceiveModular(t *testing.T) {
	n := &NullReceiveModular{}
	n.Name()
	_ = n.Start(context.TODO())
	_ = n.Stop(context.TODO())
	_, _ = n.ReserveResource(context.TODO(), nil)
	n.ReleaseResource(context.TODO(), nil)
	_, _ = n.QueryTasks(context.TODO(), "")
	_ = n.HandleReceivePieceTask(context.TODO(), nil, nil)
	_, _ = n.HandleDoneReceivePieceTask(context.TODO(), nil)
}
