// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.core.domain.prediction; import org.assertj.core.api.AbstractComparableAssert; import org.joda.time.Duration; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.joda.time.Duration.*; public class PredictionRequestTest { @Test public void relative_time_as_hours_and_minutes() { assertRelativeTime("00:00").isEqualTo(ZERO); assertRelativeTime("00:15").isEqualTo(standardMinutes(15)); assertRelativeTime("15:00").isEqualTo(standardHours(15)); // preceding zeroes are optional assertRelativeTime("1:2").isEqualTo(standardHours(1).plus(standardMinutes(2))); // there must be 60 minutes in an hour assertRelativeTime("00:59").isEqualTo(standardMinutes(59)); assertRelativeTime("00:60").isEqualTo(standardMinutes(60)); assertRelativeTime("00:99").isEqualTo(standardMinutes(99)); assertRelativeTime("01:00").isEqualTo(standardMinutes(60)); } @Test public void relative_time_as_minutes() { assertRelativeTime("0000").isEqualTo(ZERO); assertRelativeTime("0015").isEqualTo(standardMinutes(15)); assertRelativeTime("1500").isEqualTo(standardMinutes(1500)); // preceding zeroes are optional assertRelativeTime("1").isEqualTo(standardMinutes(1)); // there are no hours assertRelativeTime("0059").isEqualTo(standardMinutes(59)); assertRelativeTime("0060").isEqualTo(standardMinutes(60)); assertRelativeTime("0099").isEqualTo(standardMinutes(99)); assertRelativeTime("0100").isEqualTo(standardMinutes(100)); } public static AbstractComparableAssert<?, Duration> assertRelativeTime(String relativeTime) { return assertThat(PredictionRequest.parseRelativeTime(relativeTime)).as(relativeTime); } }