/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ 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.BICYCLE_AND_CAR; StreetTraversalPermission perm2 = StreetTraversalPermission.get(perm1.code); assertEquals(perm1, perm2); StreetTraversalPermission perm3 = StreetTraversalPermission.BICYCLE; assertFalse(perm1.equals(perm3)); } @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; assertTrue(perm1.allows(StreetTraversalPermission.CAR)); assertTrue(perm1.allows(StreetTraversalPermission.BICYCLE)); assertTrue(perm1.allows(StreetTraversalPermission.PEDESTRIAN)); assertTrue(perm1.allows(StreetTraversalPermission.PEDESTRIAN_AND_BICYCLE)); } @Test public void testAllowsTraverseMode() { StreetTraversalPermission perm1 = StreetTraversalPermission.ALL; assertTrue(perm1.allows(TraverseMode.CAR)); assertTrue(perm1.allows(TraverseMode.WALK)); // StreetTraversalPermission is not used for public transit. assertFalse(perm1.allows(TraverseMode.TRANSIT)); } @Test public void testAllowsTraverseModeSet() { StreetTraversalPermission perm1 = StreetTraversalPermission.BICYCLE_AND_CAR; assertTrue(perm1.allows(TraverseModeSet.allModes())); assertTrue(perm1.allows(new TraverseModeSet(TraverseMode.CAR, TraverseMode.BICYCLE))); assertTrue(perm1.allows(new TraverseModeSet(TraverseMode.BICYCLE, TraverseMode.RAIL, TraverseMode.FERRY))); assertFalse(perm1.allows(new TraverseModeSet(TraverseMode.WALK))); } @Test public void testAllowsAnythingNothing() { StreetTraversalPermission perm = StreetTraversalPermission.CAR; assertTrue(perm.allowsAnything()); assertFalse(perm.allowsNothing()); perm = StreetTraversalPermission.NONE; assertFalse(perm.allowsAnything()); assertTrue(perm.allowsNothing()); } @Test public void testIntersect() { StreetTraversalPermission perm = StreetTraversalPermission.ALL; StreetTraversalPermission bike_walk = StreetTraversalPermission.PEDESTRIAN_AND_BICYCLE; StreetTraversalPermission combined = perm.intersection(bike_walk); assertTrue(perm.allows(StreetTraversalPermission.ALL)); assertTrue(combined.allows(StreetTraversalPermission.PEDESTRIAN_AND_BICYCLE)); assertFalse(combined.allows(StreetTraversalPermission.CAR)); assertTrue(bike_walk.allows(StreetTraversalPermission.PEDESTRIAN_AND_BICYCLE)); } }