using System.Reflection;
using Shouldly;
using ZB.MOM.NatsNet.Server;

namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;

public sealed class JetStreamClusterConsumersGroupBTests
{
    [Fact] // T:1656
    public void ProcessConsumerAssignmentResults_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("ProcessConsumerAssignmentResults", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1657
    public void StartUpdatesSub_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("StartUpdatesSub", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1658
    public void StopUpdatesSub_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("StopUpdatesSub", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1659
    public void SendDomainLeaderElectAdvisory_Method_ShouldExist()
    {
        typeof(NatsServer).GetMethod("SendDomainLeaderElectAdvisory", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1660
    public void ProcessLeaderChange_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("ProcessLeaderChange", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1661
    public void RemapStreamAssignment_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("RemapStreamAssignment", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1662
    public void Error_Method_ShouldExist()
    {
        typeof(SelectPeerError).GetMethod("Error", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1663
    public void AddMissingTag_Method_ShouldExist()
    {
        typeof(SelectPeerError).GetMethod("AddMissingTag", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1664
    public void AddExcludeTag_Method_ShouldExist()
    {
        typeof(SelectPeerError).GetMethod("AddExcludeTag", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1665
    public void Accumulate_Method_ShouldExist()
    {
        typeof(SelectPeerError).GetMethod("Accumulate", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1666
    public void SelectPeerGroup_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("SelectPeerGroup", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1667
    public void GroupNameForStream_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("GroupNameForStream", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1668
    public void GroupNameForConsumer_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("GroupNameForConsumer", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1669
    public void GroupName_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("GroupName", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1670
    public void TieredStreamAndReservationCount_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("TieredStreamAndReservationCount", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1671
    public void CreateGroupForStream_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("CreateGroupForStream", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1672
    public void SelectLimits_Method_ShouldExist()
    {
        typeof(Account).GetMethod("SelectLimits", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1673
    public void JsClusteredStreamLimitsCheck_Method_ShouldExist()
    {
        typeof(JetStreamEngine).GetMethod("JsClusteredStreamLimitsCheck", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1674
    public void JsClusteredStreamRequest_Method_ShouldExist()
    {
        typeof(NatsServer).GetMethod("JsClusteredStreamRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

    [Fact] // T:1675
    public void SysRequest_Method_ShouldExist()
    {
        typeof(JetStreamCluster).GetMethod("SysRequest", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();
    }
}
