Don't drop zeros in the second position in formatDuration()

Bug: 3223250
Change-Id: I462c96af51cc052f9df1dc3d2c668551b10155ea
This commit is contained in:
Bjorn Bringert
2010-11-23 14:43:12 +00:00
parent 1c24e957ad
commit 901b3796fd
2 changed files with 20 additions and 3 deletions

View File

@ -158,18 +158,17 @@ public class TimeUtils {
static private int printField(char[] formatStr, int amt, char suffix, int pos,
boolean always, int zeropad) {
if (always || amt > 0) {
final int startPos = pos;
if ((always && zeropad >= 3) || amt > 99) {
int dig = amt/100;
formatStr[pos] = (char)(dig + '0');
pos++;
always = true;
amt -= (dig*100);
}
if ((always && zeropad >= 2) || amt > 9) {
if ((always && zeropad >= 2) || amt > 9 || startPos != pos) {
int dig = amt/10;
formatStr[pos] = (char)(dig + '0');
pos++;
always = true;
amt -= (dig*10);
}
formatStr[pos] = (char)(amt + '0');

View File

@ -429,4 +429,22 @@ public class TimeUtilsTest extends TestCase {
c.getTimeInMillis(),
country);
}
public void testFormatDuration() {
assertFormatDuration("0", 0);
assertFormatDuration("-1ms", -1);
assertFormatDuration("+1ms", 1);
assertFormatDuration("+10ms", 10);
assertFormatDuration("+100ms", 100);
assertFormatDuration("+101ms", 101);
assertFormatDuration("+330ms", 330);
assertFormatDuration("+1s330ms", 1330);
assertFormatDuration("+10s24ms", 10024);
}
private void assertFormatDuration(String expected, long duration) {
StringBuilder sb = new StringBuilder();
TimeUtils.formatDuration(duration, sb);
assertEquals("formatDuration(" + duration + ")", expected, sb.toString());
}
}