test: cover rolling-to-stop EM planning flow

This commit is contained in:
梁薄云
2026-08-05 21:17:53 +08:00
parent 2eb7902bc3
commit eb050b19e4
3 changed files with 111 additions and 10 deletions
@@ -28,9 +28,11 @@ internal static class LongitudinalIntegrationChecks
private static void VerifiesRollingOptimizationKeepsANonzeroTerminalSpeed()
{
EmPlannerConfiguration configuration = EmPlannerConfiguration.CreateDefault();
configuration.Scheduling.DistanceHorizonMeters = 5d;
configuration.Scheduling.TimeHorizonSeconds = 2d;
configuration.Scheduling.OutputTimeStepSeconds = 0.10d;
configuration.Scheduling.SolverTimeoutSeconds = 1d;
configuration.Longitudinal.MaximumForwardSpeedMetersPerSecond = 0.20d;
LateralPath path = new LateralPath(new[]
{
Point(0d, 0d, 0d),
@@ -46,9 +48,10 @@ internal static class LongitudinalIntegrationChecks
CancellationToken.None);
Verification.Equal(EmPlanningStatus.SuccessWithFallback, result.Status,
"rolling seed remains a strict timeout fallback");
"rolling seed remains a strict timeout fallback: " + result.FailureReason);
LongitudinalCandidate candidate = result.Candidate ??
throw new InvalidOperationException("Rolling timeout fallback candidate was missing.");
Verification.Equal(21, candidate.KnotTimes.Count, "two-second ST emits twenty-one knots");
Verification.True(candidate.S[candidate.S.Count - 1] < input.PathUpperBoundS,
"two-second ST does not consume the five-metre LS window");
Verification.True(candidate.U[candidate.U.Count - 1] > 0.01d,