hrdf_routing_engine/
debug.rs

1use std::time::Instant;
2
3use chrono::Duration;
4use hrdf_parser::Hrdf;
5
6use crate::{
7    routing::{find_reachable_stops_within_time_limit, plan_journey},
8    utils::create_date_time,
9};
10
11pub fn run_debug(hrdf: Hrdf) {
12    println!();
13    println!("------------------------------------------------------------------------------------------------");
14    println!("--- Debug");
15    println!("------------------------------------------------------------------------------------------------");
16
17    test_plan_journey(&hrdf);
18    test_find_reachable_stops_within_time_limit(&hrdf);
19}
20
21#[allow(dead_code)]
22pub fn test_plan_journey(hrdf: &Hrdf) {
23    // ------------------------------------------------------------------------------------------------
24    // --- 2.0.5
25    // ------------------------------------------------------------------------------------------------
26
27    println!();
28    let start_time = Instant::now();
29
30    // 1. Petit-Lancy, Les Esserts => Onex, Bandol
31    // plan_journey(hrdf, 8587418, 8593027, create_date_time(2025, 6, 1, 12, 30), verbose);
32
33    // 2. Petit-Lancy, Les Esserts => Genève-Aéroport
34    // plan_journey(hrdf, 8587418, 8501026, create_date_time(2025, 2, 9, 14, 2), verbose);
35
36    // 3. Avully, village => Pont-Céard, gare
37    // plan_journey(hrdf, 8587031, 8593189, create_date_time(2025, 7, 13, 16, 43), verbose);
38
39    // 4. Petit-Lancy, Les Esserts => Vevey, Palud
40    // plan_journey(hrdf, 8587418, 8595120, create_date_time(2025, 9, 17, 5, 59), verbose);
41
42    // 5. Genève, gare Cornavin => Avusy, village
43    // plan_journey(hrdf, 8587057, 8587032, create_date_time(2025, 10, 18, 20, 10), verbose);
44
45    // 6. Genève => Bern, Bierhübeli
46    // plan_journey(hrdf, 8501008, 8590028, create_date_time(2025, 11, 22, 6, 59), verbose);
47
48    // 7. Genève => Zürich HB
49    // plan_journey(hrdf, 8501008, 8503000, create_date_time(2025, 4, 9, 8, 4), verbose);
50
51    // 8. Zürich HB => Lugano, Genzana
52    // plan_journey(hrdf, 8503000, 8575310, create_date_time(2025, 6, 15, 12, 10), verbose);
53
54    // 9. Chancy, Douane => Campocologno
55    // plan_journey(hrdf, 8587477, 8509368, create_date_time(2025, 5, 29, 17, 29), verbose);
56
57    // 10. Chancy, Douane => Sevelen, Post
58    plan_journey(
59        hrdf,
60        8587477,
61        8588197,
62        create_date_time(2025, 9, 10, 13, 37),
63        true,
64    );
65
66    println!("\n{:.2?}", start_time.elapsed());
67}
68
69#[allow(dead_code)]
70pub fn test_find_reachable_stops_within_time_limit(hrdf: &Hrdf) {
71    // 1. Petit-Lancy, Les Esserts (8587418)
72    let departure_stop_id = 8587418;
73    let departure_at = create_date_time(2025, 6, 1, 12, 30);
74
75    // 2. Sevelen, Post (8588197)
76    // let departure_stop_id = 8588197;
77    // let departure_at = create_date_time(2025, 9, 2, 14, 2);
78
79    // 3. Avully, village (8587031)
80    // let departure_stop_id = 8587031;
81    // let departure_at = create_date_time(2025, 7, 13, 16, 43);
82
83    // 4. Bern, Bierhübeli (8590028)
84    // let departure_stop_id = 8590028;
85    // let departure_at = create_date_time(2025, 9, 17, 5, 59);
86
87    // 5. Genève, gare Cornavin (8587057)
88    // let departure_stop_id = 8587057;
89    // let departure_at = create_date_time(2025, 10, 18, 20, 10);
90
91    // 6. Villmergen, Zentrum (8587554)
92    // let departure_stop_id = 8587554;
93    // let departure_at = create_date_time(2025, 11, 22, 6, 59);
94
95    // 7. Lugano, Genzana (8575310)
96    // let departure_stop_id = 8575310;
97    // let departure_at = create_date_time(2025, 4, 9, 8, 4);
98
99    // 8. Zürich HB (8503000)
100    // let departure_stop_id = 8503000;
101    // let departure_at = create_date_time(2025, 6, 15, 12, 10);
102
103    // 9. Campocologno (8509368)
104    // let departure_stop_id = 8509368;
105    // let departure_at = create_date_time(2025, 5, 29, 17, 29);
106
107    // 10. Chancy, Douane (8587477)
108    // let departure_stop_id = 8587477;
109    // let departure_at = create_date_time(2025, 9, 10, 13, 37);
110
111    let start_time = Instant::now();
112    for time_limit in [60, 120, 180] {
113        let routes = find_reachable_stops_within_time_limit(
114            hrdf,
115            departure_stop_id,
116            departure_at,
117            Duration::minutes(time_limit),
118            false,
119        );
120
121        println!("\n{}", routes.len());
122    }
123
124    println!("{:.2?}", start_time.elapsed());
125}