Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9a80cbb authored by Mitchell Wills's avatar Mitchell Wills
Browse files

Fix TimeUtils.formatDuration for exactly one of a unit

Previously printing a duration where a unit (except ms) was one and the
next smallest unit was zero would result in the duration being being
expressed in the next smallest unit. For example 1m0s0ms would be
formatted as 60s0ms.

Update testFormatHugeDuration to supporting times > 999 days
The implementation was fixed in 3d1933c4

Change-Id: I9d609f7a0f82755ea653a205293a6e3785a10d1e
parent d548da79
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -343,15 +343,15 @@ public class TimeUtils {
        int seconds = (int) Math.floor(duration / 1000);
        int days = 0, hours = 0, minutes = 0;

        if (seconds > SECONDS_PER_DAY) {
        if (seconds >= SECONDS_PER_DAY) {
            days = seconds / SECONDS_PER_DAY;
            seconds -= days * SECONDS_PER_DAY;
        }
        if (seconds > SECONDS_PER_HOUR) {
        if (seconds >= SECONDS_PER_HOUR) {
            hours = seconds / SECONDS_PER_HOUR;
            seconds -= hours * SECONDS_PER_HOUR;
        }
        if (seconds > SECONDS_PER_MINUTE) {
        if (seconds >= SECONDS_PER_MINUTE) {
            minutes = seconds / SECONDS_PER_MINUTE;
            seconds -= minutes * SECONDS_PER_MINUTE;
        }
+6 −4
Original line number Diff line number Diff line
@@ -436,15 +436,17 @@ public class TimeUtilsTest extends TestCase {
        assertFormatDuration("+100ms", 100);
        assertFormatDuration("+101ms", 101);
        assertFormatDuration("+330ms", 330);
        assertFormatDuration("+1s0ms", 1000);
        assertFormatDuration("+1s330ms", 1330);
        assertFormatDuration("+10s24ms", 10024);
        assertFormatDuration("+1m0s30ms", 60030);
        assertFormatDuration("+1h0m0s30ms", 3600030);
        assertFormatDuration("+1d0h0m0s30ms", 86400030);
    }

    public void testFormatHugeDuration() {
        //assertFormatDuration("+15542d1h11m11s555ms", 1342833071555L);
        // TODO: improve formatDuration() API
        assertFormatDuration("+999d23h59m59s999ms", 1342833071555L);
        assertFormatDuration("-999d23h59m59s999ms", -1342833071555L);
        assertFormatDuration("+15542d1h11m11s555ms", 1342833071555L);
        assertFormatDuration("-15542d1h11m11s555ms", -1342833071555L);
    }

    private void assertFormatDuration(String expected, long duration) {