| | |
| | | } |
| | | |
| | | @Test |
| | | void shortAuthorizationUsesHalfOfDurationAsAheadWindow() { |
| | | // 授权时长 90 秒 → 提前量 min(60, 45)=45 秒,剩余 30 秒时触发停充 |
| | | void shortAuthorizationUsesFixedSixtySecondsAheadWindow() { |
| | | // 授权时长 90 秒 → 提前量 min(60, 90)=60 秒,剩余 30 秒时触发停充 |
| | | assertTrue(needStop(order(LocalDateTime.now().minusSeconds(60), LocalDateTime.now().plusSeconds(30), null))); |
| | | } |
| | | |
| | | @Test |
| | | void shortAuthorizationIsNotStoppedImmediately() { |
| | | // 授权时长 100 秒 → 提前量 min(60, 50)=50 秒,剩余 55 秒时仍继续充电 |
| | | assertFalse(needStop(order(LocalDateTime.now().minusSeconds(45), LocalDateTime.now().plusSeconds(55), null))); |
| | | void shortAuthorizationStopsImmediatelyWithinFixedAheadWindow() { |
| | | // 授权时长 100 秒:固定 60 秒提前量,剩余 55 秒即触发停充(不再按授权时长的一半收缩) |
| | | assertTrue(needStop(order(LocalDateTime.now().minusSeconds(45), LocalDateTime.now().plusSeconds(55), null))); |
| | | } |
| | | |
| | | @Test |
| | | void veryShortAuthorizationUsesWholeDurationAsAheadWindow() { |
| | | // 授权总时长 30 秒不足提前量 → 按整个授权时长提前,剩余 20 秒即停充 |
| | | assertTrue(needStop(order(LocalDateTime.now().minusSeconds(10), LocalDateTime.now().plusSeconds(20), null))); |
| | | } |
| | | |
| | | @Test |