#
Junjie
10 小时以前 cbb00d4729243e4949b3c921fc2f94cb03ca8aaa
src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java
@@ -1,25 +1,44 @@
package com.zy.core.thread.support;
import com.zy.common.utils.RedisUtil;
import org.junit.jupiter.api.Test;
import java.util.concurrent.atomic.AtomicLong;
import static org.junit.jupiter.api.Assertions.assertFalse;
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.verify;
import static org.mockito.Mockito.when;
class RecentStationArrivalTrackerTest {
    @Test
    void hasRecentArrival_returnsTrueOnlyWithinRetentionWindow() {
        AtomicLong now = new AtomicLong(1_000L);
        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(1_000L, now::get);
    void observe_writesRedisKeyOnlyOnFirstSightingOfLoadedTask() {
        RedisUtil redisUtil = mock(RedisUtil.class);
        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
        tracker.record(12, 1001);
        tracker.observe(12, 1001, true);
        tracker.observe(12, 1001, true);
        verify(redisUtil).set(eq("station_recent_arrival_12_1001"), eq("1"), eq(10L));
    }
    @Test
    void hasRecentArrival_returnsFalseAfterRedisKeyExpires() {
        RedisUtil redisUtil = mock(RedisUtil.class);
        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
        when(redisUtil.get("station_recent_arrival_12_1001")).thenReturn(null);
        assertFalse(tracker.hasRecentArrival(12, 1001));
    }
    @Test
    void hasRecentArrival_returnsTrueWhenRedisKeyExists() {
        RedisUtil redisUtil = mock(RedisUtil.class);
        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
        when(redisUtil.get("station_recent_arrival_12_1001")).thenReturn("1");
        assertTrue(tracker.hasRecentArrival(12, 1001));
        now.addAndGet(1_001L);
        assertFalse(tracker.hasRecentArrival(12, 1001));
    }
}