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

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

public sealed class JetStreamClusterStreamsGroupCTests
{
    [Fact] // T:1618
    public void SendStreamLostQuorumAdvisory_Method_ShouldExist()
    {
        typeof(NatsServer).GetMethod("SendStreamLostQuorumAdvisory", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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