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
46
src/PepperDash.Core.Tests/Fakes/CrestronEnvironmentFakes.cs
Normal file
46
src/PepperDash.Core.Tests/Fakes/CrestronEnvironmentFakes.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
using PepperDash.Core.Abstractions;
|
||||
|
||||
namespace PepperDash.Core.Tests.Fakes;
|
||||
|
||||
/// <summary>
|
||||
/// Configurable ICrestronEnvironment for unit tests.
|
||||
/// Defaults: Appliance / SimplSharpPro / ApplicationNumber=1.
|
||||
/// </summary>
|
||||
public class FakeCrestronEnvironment : ICrestronEnvironment
|
||||
{
|
||||
public DevicePlatform DevicePlatform { get; set; } = DevicePlatform.Appliance;
|
||||
public RuntimeEnvironment RuntimeEnvironment { get; set; } = RuntimeEnvironment.SimplSharpPro;
|
||||
public string NewLine { get; set; } = "\r\n";
|
||||
public uint ApplicationNumber { get; set; } = 1;
|
||||
public uint RoomId { get; set; } = 0;
|
||||
|
||||
public event EventHandler<ProgramStatusEventArgs>? ProgramStatusChanged;
|
||||
public event EventHandler<PepperDashEthernetEventArgs>? EthernetEventReceived;
|
||||
|
||||
public string GetApplicationRootDirectory() => System.IO.Path.GetTempPath();
|
||||
|
||||
/// <summary>Simulates a program status event for tests.</summary>
|
||||
public void RaiseProgramStatus(ProgramStatusEventType type) =>
|
||||
ProgramStatusChanged?.Invoke(this, new ProgramStatusEventArgs(type));
|
||||
|
||||
/// <summary>Simulates an ethernet event for tests.</summary>
|
||||
public void RaiseEthernetEvent(EthernetEventType type, short adapter = 0) =>
|
||||
EthernetEventReceived?.Invoke(this, new PepperDashEthernetEventArgs(type, adapter));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// No-op IEthernetHelper that returns configurable values.
|
||||
/// </summary>
|
||||
public class FakeEthernetHelper : IEthernetHelper
|
||||
{
|
||||
private readonly Dictionary<EthernetParameterType, string> _values = new();
|
||||
|
||||
public FakeEthernetHelper Seed(EthernetParameterType param, string value)
|
||||
{
|
||||
_values[param] = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
public string GetEthernetParameter(EthernetParameterType parameter, short ethernetAdapterId) =>
|
||||
_values.TryGetValue(parameter, out var v) ? v : string.Empty;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue