From f522c9ffa487e3710d691e8b98df8c4f0cfafd43 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 20:07:26 +0800
Subject: [PATCH] 支持模拟器逐通道参数与工步方案配置

---
 battery-device-simulator/src/test/java/com/battery/device/contract/SimulatorPublicContractTest.java |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/battery-device-simulator/src/test/java/com/battery/device/contract/SimulatorPublicContractTest.java b/battery-device-simulator/src/test/java/com/battery/device/contract/SimulatorPublicContractTest.java
index 49d5be2..ed7846e 100644
--- a/battery-device-simulator/src/test/java/com/battery/device/contract/SimulatorPublicContractTest.java
+++ b/battery-device-simulator/src/test/java/com/battery/device/contract/SimulatorPublicContractTest.java
@@ -136,7 +136,7 @@
     }
 
     @Test
-    void developmentSimulatorSupportsNewareProfilesAndDynamicObservation() throws Exception
+    void developmentSimulatorSupportsNewareProfilesAndFixedObservation() throws Exception
     {
         try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0);
              BtsTcpTransport transport = new BtsTcpTransport("127.0.0.1", simulator.port(),
@@ -168,12 +168,39 @@
             var first = adapter.inquire(channel).values().iterator().next();
             var second = adapter.inquire(channel).values().iterator().next();
             assertEquals(DeviceWorkStatus.WORKING, first.workStatus());
-            assertNotEquals(first.currentA(), second.currentA());
+            assertEquals(first.currentA(), second.currentA());
             assertTrue(first.voltageV().doubleValue() >= 0.0 && first.voltageV().doubleValue() <= 5.0);
         }
     }
 
     @Test
+    void configuredChannelValuesReachBtsInquireWithoutClampingOrRounding() throws Exception
+    {
+        try (var simulator = new BtsDevelopmentSimulator(0);
+             var transport = new BtsTcpTransport("127.0.0.1", simulator.port(), Duration.ofSeconds(1), Duration.ofSeconds(1));
+             DeviceAdapter adapter = new BtsDeviceAdapter("dev-sim", transport,
+                     new BtsXmlCodec("dev-sim", ZoneId.of("Asia/Hong_Kong")))) {
+            simulator.configureChannel(1, 1, new com.battery.device.simulator.BtsSimulatorStateStore.ChannelConfiguration(
+                    new java.math.BigDecimal("-2.123456"), new java.math.BigDecimal("8.125"),
+                    new java.math.BigDecimal("7.2"), new java.math.BigDecimal("29.7"), 2, 2, 5, 120, 30,
+                    List.of(new com.battery.device.simulator.BtsSimulatorStateStore.SimulatorPlanStep("充电", "cc", 60, 4.2),
+                            new com.battery.device.simulator.BtsSimulatorStateStore.SimulatorPlanStep("放电 <验证>", "dc", 90, 3.0))));
+            var channel = adapter.discoverChannels().stream().filter(item -> item.identity().chlid() == 1)
+                    .findFirst().orElseThrow().identity();
+            var observation = adapter.inquire(Set.of(channel)).get(channel);
+            assertEquals(-2.123456, observation.currentA().doubleValue());
+            assertEquals(8.125, observation.voltageV().doubleValue());
+            assertEquals(7.2, observation.capacityAh().doubleValue());
+            assertEquals(29.7, observation.energyWh().doubleValue());
+            assertEquals(2, observation.cycleNo());
+            assertEquals(2, observation.stepNo());
+            assertEquals("dc", observation.stepType());
+            assertEquals(120L, observation.totalTimeSeconds());
+            assertEquals(30L, observation.relativeTimeSeconds());
+        }
+    }
+
+    @Test
     void developmentSimulatorPersistsNewareProfileMetadata() throws Exception
     {
         InMemoryBtsSimulatorStateStore store = new InMemoryBtsSimulatorStateStore();

--
Gitblit v1.7.1