| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using IvfTl.ControlHost.Debug;
- using IvfTl.ControlHost.Tests.Fakes;
- using Newtonsoft.Json.Linq;
- using Xunit;
- namespace IvfTl.ControlHost.Tests
- {
- /// <summary>缓冲瓶(舱11)专属 op 路由测试:验证 Execute 把 5 个 op 分发到正确底层方法。</summary>
- public class DebugBufferOpTests
- {
- private static readonly DateTime Now = new DateTime(2026, 6, 24, 0, 0, 0, DateTimeKind.Utc);
- // 返回 (manager, sid, fakeSerial) 三件套,照 DebugStreamSessionTests 的装配方式
- private (DebugSessionManager mgr, string sid, FakeSerial ser) NewSession()
- {
- var ser = new FakeSerial();
- var gate = new FakeGate(11, ser);
- var mgr = new DebugSessionManager(_ => gate, () => Now, ttlMs: 10000, log: null);
- string sid = (string)mgr.Acquire(11).Result;
- return (mgr, sid, ser);
- }
- [Fact]
- public void BufferState_RoutesTo_BufferBottleStateWait_AndReturnsTuple()
- {
- var (mgr, sid, ser) = NewSession();
- ser.BufferStateReturn = (2.5m, 36.1m, 37.2m);
- var r = mgr.Execute(sid, "BufferState", null);
- Assert.True(r.Ok);
- Assert.Contains("BufferState", ser.Calls);
- var jo = JObject.FromObject(r.Result);
- Assert.Equal(2.5m, jo["pressure"].Value<decimal>());
- Assert.Equal(36.1m, jo["t1"].Value<decimal>());
- Assert.Equal(37.2m, jo["t2"].Value<decimal>());
- }
- [Fact]
- public void BufferAeration_RoutesTo_BufferBottleAerationWait()
- {
- var (mgr, sid, ser) = NewSession();
- var r = mgr.Execute(sid, "BufferAeration", null);
- Assert.True(r.Ok);
- Assert.Equal(true, r.Result);
- Assert.Contains("BufferAeration", ser.Calls);
- }
- [Fact]
- public void ReadLight_RoutesTo_ReadLightBrightnessWait_AndReturnsInt()
- {
- var (mgr, sid, ser) = NewSession();
- var r = mgr.Execute(sid, "ReadLight", null);
- Assert.True(r.Ok);
- Assert.Equal(500, r.Result); // FakeSerial.ReadLightBrightnessWait 固定返回 500
- Assert.Contains("ReadLight", ser.Calls);
- }
- [Fact]
- public void WriteLight_RoutesTo_WriteLightBrightnessWait_WithValue()
- {
- var (mgr, sid, ser) = NewSession();
- var args = new JObject { ["value"] = 320 };
- var r = mgr.Execute(sid, "WriteLight", args);
- Assert.True(r.Ok);
- Assert.Contains("WriteLight(320)", ser.Calls);
- Assert.Equal(320, ser.LastWriteLight);
- }
- [Fact]
- public void WriteOpenIntakeTimeBuffer_RoutesTo_WriteOpenIntakeTimeWait_WithIsBufferTrue()
- {
- var (mgr, sid, ser) = NewSession();
- var args = new JObject { ["value"] = 150 };
- var r = mgr.Execute(sid, "WriteOpenIntakeTimeBuffer", args);
- Assert.True(r.Ok);
- Assert.Equal(150, ser.LastWriteIntake);
- Assert.True(ser.LastWriteIntakeIsBuffer);
- }
- }
- }
|