/*
* Licensed to GraphHopper GmbH under one or more contributor
* license agreements. See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*
* GraphHopper GmbH licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.graphhopper.routing.util;
import com.graphhopper.reader.ReaderNode;
import com.graphhopper.reader.ReaderWay;
import com.graphhopper.util.Helper;
import org.junit.Test;
import java.text.DateFormat;
import java.util.Date;
import static org.junit.Assert.*;
/**
* @author Peter Karich
* @author zstadler
*/
public class Car4WDFlagEncoderTest extends CarFlagEncoderTest {
private final EncodingManager em = new EncodingManager("car4wd,bike,foot");
private final Car4WDFlagEncoder encoder = (Car4WDFlagEncoder) em.getEncoder("car4wd");
@Override
@Test
public void testAccess() {
ReaderWay way = new ReaderWay(1);
assertFalse(encoder.acceptWay(way) > 0);
way.setTag("highway", "service");
assertTrue(encoder.acceptWay(way) > 0);
way.setTag("access", "no");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "track");
assertTrue(encoder.acceptWay(way) > 0);
way.setTag("motorcar", "no");
assertFalse(encoder.acceptWay(way) > 0);
// for now allow grade1+2+3 for every country, see #253
way.clearTags();
way.setTag("highway", "track");
way.setTag("tracktype", "grade2");
assertTrue(encoder.acceptWay(way) > 0);
// This is the only difference from a "car"
way.setTag("tracktype", "grade4");
assertTrue(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "service");
way.setTag("access", "delivery");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "unclassified");
way.setTag("ford", "yes");
assertFalse(encoder.acceptWay(way) > 0);
way.setTag("motorcar", "yes");
assertTrue(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("route", "ferry");
assertTrue(encoder.acceptWay(way) > 0);
assertTrue(encoder.isFerry(encoder.acceptWay(way)));
way.setTag("motorcar", "no");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("route", "ferry");
way.setTag("foot", "yes");
assertFalse(encoder.acceptWay(way) > 0);
assertFalse(encoder.isFerry(encoder.acceptWay(way)));
way.clearTags();
way.setTag("access", "yes");
way.setTag("motor_vehicle", "no");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "service");
way.setTag("access", "yes");
way.setTag("motor_vehicle", "no");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "service");
way.setTag("access", "no");
way.setTag("motorcar", "yes");
assertTrue(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "service");
way.setTag("access", "emergency");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "service");
way.setTag("motor_vehicle", "emergency");
assertFalse(encoder.acceptWay(way) > 0);
DateFormat simpleDateFormat = Helper.createFormatter("yyyy MMM dd");
way.clearTags();
way.setTag("highway", "road");
way.setTag("access:conditional", "no @ (" + simpleDateFormat.format(new Date().getTime()) + ")");
assertFalse(encoder.acceptWay(way) > 0);
way.clearTags();
way.setTag("highway", "road");
way.setTag("access", "no");
way.setTag("access:conditional", "yes @ (" + simpleDateFormat.format(new Date().getTime()) + ")");
assertTrue(encoder.acceptWay(way) > 0);
}
}