Merge branch 'fix-formatter-when-showSeconds-used' of https://github.com/ripcurlx/exchange into ripcurlx-fix-formatter-when-showSeconds-used

This commit is contained in:
Manfred Karrer 2018-02-01 15:53:54 -05:00
commit 1ed3b86fe9
No known key found for this signature in database
GPG key ID: 401250966A6B2C46
2 changed files with 36 additions and 49 deletions

View file

@ -30,6 +30,7 @@ import io.bisq.core.offer.Offer;
import io.bisq.core.offer.OfferPayload;
import io.bisq.network.p2p.NodeAddress;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.Monetary;
@ -492,7 +493,7 @@ public class BSFormatter {
}
public static String formatDurationAsWords(long durationMillis, boolean showSeconds) {
String format;
String format = "";
String second = Res.get("time.second");
String minute = Res.get("time.minute");
String hour = Res.get("time.hour").toLowerCase();
@ -501,55 +502,22 @@ public class BSFormatter {
String hours = Res.get("time.hours");
String minutes = Res.get("time.minutes");
String seconds = Res.get("time.seconds");
if (durationMillis >= DateUtils.MILLIS_PER_DAY) {
format = "d\' " + days + ", \'";
}
if (showSeconds) {
format = "d\' " + days + ", \'H\' " + hours + ", \'m\' " + minutes + ", \'s\' " + seconds + "\'";
format += "H\' " + hours + ", \'m\' " + minutes + ", \'s\' " + seconds + "\'";
} else
format = "d\' " + days + ", \'H\' " + hours + ", \'m\' " + minutes + "\'";
String duration = DurationFormatUtils.formatDuration(durationMillis, format);
String tmp;
duration = " " + duration;
tmp = StringUtils.replaceOnce(duration, " 0 " + days, "");
if (tmp.length() != duration.length()) {
duration = tmp;
tmp = StringUtils.replaceOnce(tmp, " 0 " + hours, "");
if (tmp.length() != duration.length()) {
tmp = StringUtils.replaceOnce(tmp, " 0 " + minutes, "");
duration = tmp;
if (tmp.length() != tmp.length()) {
duration = StringUtils.replaceOnce(tmp, " 0 " + seconds, "");
}
}
}
format += "H\' " + hours + ", \'m\' " + minutes + "\'";
if (duration.length() != 0) {
duration = duration.substring(1);
}
String duration = durationMillis > 0 ? DurationFormatUtils.formatDuration(durationMillis, format) : Res.get("formatter.tradePeriodOver");
tmp = StringUtils.replaceOnce(duration, " 0 " + seconds, "");
if (tmp.length() != duration.length()) {
duration = tmp;
tmp = StringUtils.replaceOnce(tmp, " 0 " + minutes, "");
if (tmp.length() != duration.length()) {
duration = tmp;
tmp = StringUtils.replaceOnce(tmp, " 0 " + hours, "");
if (tmp.length() != duration.length()) {
duration = StringUtils.replaceOnce(tmp, " 0 " + days, "");
}
}
}
duration = " " + duration;
duration = StringUtils.replaceOnce(duration, " 1 " + seconds, " 1 " + second);
duration = StringUtils.replaceOnce(duration, " 1 " + minutes, " 1 " + minute);
duration = StringUtils.replaceOnce(duration, " 1 " + hours, " 1 " + hour);
duration = StringUtils.replaceOnce(duration, " 1 " + days, " 1 " + day);
if (duration.startsWith(" ,"))
duration = duration.replace(" ,", "");
else if (duration.startsWith(", "))
duration = duration.replace(", ", "");
if (duration.equals(""))
duration = Res.get("formatter.tradePeriodOver");
duration = StringUtils.replaceOnce(duration, "1 " + seconds, "1 " + second);
duration = StringUtils.replaceOnce(duration, "1 " + minutes, "1 " + minute);
duration = StringUtils.replaceOnce(duration, "1 " + hours, "1 " + hour);
duration = StringUtils.replaceOnce(duration, "1 " + days, "1 " + day);
return duration.trim();
}

View file

@ -28,16 +28,18 @@ import static org.junit.Assert.assertEquals;
public class BSFormatterTest {
private BSFormatter formatter;
@Before
public void setup() {
Locale.setDefault(new Locale("en", "US"));
formatter = new BSFormatter();
Res.setBaseCurrencyCode("BTC");
Res.setBaseCurrencyName("Bitcoin");
}
@Test
public void testIsValid() {
BSFormatter formatter = new BSFormatter();
Res.setBaseCurrencyCode("BTC");
Res.setBaseCurrencyName("Bitcoin");
assertEquals("0 days", formatter.formatAccountAge(TimeUnit.HOURS.toMillis(23)));
assertEquals("0 days", formatter.formatAccountAge(0));
assertEquals("0 days", formatter.formatAccountAge(-1));
@ -46,4 +48,21 @@ public class BSFormatterTest {
assertEquals("30 days", formatter.formatAccountAge(TimeUnit.DAYS.toMillis(30)));
assertEquals("60 days", formatter.formatAccountAge(TimeUnit.DAYS.toMillis(60)));
}
@Test
public void testFormatDurationAsWords() {
long oneDay = TimeUnit.DAYS.toMillis(1);
long oneHour = TimeUnit.HOURS.toMillis(1);
long oneMinute = TimeUnit.MINUTES.toMillis(1);
long oneSecond = TimeUnit.SECONDS.toMillis(1);
assertEquals("1 hour, 0 minutes", formatter.formatDurationAsWords(oneHour));
assertEquals("1 day, 0 hours, 0 minutes", formatter.formatDurationAsWords(oneDay));
assertEquals("2 days, 0 hours, 1 minute", formatter.formatDurationAsWords(oneDay * 2 + oneMinute));
assertEquals("2 days, 0 hours, 2 minutes", formatter.formatDurationAsWords(oneDay * 2 + oneMinute * 2));
assertEquals("1 hour, 0 minutes, 0 seconds", formatter.formatDurationAsWords(oneHour, true));
assertEquals("1 hour, 0 minutes, 1 second", formatter.formatDurationAsWords(oneHour + oneSecond, true));
assertEquals("1 hour, 0 minutes, 2 seconds", formatter.formatDurationAsWords(oneHour + oneSecond * 2, true));
assertEquals("Trade period is over", formatter.formatDurationAsWords(0));
}
}