package com.zy.core.thread.impl;
|
|
import com.zy.asrs.entity.DeviceConfig;
|
import com.zy.common.utils.RedisUtil;
|
import com.zy.core.model.protocol.StationProtocol;
|
import com.zy.core.model.protocol.StationTaskBufferItem;
|
import com.zy.core.network.ZyStationConnectDriver;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import java.util.Arrays;
|
import java.util.Collections;
|
import java.util.List;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
class ZyStationV5ThreadTest {
|
|
@Test
|
void clearPath_delegatesPureSlotClearingToDriver() {
|
DeviceConfig deviceConfig = new DeviceConfig();
|
deviceConfig.setDeviceNo(1);
|
RedisUtil redisUtil = mock(RedisUtil.class);
|
ZyStationConnectDriver connectDriver = mock(ZyStationConnectDriver.class);
|
when(connectDriver.clearTaskBufferSlot(10, 2)).thenReturn(true);
|
|
ZyStationV5Thread thread = new ZyStationV5Thread(deviceConfig, redisUtil);
|
ReflectionTestUtils.setField(thread, "zyStationConnectDriver", connectDriver);
|
|
StationTaskBufferItem hitItem = new StationTaskBufferItem();
|
hitItem.setSlotIdx(2);
|
hitItem.setTaskNo(100);
|
hitItem.setTargetStaNo(88);
|
|
StationProtocol station20 = new StationProtocol();
|
station20.setStationId(20);
|
station20.setTaskBufferItems(Collections.emptyList());
|
|
StationProtocol station10 = new StationProtocol();
|
station10.setStationId(10);
|
station10.setTaskBufferItems(List.of(hitItem));
|
|
ReflectionTestUtils.setField(thread, "statusList", Arrays.asList(station20, station10));
|
|
boolean result = thread.clearPath(100);
|
|
assertTrue(result);
|
verify(connectDriver).clearTaskBufferSlot(eq(10), eq(2));
|
verify(redisUtil, never()).set(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(), org.mockito.ArgumentMatchers.anyLong());
|
verify(redisUtil, never()).del(org.mockito.ArgumentMatchers.any(String[].class));
|
assertEquals(0, hitItem.getTaskNo());
|
assertEquals(0, hitItem.getTargetStaNo());
|
}
|
}
|