/*
* Copyright (C) 2014 SCVNGR, Inc. d/b/a LevelUp
*
* Licensed 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.scvngr.levelup.core.util;
import com.scvngr.levelup.core.test.SupportAndroidTestCase;
import com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit;
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil}. Expected values were computed manually using GNU Units.
*/
public final class DistanceUtilsTest extends SupportAndroidTestCase {
private static final double ASSERT_DELTA = 0.01;
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil#convertDistance(float, com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit)} with {@link com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit#MILE}.
*/
public void testDistanceConversion_miles() {
final DistanceUnit unit = DistanceUnit.MILE;
assertEquals(0, DistanceUtil.convertDistance(0, unit), ASSERT_DELTA);
assertEquals(0.62137, DistanceUtil.convertDistance(1000, unit), ASSERT_DELTA);
assertEquals(62.13711, DistanceUtil.convertDistance(100000, unit), ASSERT_DELTA);
}
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil#convertDistance(float, com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit)} with {@link com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit#METER}.
*/
public void testDistanceConversion_meters() {
final DistanceUnit unit = DistanceUnit.METER;
assertEquals(0, DistanceUtil.convertDistance(0, unit), ASSERT_DELTA);
assertEquals(1, DistanceUtil.convertDistance(1, unit), ASSERT_DELTA);
assertEquals(100, DistanceUtil.convertDistance(100, unit), ASSERT_DELTA);
}
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil#convertDistance(float, com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit)} with {@link com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit#FOOT}.
*/
public void testDistanceConversion_foot() {
final DistanceUnit unit = DistanceUnit.FOOT;
assertEquals(0, DistanceUtil.convertDistance(0, unit), ASSERT_DELTA);
assertEquals(3.28083, DistanceUtil.convertDistance(1, unit), ASSERT_DELTA);
assertEquals(328.0839, DistanceUtil.convertDistance(100, unit), ASSERT_DELTA);
}
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil#convertDistance(float, com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit)} with
* {@link com.scvngr.levelup.core.util.DistanceUtil.DistanceUnit#KILOMETER}.
*/
public void testDistanceConversion_kilometer() {
final DistanceUnit unit = DistanceUnit.KILOMETER;
assertEquals(0, DistanceUtil.convertDistance(0, unit), ASSERT_DELTA);
assertEquals(1, DistanceUtil.convertDistance(1000, unit), ASSERT_DELTA);
assertEquals(100, DistanceUtil.convertDistance(100000, unit), ASSERT_DELTA);
}
/**
* Tests {@link com.scvngr.levelup.core.util.DistanceUtil#roundDistance(float)}.
*/
public void testRoundDistance() {
assertEquals(0.0f, DistanceUtil.roundDistance(0.0f), ASSERT_DELTA);
assertEquals(0.5f, DistanceUtil.roundDistance(0.1f), ASSERT_DELTA);
assertEquals(0.5f, DistanceUtil.roundDistance(0.5f), ASSERT_DELTA);
assertEquals(1.0f, DistanceUtil.roundDistance(0.6f), ASSERT_DELTA);
assertEquals(1.0f, DistanceUtil.roundDistance(0.9999999f), ASSERT_DELTA);
assertEquals(1.5f, DistanceUtil.roundDistance(1.1f), ASSERT_DELTA);
assertEquals(100.5f, DistanceUtil.roundDistance(100.1f), ASSERT_DELTA);
assertEquals(101.0f, DistanceUtil.roundDistance(100.7f), ASSERT_DELTA);
}
}