From 976a76411fca4db19e38c8bc5304401a9979461b Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Mon, 17 Nov 2014 20:26:20 +0100 Subject: [PATCH] Update formatter to new lower reg. fee (miner fee dropped 10 fold) --- src/main/java/io/bitsquare/btc/FeePolicy.java | 10 ++---- .../io/bitsquare/gui/util/BSFormatter.java | 8 ++--- .../trade/createoffer/CreateOfferPMTest.java | 16 ++++++++++ .../bitsquare/gui/util/BSFormatterTest.java | 32 ++++++++++++++----- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/bitsquare/btc/FeePolicy.java b/src/main/java/io/bitsquare/btc/FeePolicy.java index 38df9b3aef..0945d522c1 100644 --- a/src/main/java/io/bitsquare/btc/FeePolicy.java +++ b/src/main/java/io/bitsquare/btc/FeePolicy.java @@ -28,15 +28,11 @@ import javax.inject.Inject; public class FeePolicy { - public static final Coin TX_FEE = Transaction.REFERENCE_DEFAULT_MIN_TX_FEE; + public static final Coin TX_FEE = Transaction.REFERENCE_DEFAULT_MIN_TX_FEE; // dropped down to 0.00001 BTC - // The min. REGISTRATION_FEE calculated with Transaction.MIN_NONDUST_OUTPUT would be - // 0.00015460 which might lead to problems for the spending wallet. - // Some web wallets don't allow more then 4 decimal places (need more investigation) - // So we use 0.0002 as that fits also to our 4 decimal places restriction for BTC values. - // The remaining 0.0000454 BTC is given to miners at the moment as it is lower then dust. + // TODO: Change REGISTRATION_FEE to 0.00001 (See https://github.com/bitsquare/bitsquare/issues/228) public static final Coin REGISTRATION_FEE = TX_FEE.add(TX_FEE); - public static final Coin CREATE_OFFER_FEE = REGISTRATION_FEE; // 0.0002 + public static final Coin CREATE_OFFER_FEE = Coin.valueOf(20000); // 0.00002 BTC public static final Coin TAKE_OFFER_FEE = CREATE_OFFER_FEE; private final BitcoinNetwork bitcoinNetwork; diff --git a/src/main/java/io/bitsquare/gui/util/BSFormatter.java b/src/main/java/io/bitsquare/gui/util/BSFormatter.java index 8adbeba27a..3c706ed6c8 100644 --- a/src/main/java/io/bitsquare/gui/util/BSFormatter.java +++ b/src/main/java/io/bitsquare/gui/util/BSFormatter.java @@ -29,7 +29,6 @@ import org.bitcoinj.utils.Fiat; import org.bitcoinj.utils.MonetaryFormat; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.DateFormat; import java.text.DecimalFormat; @@ -67,8 +66,7 @@ public class BSFormatter { // Input of a group separator (1,123,45) lead to an validation error. // Note: BtcFormat was intended to be used, but it lead to many problems (automatic format to mBit, // no way to remove grouping separator). It seems to be not optimal for user input formatting. - private MonetaryFormat coinFormat = MonetaryFormat.BTC.optionalDecimals(2) - .roundingMode(RoundingMode.HALF_UP); + private MonetaryFormat coinFormat = MonetaryFormat.BTC.repeatOptionalDecimals(2, 2); private String currencyCode = Currency.getInstance(Locale.getDefault()).getCurrencyCode(); @@ -110,9 +108,9 @@ public class BSFormatter { private MonetaryFormat getMonetaryFormat() { if (useMilliBit) - return MonetaryFormat.MBTC.repeatOptionalDecimals(2, 1); + return MonetaryFormat.MBTC; else - return MonetaryFormat.BTC.repeatOptionalDecimals(2, 1); + return MonetaryFormat.BTC.repeatOptionalDecimals(2, 2); } public void setFiatCurrencyCode(String currencyCode) { diff --git a/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPMTest.java b/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPMTest.java index d6d60dd6ce..edb5a6b2fe 100644 --- a/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPMTest.java +++ b/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPMTest.java @@ -54,6 +54,22 @@ public class CreateOfferPMTest { presenter.initialize(); } + @Test + public void testAmount() { + presenter.amount.set("0.0001"); + model.calculateAmount(); + assertEquals("0.0001", presenter.amount.get()); + assertEquals(Coin.parseCoin("0.0001"), model.amountAsCoin.get()); + presenter.amount.set("0.0009"); + model.calculateAmount(); + assertEquals("0.0009", presenter.amount.get()); + assertEquals(Coin.parseCoin("0.0009"), model.amountAsCoin.get()); + + presenter.amount.set("0.0029"); + model.calculateAmount(); + assertEquals("0.0029", presenter.amount.get()); + assertEquals(Coin.parseCoin("0.0029"), model.amountAsCoin.get()); + } @Test public void testBindings() { diff --git a/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java b/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java index b8141c4a21..8b0da044fa 100644 --- a/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java +++ b/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java @@ -74,12 +74,20 @@ public class BSFormatterTest { assertEquals("1.0120", formatter.formatCoin(Coin.parseCoin("1.012"))); assertEquals("1012.30", formatter.formatCoin(Coin.parseCoin("1012.3"))); assertEquals("1.0120", formatter.formatCoin(Coin.parseCoin("1.01200"))); - assertEquals("1.0123", formatter.formatCoin(Coin.parseCoin("1.01234"))); + assertEquals("1.000123", formatter.formatCoin(Coin.parseCoin("1.0001234"))); + assertEquals("0.10", formatter.formatCoin(Coin.parseCoin("0.1"))); + assertEquals("0.01", formatter.formatCoin(Coin.parseCoin("0.01"))); + assertEquals("0.0010", formatter.formatCoin(Coin.parseCoin("0.001"))); + assertEquals("0.0001", formatter.formatCoin(Coin.parseCoin("0.0001"))); + + assertEquals("0.000010", formatter.formatCoin(Coin.parseCoin("0.00001"))); + assertEquals("0.000001", formatter.formatCoin(Coin.parseCoin("0.000001"))); + assertEquals("0.00", formatter.formatCoin(Coin.parseCoin("0.0000001"))); assertEquals("1.2345", formatter.formatCoin(Coin.parseCoin("1.2345"))); - assertEquals("1.2346", formatter.formatCoin(Coin.parseCoin("1.23456"))); - assertEquals("1.2346", formatter.formatCoin(Coin.parseCoin("1.234567"))); - assertEquals("1.2345", formatter.formatCoin(Coin.parseCoin("1.23448"))); + assertEquals("1.002346", formatter.formatCoin(Coin.parseCoin("1.0023456"))); + assertEquals("1.002346", formatter.formatCoin(Coin.parseCoin("1.00234567"))); + assertEquals("1.002345", formatter.formatCoin(Coin.parseCoin("1.0023448"))); assertEquals("1.00", formatter.formatCoin(Coin.COIN)); assertEquals("1012.30", formatter.formatCoin(Coin.parseCoin("1012.3"))); @@ -100,12 +108,20 @@ public class BSFormatterTest { assertEquals("1.0120 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.012"))); assertEquals("1012.30 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1012.3"))); assertEquals("1.0120 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.01200"))); - assertEquals("1.0123 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.01234"))); + assertEquals("1.012340 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.01234"))); + assertEquals("1.012345 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.012345"))); + assertEquals("1.012345 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.0123454"))); + assertEquals("1.012346 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.0123455"))); + + assertEquals("0.10 BTC", formatter.formatCoinWithCode(Coin.parseCoin("0.1"))); + assertEquals("0.01 BTC", formatter.formatCoinWithCode(Coin.parseCoin("0.01"))); + assertEquals("0.0010 BTC", formatter.formatCoinWithCode(Coin.parseCoin("0.001"))); + assertEquals("0.0001 BTC", formatter.formatCoinWithCode(Coin.parseCoin("0.0001"))); assertEquals("1.2345 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.2345"))); - assertEquals("1.2346 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.23456"))); - assertEquals("1.2346 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.234567"))); - assertEquals("1.2345 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.23448"))); + assertEquals("1.002346 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.0023456"))); + assertEquals("1.002346 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.00234567"))); + assertEquals("1.002345 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1.0023448"))); assertEquals("1.00 BTC", formatter.formatCoinWithCode(Coin.COIN)); assertEquals("1012.30 BTC", formatter.formatCoinWithCode(Coin.parseCoin("1012.3")));