mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 18:03:12 +01:00
Add decimal point alignment
This commit is contained in:
parent
c11246a1ee
commit
c2c5760709
@ -36,6 +36,7 @@ import org.bitcoinj.core.Coin;
|
|||||||
import org.bitcoinj.core.Monetary;
|
import org.bitcoinj.core.Monetary;
|
||||||
import org.bitcoinj.utils.Fiat;
|
import org.bitcoinj.utils.Fiat;
|
||||||
import org.bitcoinj.utils.MonetaryFormat;
|
import org.bitcoinj.utils.MonetaryFormat;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -251,6 +252,24 @@ public class BSFormatter {
|
|||||||
// Volume
|
// Volume
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public String formatVolume(Volume volume, Boolean decimalAligned) {
|
||||||
|
String formattedVolume = formatVolume(volume);
|
||||||
|
|
||||||
|
if(decimalAligned) {
|
||||||
|
formattedVolume = fillUpPlacesWithEmptyStrings(formattedVolume, 5);
|
||||||
|
}
|
||||||
|
return formattedVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private String fillUpPlacesWithEmptyStrings(String formattedVolume, int maxNumberOfDigits) {
|
||||||
|
int numberOfPlacesToFill = maxNumberOfDigits - formattedVolume.split("\\.")[0].length();
|
||||||
|
for (int i = 0; i < numberOfPlacesToFill; i++) {
|
||||||
|
formattedVolume = " " + formattedVolume;
|
||||||
|
}
|
||||||
|
return formattedVolume;
|
||||||
|
}
|
||||||
|
|
||||||
public String formatVolume(Volume volume) {
|
public String formatVolume(Volume volume) {
|
||||||
return formatVolume(volume, fiatVolumeFormat, false);
|
return formatVolume(volume, fiatVolumeFormat, false);
|
||||||
}
|
}
|
||||||
@ -301,7 +320,6 @@ public class BSFormatter {
|
|||||||
return Res.get("formatter.formatVolumeLabel",
|
return Res.get("formatter.formatVolumeLabel",
|
||||||
currencyCode, postFix);
|
currencyCode, postFix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String formatMinVolumeAndVolume(Offer offer) {
|
public String formatMinVolumeAndVolume(Offer offer) {
|
||||||
return offer.isRange() ? formatVolume(offer.getMinVolume()) + " - " + formatVolume(offer.getVolume()) : formatVolume(offer.getVolume());
|
return offer.isRange() ? formatVolume(offer.getMinVolume()) + " - " + formatVolume(offer.getVolume()) : formatVolume(offer.getVolume());
|
||||||
}
|
}
|
||||||
@ -341,6 +359,15 @@ public class BSFormatter {
|
|||||||
return formatPrice(price, fiatPriceFormat, false);
|
return formatPrice(price, fiatPriceFormat, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String formatPrice(Price price, Boolean decimalAligned) {
|
||||||
|
String formattedPrice = formatPrice(price);
|
||||||
|
|
||||||
|
if(decimalAligned) {
|
||||||
|
formattedPrice = fillUpPlacesWithEmptyStrings(formattedPrice, 5);
|
||||||
|
}
|
||||||
|
return formattedPrice;
|
||||||
|
}
|
||||||
|
|
||||||
public String formatPriceWithCode(Price price) {
|
public String formatPriceWithCode(Price price) {
|
||||||
Monetary monetary = price.getMonetary();
|
Monetary monetary = price.getMonetary();
|
||||||
if (monetary instanceof Fiat)
|
if (monetary instanceof Fiat)
|
||||||
|
23
gui/src/test/java/io/bisq/common/monetary/PriceMaker.java
Normal file
23
gui/src/test/java/io/bisq/common/monetary/PriceMaker.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package io.bisq.common.monetary;
|
||||||
|
|
||||||
|
import com.natpryce.makeiteasy.Instantiator;
|
||||||
|
import com.natpryce.makeiteasy.Maker;
|
||||||
|
import com.natpryce.makeiteasy.Property;
|
||||||
|
import org.bitcoinj.utils.Fiat;
|
||||||
|
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.a;
|
||||||
|
|
||||||
|
public class PriceMaker {
|
||||||
|
|
||||||
|
public static final Property<Price, String> currencyCode = new Property<>();
|
||||||
|
public static final Property<Price, String> priceString = new Property<>();
|
||||||
|
|
||||||
|
public static final Instantiator<Price> FiatPrice = lookup ->
|
||||||
|
new Price(Fiat.parseFiat(lookup.valueOf(currencyCode, "USD"), lookup.valueOf(priceString, "100")));
|
||||||
|
|
||||||
|
public static final Instantiator<Price> AltcoinPrice = lookup ->
|
||||||
|
new Price(Altcoin.parseAltcoin(lookup.valueOf(currencyCode, "LTC"), lookup.valueOf(priceString, "100")));
|
||||||
|
|
||||||
|
public static final Maker<Price> usdPrice = a(FiatPrice);
|
||||||
|
public static final Maker<Price> ltcPrice = a(AltcoinPrice);
|
||||||
|
}
|
23
gui/src/test/java/io/bisq/common/monetary/VolumeMaker.java
Normal file
23
gui/src/test/java/io/bisq/common/monetary/VolumeMaker.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package io.bisq.common.monetary;
|
||||||
|
|
||||||
|
import com.natpryce.makeiteasy.Instantiator;
|
||||||
|
import com.natpryce.makeiteasy.Maker;
|
||||||
|
import com.natpryce.makeiteasy.Property;
|
||||||
|
import org.bitcoinj.utils.Fiat;
|
||||||
|
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.a;
|
||||||
|
|
||||||
|
public class VolumeMaker {
|
||||||
|
|
||||||
|
public static final Property<Volume, String> currencyCode = new Property<>();
|
||||||
|
public static final Property<Volume, String> volumeString = new Property<>();
|
||||||
|
|
||||||
|
public static final Instantiator<Volume> FiatVolume = lookup ->
|
||||||
|
new Volume(Fiat.parseFiat(lookup.valueOf(currencyCode, "USD"), lookup.valueOf(volumeString,"100")));
|
||||||
|
|
||||||
|
public static final Instantiator<Volume> AltcoinVolume = lookup ->
|
||||||
|
new Volume(Altcoin.parseAltcoin(lookup.valueOf(currencyCode, "LTC"), lookup.valueOf(volumeString, "100")));
|
||||||
|
|
||||||
|
public static final Maker<Volume> usdVolume = a(FiatVolume);
|
||||||
|
public static final Maker<Volume> ltcVolume = a(AltcoinVolume);
|
||||||
|
}
|
@ -31,13 +31,20 @@ import org.powermock.modules.junit4.PowerMockRunner;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.make;
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.with;
|
||||||
|
import static io.bisq.common.monetary.PriceMaker.priceString;
|
||||||
|
import static io.bisq.common.monetary.PriceMaker.usdPrice;
|
||||||
|
import static io.bisq.common.monetary.VolumeMaker.usdVolume;
|
||||||
|
import static io.bisq.common.monetary.VolumeMaker.volumeString;
|
||||||
|
import static org.bitcoinj.core.CoinMaker.oneBitcoin;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({Offer.class,OfferPayload.class})
|
@PrepareForTest({Offer.class, OfferPayload.class})
|
||||||
public class BSFormatterTest {
|
public class BSFormatterTest {
|
||||||
|
|
||||||
private BSFormatter formatter;
|
private BSFormatter formatter;
|
||||||
@ -79,6 +86,25 @@ public class BSFormatterTest {
|
|||||||
assertTrue(formatter.formatDurationAsWords(0).isEmpty());
|
assertTrue(formatter.formatDurationAsWords(0).isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFormatPrice() {
|
||||||
|
assertEquals("100.0000", formatter.formatPrice(make(usdPrice)));
|
||||||
|
assertEquals(" 100.0000", formatter.formatPrice(make(usdPrice), true));
|
||||||
|
assertEquals("7098.4700", formatter.formatPrice(make(usdPrice.but(with(priceString, "7098.4700")))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFormatCoin() {
|
||||||
|
assertEquals("1.00", formatter.formatCoin(oneBitcoin));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFormatVolume() {
|
||||||
|
assertEquals(" 100.00", formatter.formatVolume(make(usdVolume), true));
|
||||||
|
assertEquals("100.00", formatter.formatVolume(make(usdVolume)));
|
||||||
|
assertEquals("1774.62", formatter.formatVolume(make(usdVolume.but(with(volumeString, "1774.62")))));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFormatSameVolume() {
|
public void testFormatSameVolume() {
|
||||||
Offer offer = mock(Offer.class);
|
Offer offer = mock(Offer.class);
|
||||||
|
19
gui/src/test/java/org/bitcoinj/core/CoinMaker.java
Normal file
19
gui/src/test/java/org/bitcoinj/core/CoinMaker.java
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package org.bitcoinj.core;
|
||||||
|
|
||||||
|
import com.natpryce.makeiteasy.Instantiator;
|
||||||
|
import com.natpryce.makeiteasy.Property;
|
||||||
|
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.a;
|
||||||
|
import static com.natpryce.makeiteasy.MakeItEasy.make;
|
||||||
|
import static org.bitcoinj.core.Coin.*;
|
||||||
|
|
||||||
|
public class CoinMaker {
|
||||||
|
|
||||||
|
|
||||||
|
private static final Property<Coin, Long> satoshis = new Property<>();
|
||||||
|
|
||||||
|
public static final Instantiator<Coin> Coin = lookup ->
|
||||||
|
valueOf(lookup.valueOf(satoshis, 100000000L));
|
||||||
|
|
||||||
|
public static final Coin oneBitcoin = make(a(Coin));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user