package org.opentripplanner.routing.edgetype;
import static org.junit.Assert.*;
import org.junit.Test;
import org.opentripplanner.routing.core.TraverseMode;
import org.opentripplanner.routing.core.TraverseModeSet;
public class StreetTraversalPermissionTest {
@Test
public void testGetCode() {
StreetTraversalPermission perm1 = StreetTraversalPermission.ALL_DRIVING;
StreetTraversalPermission perm2 = StreetTraversalPermission.get(perm1.getCode());
assertEquals(perm1, perm2);
StreetTraversalPermission perm3 = StreetTraversalPermission.BICYCLE;
assertFalse(perm1.equals(perm3));
}
@Test
public void testAdd() {
StreetTraversalPermission perm1 = StreetTraversalPermission.CAR;
StreetTraversalPermission all_driving = perm1
.add(StreetTraversalPermission.CUSTOM_MOTOR_VEHICLE);
assertEquals(StreetTraversalPermission.ALL_DRIVING, all_driving);
}
@Test
public void testRemove() {
StreetTraversalPermission perm1 = StreetTraversalPermission.CAR;
StreetTraversalPermission none = perm1.remove(StreetTraversalPermission.CAR);
assertEquals(StreetTraversalPermission.NONE, none);
}
@Test
public void testAllowsStreetTraversalPermission() {
StreetTraversalPermission perm1 = StreetTraversalPermission.ALL;
assertFalse(perm1.allows(StreetTraversalPermission.CROSSHATCHED));
assertTrue(perm1.allows(StreetTraversalPermission.CAR));
assertTrue(perm1.allows(StreetTraversalPermission.CUSTOM_MOTOR_VEHICLE));
assertTrue(perm1.allows(StreetTraversalPermission.BICYCLE));
assertTrue(perm1.allows(StreetTraversalPermission.PEDESTRIAN));
assertTrue(perm1.allows(StreetTraversalPermission.PEDESTRIAN_AND_BICYCLE));
StreetTraversalPermission perm = StreetTraversalPermission.ALL_DRIVING;
assertTrue(perm.allows(StreetTraversalPermission.CUSTOM_MOTOR_VEHICLE));
assertFalse(perm.allows(StreetTraversalPermission.BICYCLE));
perm = StreetTraversalPermission.BICYCLE_AND_DRIVING;
assertTrue(perm.allows(StreetTraversalPermission.CUSTOM_MOTOR_VEHICLE));
assertTrue(perm.allows(StreetTraversalPermission.BICYCLE));
assertFalse(perm.allows(StreetTraversalPermission.PEDESTRIAN));
}
@Test
public void testAllowsTraverseMode() {
StreetTraversalPermission perm1 = StreetTraversalPermission.ALL;
assertTrue(perm1.allows(TraverseMode.CAR));
assertTrue(perm1.allows(TraverseMode.WALK));
assertTrue(perm1.allows(TraverseMode.CUSTOM_MOTOR_VEHICLE));
assertTrue(perm1.allows(TraverseMode.WALK));
// StreetTraversalPermission appears not to be used for public transit.
assertFalse(perm1.allows(TraverseMode.BUS));
assertFalse(perm1.allows(TraverseMode.TRAINISH));
StreetTraversalPermission perm = StreetTraversalPermission.ALL_DRIVING;
assertTrue(perm.allows(TraverseMode.CAR));
assertTrue(perm.allows(TraverseMode.CUSTOM_MOTOR_VEHICLE));
assertFalse(perm.allows(TraverseMode.BICYCLE));
perm = StreetTraversalPermission.BICYCLE_AND_DRIVING;
assertTrue(perm.allows(TraverseMode.CAR));
assertTrue(perm.allows(TraverseMode.CUSTOM_MOTOR_VEHICLE));
assertTrue(perm.allows(TraverseMode.BICYCLE));
assertFalse(perm.allows(TraverseMode.BUS));
assertFalse(perm.allows(TraverseMode.WALK));
}
@Test
public void testAllowsTraverseModeSet() {
StreetTraversalPermission perm1 = StreetTraversalPermission.ALL_DRIVING;
assertTrue(perm1.allows(TraverseModeSet.allModes()));
assertTrue(perm1.allows(new TraverseModeSet(TraverseMode.CAR, TraverseMode.BICYCLE)));
assertTrue(perm1.allows(new TraverseModeSet(TraverseMode.CUSTOM_MOTOR_VEHICLE,
TraverseMode.TRAINISH, TraverseMode.FERRY)));
// This one has no driving modes.
assertFalse(perm1.allows(new TraverseModeSet(TraverseMode.BICYCLE, TraverseMode.TRAINISH,
TraverseMode.FERRY)));
}
@Test
public void testAllowsAnythingNothing() {
StreetTraversalPermission perm = StreetTraversalPermission.ALL_DRIVING;
assertTrue(perm.allowsAnything());
assertFalse(perm.allowsNothing());
perm = StreetTraversalPermission.NONE;
assertFalse(perm.allowsAnything());
assertTrue(perm.allowsNothing());
}
}