using System;
using System.Collections.Generic;
namespace CrestronMock;
/// Mock Crestron signal base class
public class Sig { }
/// Mock UShort input signal
public class UShortInputSig { }
/// Mock UShort output signal
public class UShortOutputSig { }
/// Mock Boolean input signal
public class BoolInputSig { }
/// Mock String input signal
public class StringInputSig { }
/// Mock Boolean output signal
public class BoolOutputSig { }
/// Mock String output signal
public class StringOutputSig { }
/// Mock signal group
public class SigGroup { }
/// Mock COM port
public class ComPort { }
/// Mock relay
public class Relay { }
/// Mock IR output port
public class IROutputPort { }
/// Mock IO port
public class IOPort { }
/// Mock VersiPort
public class VersiPort { }
/// Mock IR input port
public class IRInputPort { }
/// Signal type enumeration
public enum eSigType
{
Bool,
UShort,
String
}
/// Mock read-only collection
public class ReadOnlyCollection : Dictionary where TKey : notnull
{
}
/// Mock COM ports interface
public interface IComPorts
{
ComPort[] ComPorts { get; }
}
/// Mock relay ports interface
public interface IRelayPorts
{
Relay[] RelayPorts { get; }
}
/// Mock IR output ports interface
public interface IIROutputPorts
{
IROutputPort[] IROutputPorts { get; }
}
/// Mock IO ports interface
public interface IIOPorts
{
IOPort[] IOPorts { get; }
}
/// Mock digital input ports interface
public interface IDigitalInputPorts
{
VersiPort[] DigitalInputPorts { get; }
}
/// Mock IR input port interface
public interface IIRInputPort
{
IRInputPort IRInputPort { get; }
}
///
/// Mock implementation of CrestronControlSystem for testing purposes
/// Base class for the CrestronControlSystem The Customer application is derived over this class
///
public class CrestronControlSystem : IComPorts, IRelayPorts, IIROutputPorts, IIOPorts, IDigitalInputPorts, IIRInputPort
{
// Static fields
public static Sig NullCue { get; set; } = new Sig();
public static UShortInputSig NullUShortInputSig { get; set; } = new UShortInputSig();
public static UShortOutputSig NullUShortOutputSig { get; set; } = new UShortOutputSig();
public static BoolInputSig NullBoolInputSig { get; set; } = new BoolInputSig();
public static StringInputSig NullStringInputSig { get; set; } = new StringInputSig();
public static BoolOutputSig NullBoolOutputSig { get; set; } = new BoolOutputSig();
public static StringOutputSig NullStringOutputSig { get; set; } = new StringOutputSig();
public static ReadOnlyCollection SigGroups { get; set; } = new ReadOnlyCollection();
public static int MaxNumberOfEventsInQueue { get; set; } = 1000;
// Constructor
public CrestronControlSystem()
{
// Initialize collections and properties
ComPorts = Array.Empty();
RelayPorts = Array.Empty();
IROutputPorts = Array.Empty();
IOPorts = Array.Empty();
DigitalInputPorts = Array.Empty();
IRInputPort = new IRInputPort();
}
// Virtual methods that can be overridden
public virtual void InitializeSystem()
{
// Override in derived classes
}
public virtual void SavePreset()
{
// Override in derived classes
}
public virtual void RecallPreset()
{
// Override in derived classes
}
public virtual void BassFlat()
{
// Override in derived classes
}
public virtual void TrebleFlat()
{
// Override in derived classes
}
public virtual void LimiterEnable()
{
// Override in derived classes
}
public virtual void LimiterDisable()
{
// Override in derived classes
}
public virtual void LimiterSoftKneeOn()
{
// Override in derived classes
}
public virtual void LimiterSoftKneeOff()
{
// Override in derived classes
}
public virtual void MasterMuteOn()
{
// Override in derived classes
}
public virtual void MasterMuteOff()
{
// Override in derived classes
}
public virtual void MicMasterMuteOn()
{
// Override in derived classes
}
public virtual void MicMasterMuteOff()
{
// Override in derived classes
}
public virtual void SourceMuteOn()
{
// Override in derived classes
}
public virtual void SourceMuteOff()
{
// Override in derived classes
}
// Non-virtual methods
public void MicMuteOn(uint MicNumber)
{
// Implementation
}
public void MicMuteOff(uint MicNumber)
{
// Implementation
}
public void MonoOutput()
{
// Implementation
}
public void StereoOutput()
{
// Implementation
}
// Static methods for SigGroup management
public static SigGroup CreateSigGroup(int groupID, params BoolInputSig[] boolInputSigs)
{
return new SigGroup();
}
public static SigGroup CreateSigGroup(int groupID, params UShortInputSig[] ushortInputSigs)
{
return new SigGroup();
}
public static SigGroup CreateSigGroup(int groupID, eSigType type)
{
return new SigGroup();
}
public static SigGroup CreateSigGroup(int groupID, params StringInputSig[] stringInputSigs)
{
return new SigGroup();
}
public static void RemoveSigGroup(int groupID)
{
// Implementation
}
public static void RemoveSigGroup(SigGroup sigGroupToRemove)
{
// Implementation
}
public static void ClearSigGroups()
{
// Implementation
}
// Interface implementations
public ComPort[] ComPorts { get; set; }
public Relay[] RelayPorts { get; set; }
public IROutputPort[] IROutputPorts { get; set; }
public IOPort[] IOPorts { get; set; }
public VersiPort[] DigitalInputPorts { get; set; }
public IRInputPort IRInputPort { get; set; }
}