Skip to content

Commit 0a12f8c

Browse files
committed
Adjust unit tests to changed vehicle
1 parent f5e757b commit 0a12f8c

File tree

4 files changed

+188
-52
lines changed

4 files changed

+188
-52
lines changed

src/simulation/messaging/messages.rs

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
use std::cmp::Ordering;
2+
use std::collections::HashMap;
3+
use std::io::Cursor;
4+
5+
use prost::Message;
6+
17
use crate::simulation::config::RoutingMode;
28
use crate::simulation::id_mapping::{MatsimIdMapping, MatsimIdMappings};
39
use crate::simulation::io::matsim_id::MatsimId;
@@ -11,10 +17,6 @@ use crate::simulation::messaging::messages::proto::{
1117
};
1218
use crate::simulation::network::node::NodeVehicle;
1319
use crate::simulation::time_queue::EndTime;
14-
use prost::Message;
15-
use std::cmp::Ordering;
16-
use std::collections::HashMap;
17-
use std::io::Cursor;
1820

1921
// Include the `messages` module, which is generated from messages.proto.
2022
pub mod proto {
@@ -181,6 +183,14 @@ impl Agent {
181183
}
182184
}
183185

186+
pub fn new(id: u64, plan: Plan) -> Self {
187+
Agent {
188+
id,
189+
curr_plan_elem: 0,
190+
plan: Some(plan),
191+
}
192+
}
193+
184194
pub fn id(&self) -> usize {
185195
self.id as usize
186196
}
@@ -368,7 +378,7 @@ impl EndTime for Agent {
368378
impl Plan {
369379
pub const DEFAULT_ROUTING_MODE: &'static str = "car";
370380

371-
fn new() -> Plan {
381+
pub fn new() -> Plan {
372382
Plan {
373383
acts: Vec::new(),
374384
legs: Vec::new(),
@@ -492,6 +502,14 @@ impl Plan {
492502
result
493503
}
494504

505+
pub fn add_leg(&mut self, leg: Leg) {
506+
self.legs.push(leg);
507+
}
508+
509+
pub fn add_act(&mut self, activity: Activity) {
510+
self.acts.push(activity);
511+
}
512+
495513
fn get_plan_type(io_plan: &IOPlan) -> PlanType {
496514
if let IOPlanElement::Activity(_) = io_plan.elements.get(1).unwrap() {
497515
return PlanType::ActivitiesOnly;
@@ -584,6 +602,26 @@ impl Activity {
584602
}
585603
}
586604

605+
pub fn new(
606+
x: f32,
607+
y: f32,
608+
act_type: String,
609+
link_id: u64,
610+
start_time: Option<u32>,
611+
end_time: Option<u32>,
612+
max_dur: Option<u32>,
613+
) -> Self {
614+
Activity {
615+
x,
616+
y,
617+
act_type,
618+
link_id,
619+
start_time,
620+
end_time,
621+
max_dur,
622+
}
623+
}
624+
587625
fn cmp_end_time(&self, now: u32) -> u32 {
588626
if let Some(end_time) = self.end_time {
589627
end_time
@@ -611,6 +649,15 @@ impl Leg {
611649
}
612650
}
613651

652+
pub fn new(route: Route, mode: &str, trav_time: Option<u32>, dep_time: Option<u32>) -> Self {
653+
Self {
654+
route: Some(route),
655+
mode: String::from(mode),
656+
trav_time,
657+
dep_time,
658+
}
659+
}
660+
614661
fn only_with_mode(mode: &str) -> Self {
615662
Self {
616663
mode: mode.to_string(),
@@ -686,6 +733,13 @@ impl NetworkRoute {
686733
vehicle_id: *veh_id as u64,
687734
}
688735
}
736+
737+
pub fn new(vehicle_id: u64, link_ids: Vec<u64>) -> Self {
738+
Self {
739+
vehicle_id,
740+
route: link_ids,
741+
}
742+
}
689743
}
690744

691745
fn parse_time_opt(value: &Option<String>) -> Option<u32> {

src/simulation/network/link.rs

Lines changed: 82 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
use std::collections::VecDeque;
2+
use std::fmt::Debug;
3+
4+
use log::warn;
5+
16
use crate::simulation::io::network::IOLink;
27
use crate::simulation::io::vehicle_definitions::VehicleDefinitions;
38
use crate::simulation::messaging::messages::proto::Vehicle;
49
use crate::simulation::network::flow_cap::Flowcap;
510
use crate::simulation::network::node::NodeVehicle;
6-
use log::warn;
7-
use std::collections::VecDeque;
8-
use std::fmt::Debug;
911

1012
#[derive(Debug, Clone)]
1113
pub enum Link {
@@ -220,14 +222,17 @@ impl SplitInLink {
220222
#[cfg(test)]
221223
mod tests {
222224
use crate::simulation::io::vehicle_definitions::VehicleDefinitions;
225+
use crate::simulation::messaging::messages::proto::leg::Route;
226+
use crate::simulation::messaging::messages::proto::{Activity, NetworkRoute};
227+
use crate::simulation::messaging::messages::proto::{Agent, Leg, Plan, Vehicle, VehicleType};
223228
use crate::simulation::network::link::LocalLink;
224-
use crate::simulation::network::vehicles::Vehicle;
225229

226230
#[test]
227231
fn local_link_push_single_veh() {
228232
let veh_id = 42;
229233
let mut link = LocalLink::new(1, 1., 1., 10., vec![], 1., 0, 0);
230-
let vehicle = Vehicle::new(veh_id, 1, vec![], String::from("car"));
234+
let agent = create_agent(1, vec![]);
235+
let vehicle = Vehicle::new(veh_id, VehicleType::Network, String::from("car"), agent);
231236

232237
link.push_vehicle(vehicle, 0, None);
233238

@@ -242,8 +247,11 @@ mod tests {
242247
let id1 = 42;
243248
let id2 = 43;
244249
let mut link = LocalLink::new(1, 1., 1., 11.8, vec![], 1., 0, 0);
245-
let vehicle1 = Vehicle::new(id1, id1, vec![], String::from("car"));
246-
let vehicle2 = Vehicle::new(id2, id2, vec![], String::from("car"));
250+
251+
let agent1 = create_agent(1, vec![]);
252+
let vehicle1 = Vehicle::new(id1, VehicleType::Network, String::from("car"), agent1);
253+
let agent2 = create_agent(1, vec![]);
254+
let vehicle2 = Vehicle::new(id2, VehicleType::Network, String::from("car"), agent2);
247255

248256
link.push_vehicle(vehicle1, 0, None);
249257
link.push_vehicle(vehicle2, 0, None);
@@ -267,11 +275,9 @@ mod tests {
267275
let mut n: u32 = 0;
268276

269277
while n < 10 {
270-
link.push_vehicle(
271-
Vehicle::new(n as usize, n as usize, vec![], String::from("car")),
272-
n,
273-
None,
274-
);
278+
let agent = create_agent(n as u64, vec![]);
279+
let vehicle = Vehicle::new(n as u64, VehicleType::Network, String::from("car"), agent);
280+
link.push_vehicle(vehicle, n, None);
275281
n += 1;
276282
}
277283

@@ -291,11 +297,9 @@ mod tests {
291297
let mut n: u32 = 0;
292298

293299
while n < 10 {
294-
link.push_vehicle(
295-
Vehicle::new(n as usize, n as usize, vec![], String::from("car")),
296-
n,
297-
None,
298-
);
300+
let agent = create_agent(n as u64, vec![]);
301+
let vehicle = Vehicle::new(n as u64, VehicleType::Network, String::from("car"), agent);
302+
link.push_vehicle(vehicle, n, None);
299303
n += 1;
300304
}
301305

@@ -312,8 +316,12 @@ mod tests {
312316
// link has a capacity of 1 * 0.1 per second
313317
let mut link = LocalLink::new(1, 3600., 10., 100., vec![], 0.1, 0, 0);
314318

315-
link.push_vehicle(Vehicle::new(1, 1, vec![], String::from("car")), 0, None);
316-
link.push_vehicle(Vehicle::new(2, 2, vec![], String::from("car")), 0, None);
319+
let agent1 = create_agent(1, vec![]);
320+
let vehicle1 = Vehicle::new(1, VehicleType::Network, String::from("car"), agent1);
321+
let agent2 = create_agent(2, vec![]);
322+
let vehicle2 = Vehicle::new(2, VehicleType::Network, String::from("car"), agent2);
323+
link.push_vehicle(vehicle1, 0, None);
324+
link.push_vehicle(vehicle2, 0, None);
317325

318326
let popped = link.pop_front(10);
319327
assert_eq!(1, popped.len());
@@ -336,9 +344,27 @@ mod tests {
336344

337345
let vehicle_definitions = create_three_vehicle_definitions();
338346

339-
let car = Vehicle::new(veh_id_car, 1, vec![], String::from("car"));
340-
let buggy = Vehicle::new(veh_id_buggy, 1, vec![], String::from("buggy"));
341-
let bike = Vehicle::new(veh_id_bike, 1, vec![], String::from("bike"));
347+
let agent1 = create_agent(1, vec![]);
348+
let car = Vehicle::new(
349+
veh_id_car,
350+
VehicleType::Network,
351+
String::from("car"),
352+
agent1,
353+
);
354+
let agent2 = create_agent(2, vec![]);
355+
let buggy = Vehicle::new(
356+
veh_id_buggy,
357+
VehicleType::Network,
358+
String::from("buggy"),
359+
agent2,
360+
);
361+
let agent3 = create_agent(3, vec![]);
362+
let bike = Vehicle::new(
363+
veh_id_bike,
364+
VehicleType::Network,
365+
String::from("bike"),
366+
agent3,
367+
);
342368

343369
link.push_vehicle(car, 0, Some(&vehicle_definitions));
344370
link.push_vehicle(buggy, 0, Some(&vehicle_definitions));
@@ -367,9 +393,27 @@ mod tests {
367393

368394
let vehicle_definitions = create_three_vehicle_definitions();
369395

370-
let car = Vehicle::new(veh_id_car, 1, vec![], String::from("car"));
371-
let buggy = Vehicle::new(veh_id_buggy, 1, vec![], String::from("buggy"));
372-
let bike = Vehicle::new(veh_id_bike, 1, vec![], String::from("bike"));
396+
let agent1 = create_agent(1, vec![]);
397+
let car = Vehicle::new(
398+
veh_id_car,
399+
VehicleType::Network,
400+
String::from("car"),
401+
agent1,
402+
);
403+
let agent2 = create_agent(1, vec![]);
404+
let buggy = Vehicle::new(
405+
veh_id_buggy,
406+
VehicleType::Network,
407+
String::from("buggy"),
408+
agent2,
409+
);
410+
let agent3 = create_agent(1, vec![]);
411+
let bike = Vehicle::new(
412+
veh_id_bike,
413+
VehicleType::Network,
414+
String::from("bike"),
415+
agent3,
416+
);
373417

374418
link.push_vehicle(bike, 0, Some(&vehicle_definitions));
375419
link.push_vehicle(buggy, 0, Some(&vehicle_definitions));
@@ -397,4 +441,17 @@ mod tests {
397441
.add_vehicle_type("buggy".to_string(), Some(10.))
398442
.add_vehicle_type("bike".to_string(), Some(5.))
399443
}
444+
445+
fn create_agent(id: u64, route: Vec<u64>) -> Agent {
446+
let route = Route::NetworkRoute(NetworkRoute::new(id, route));
447+
let leg = Leg::new(route, "car", None, None);
448+
let act = Activity::new(0., 0., String::from("some-type"), 1, None, None, None);
449+
let mut plan = Plan::new();
450+
plan.add_act(act);
451+
plan.add_leg(leg);
452+
let mut agent = Agent::new(id, plan);
453+
agent.advance_plan();
454+
455+
agent
456+
}
400457
}

src/simulation/network/network.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ mod tests {
128128
use crate::simulation::id_mapping::MatsimIdMappings;
129129
use crate::simulation::io::network::{IONetwork, IONode};
130130
use crate::simulation::io::population::IOPopulation;
131-
use crate::simulation::messaging::messages::proto::Vehicle;
132131
use crate::simulation::network::link::Link;
133132
use std::collections::HashSet;
134133

@@ -146,7 +145,7 @@ mod tests {
146145
"node2" => 0,
147146
_ => 1,
148147
};
149-
let network: Network<Vehicle> = Network::from_io(&io_network, 2, 1.0, split, &id_mappings);
148+
let network: Network = Network::from_io(&io_network, 2, 1.0, split, &id_mappings);
150149
assert_eq!(2, network.partitions.len());
151150

152151
let partition1 = network.partitions.get(0).unwrap();
@@ -212,7 +211,7 @@ mod tests {
212211
"node4" => 2, // right
213212
_ => 1, // center
214213
};
215-
let network: Network<Vehicle> = Network::from_io(&io_network, 3, 1.0, split, &id_mappings);
214+
let network: Network = Network::from_io(&io_network, 3, 1.0, split, &id_mappings);
216215

217216
assert_eq!(3, network.partitions.len());
218217

0 commit comments

Comments
 (0)