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; } }