1+ use std:: collections:: VecDeque ;
2+ use std:: fmt:: Debug ;
3+
4+ use log:: warn;
5+
16use crate :: simulation:: io:: network:: IOLink ;
27use crate :: simulation:: io:: vehicle_definitions:: VehicleDefinitions ;
38use crate :: simulation:: messaging:: messages:: proto:: Vehicle ;
49use crate :: simulation:: network:: flow_cap:: Flowcap ;
510use crate :: simulation:: network:: node:: NodeVehicle ;
6- use log:: warn;
7- use std:: collections:: VecDeque ;
8- use std:: fmt:: Debug ;
911
1012#[ derive( Debug , Clone ) ]
1113pub enum Link {
@@ -220,14 +222,17 @@ impl SplitInLink {
220222#[ cfg( test) ]
221223mod 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}
0 commit comments