mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-08-31 19:08:29 +00:00
feat: Add unit tests and fakes for Crestron environment and data store
- Introduced `FakeCrestronEnvironment` and `FakeEthernetHelper` for testing purposes. - Implemented `InMemoryCrestronDataStore` to facilitate unit tests for data storage. - Created `DebugServiceTests` to validate the behavior of debug-related services. - Added project files for unit tests targeting .NET 9.0 with necessary dependencies. - Developed production adapters (`CrestronConsoleAdapter`, `CrestronDataStoreAdapter`, `CrestronEnvironmentAdapter`, `CrestronEthernetAdapter`) to interface with the Crestron SDK. - Updated `Debug` class to utilize injected service abstractions instead of direct SDK calls. - Enhanced `ControlSystem` initialization to register service adapters before usage.
This commit is contained in:
parent
bfb9838743
commit
24df4e7a03
21 changed files with 1020 additions and 93 deletions
100
src/PepperDash.Core.Abstractions/Enums.cs
Normal file
100
src/PepperDash.Core.Abstractions/Enums.cs
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
namespace PepperDash.Core.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors Crestron's <c>eDevicePlatform</c> without requiring the Crestron SDK.
|
||||
/// </summary>
|
||||
public enum DevicePlatform
|
||||
{
|
||||
/// <summary>Hardware appliance (e.g. CP4, MC4).</summary>
|
||||
Appliance,
|
||||
/// <summary>Crestron Virtual Control / server runtime.</summary>
|
||||
Server,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors Crestron's <c>eRuntimeEnvironment</c>.
|
||||
/// </summary>
|
||||
public enum RuntimeEnvironment
|
||||
{
|
||||
/// <summary>SimplSharpPro program slot (hardware 4-series).</summary>
|
||||
SimplSharpPro,
|
||||
/// <summary>SimplSharp (older 3-series or server environments).</summary>
|
||||
SimplSharp,
|
||||
/// <summary>Any other environment — check for completeness.</summary>
|
||||
Other,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors Crestron's <c>ConsoleAccessLevelEnum</c>.
|
||||
/// </summary>
|
||||
public enum ConsoleAccessLevel
|
||||
{
|
||||
AccessAdministrator = 0,
|
||||
AccessOperator = 1,
|
||||
AccessProgrammer = 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors Crestron's <c>eProgramStatusEventType</c>.
|
||||
/// </summary>
|
||||
public enum ProgramStatusEventType
|
||||
{
|
||||
Starting,
|
||||
Stopping,
|
||||
Paused,
|
||||
Resumed,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors the event type used by Crestron's <c>EthernetEventArgs</c>.
|
||||
/// </summary>
|
||||
public enum EthernetEventType
|
||||
{
|
||||
LinkDown = 0,
|
||||
LinkUp = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event args for Crestron ethernet link events.
|
||||
/// </summary>
|
||||
public class PepperDashEthernetEventArgs : EventArgs
|
||||
{
|
||||
public EthernetEventType EthernetEventType { get; }
|
||||
public short EthernetAdapter { get; }
|
||||
|
||||
public PepperDashEthernetEventArgs(EthernetEventType eventType, short adapter)
|
||||
{
|
||||
EthernetEventType = eventType;
|
||||
EthernetAdapter = adapter;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors the set of <c>CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET</c> values
|
||||
/// used across this codebase — does not aim to be exhaustive.
|
||||
/// </summary>
|
||||
public enum EthernetParameterType
|
||||
{
|
||||
GetCurrentIpAddress,
|
||||
GetHostname,
|
||||
GetDomainName,
|
||||
GetLinkStatus,
|
||||
GetCurrentDhcpState,
|
||||
GetCurrentIpMask,
|
||||
GetCurrentRouter,
|
||||
GetMacAddress,
|
||||
GetDnsServer,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors Crestron's <c>SocketStatus</c> without requiring the Crestron SDK.
|
||||
/// </summary>
|
||||
public enum PepperDashSocketStatus
|
||||
{
|
||||
SocketNotConnected = 0,
|
||||
SocketConnected = 2,
|
||||
SocketConnectionInProgress = 6,
|
||||
SocketConnectFailed = 11,
|
||||
SocketDisconnecting = 12,
|
||||
SocketBrokenRemotely = 7,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue