@@ -564,6 +564,33 @@ def testMatrixDimensionVRP(self):
564564 manager .IndexToNode (index )
565565 ]
566566
567+ def testAllowedVehicles (self ):
568+ manager = pywrapcp .RoutingIndexManager (
569+ 2 , 2 , 0 # num_nodes # num_vehicles # depot
570+ )
571+ self .assertIsNotNone (manager )
572+ model = pywrapcp .RoutingModel (manager )
573+ self .assertIsNotNone (model )
574+ # out of range vehicle index is allowed.
575+ model .SetAllowedVehiclesForIndex (vehicles = [13 ], index = 1 )
576+ self .assertFalse (model .IsVehicleAllowedForIndex (vehicle = 0 , index = 1 ))
577+ self .assertFalse (model .IsVehicleAllowedForIndex (1 , 1 ))
578+ self .assertTrue (model .IsVehicleAllowedForIndex (13 , 1 ))
579+ # empty list means any vehicles are allowed.
580+ model .SetAllowedVehiclesForIndex ([], 1 )
581+ self .assertTrue (model .IsVehicleAllowedForIndex (0 , 1 ))
582+ self .assertTrue (model .IsVehicleAllowedForIndex (1 , 1 ))
583+ self .assertTrue (model .IsVehicleAllowedForIndex (42 , 1 ))
584+ # only allow first vehicle for node 1.
585+ model .SetAllowedVehiclesForIndex ([0 ], 1 )
586+ self .assertTrue (model .IsVehicleAllowedForIndex (0 , 1 ))
587+ self .assertFalse (model .IsVehicleAllowedForIndex (1 , 1 ))
588+ self .assertFalse (model .IsVehicleAllowedForIndex (2 , 1 ))
589+ assignment = model .Solve ()
590+ self .assertIsNotNone (assignment )
591+ self .assertEqual (1 , assignment .Value (model .NextVar (model .Start (0 ))))
592+ self .assertEqual (model .GetVehicleClassesCount (), 2 )
593+
567594 def testDisjunctionTSP (self ):
568595 # Create routing model
569596 manager = pywrapcp .RoutingIndexManager (10 , 1 , 0 )
0 commit comments