using System.Linq; using TrajectoryPlanningVisualization; namespace TrajectoryPlanningVisualizationVerificationHost; internal static class WebAssetChecks { public static void Run() { BuildsDeterministicSmokeSnapshots(); string html = EmbeddedWebAssets.ReadText("index.html"); string css = EmbeddedWebAssets.ReadText("app.css"); string js = EmbeddedWebAssets.ReadText("app.js"); Verification.True(html.Contains("路径总览"), "overview Chinese title"); Verification.True(html.Contains("LS / ST"), "LS/ST tab"); Verification.True(html.Contains("曲率与运动学"), "kinematics tab"); Verification.True(html.Contains("周期历史"), "history tab"); Verification.True(html.Contains("生效配置"), "configuration panel"); Verification.True(css.Contains("--current-trajectory: #1769aa"), "scientific current color"); Verification.True(css.Contains("stroke-width: 1.1"), "thin scientific line"); Verification.True(js.Contains("末点后无时间区间"), "jerk terminal explanation"); Verification.True(html.Contains("occupancy-grid"), "single occupancy canvas exists"); Verification.True(html.Contains("world-overlay"), "SVG trajectory overlay exists"); Verification.True(js.Contains("atob"), "compact occupancy bitset is decoded in browser"); Verification.True(!html.Contains("http://") && !html.Contains("https://"), "page has no CDN URL"); } private static void BuildsDeterministicSmokeSnapshots() { PlanningVisualizationStaticSnapshot staticSnapshot = SampleSnapshotFactory.CreateStaticSnapshot(); PlanningVisualizationDynamicSnapshot dynamicSnapshot = SampleSnapshotFactory.CreateDynamicSnapshot(1L); Verification.Equal(2, staticSnapshot.DirectionSegments.Count, "smoke snapshot has two direction segments"); Verification.True(staticSnapshot.StaticMarkers.Any(marker => marker.Kind == "gear-switch"), "smoke snapshot has a gear marker"); Verification.True(staticSnapshot.ConfigurationGroups.Count > 0, "smoke snapshot has effective configuration"); foreach (string chartId in new[] { "ls", "st", "curvature-s", "curvature-t", "velocity-t", "acceleration-t", "jerk-t", "yaw-rate-t" }) { Verification.True(dynamicSnapshot.Charts.Any(chart => chart.Id == chartId), "smoke snapshot includes chart " + chartId); } } }