package com.battery.device.bts; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.List; import org.junit.jupiter.api.Test; import com.battery.device.bts.BtsDeviceAdapterFactory; import com.battery.device.bts.ScriptedBtsTcpSimulator; import com.battery.device.model.AdapterCapabilities; import com.battery.device.registry.AdapterInstanceConfig; import com.battery.device.registry.DeviceAdapterRegistry; class BtsDeviceAdapterFactoryContractTest { @Test void discoversSimulatorChannelsThroughConfiguredReadOnlyRegistry() throws Exception { try (ScriptedBtsTcpSimulator simulator = new ScriptedBtsTcpSimulator(); DeviceAdapterRegistry registry = new DeviceAdapterRegistry(List.of(new BtsDeviceAdapterFactory()))) { simulator.enqueue("getdevinfo_resp" + "true" + ""); AdapterCapabilities capabilities = new AdapterCapabilities(true, true, false, false); registry.synchronize(new AdapterInstanceConfig("lab-bts", "BTS", "127.0.0.1", simulator.port(), 5000, "Asia/Hong_Kong", true, capabilities)); var adapter = registry.execute("lab-bts", value -> value); var discovered = adapter.discoverChannels(); assertEquals("22-1-2-3", discovered.get(0).identity().vendorKey()); assertEquals("192.168.1.35", discovered.get(0).serverIp()); assertFalse(adapter.capabilities().control()); assertFalse(adapter.capabilities().historyDownload()); assertThrows(UnsupportedOperationException.class, () -> adapter.inquireHistory(java.util.Set.of(discovered.get(0).identity()))); assertEquals(1, simulator.requests().size()); } } }