private void updateMiningFee(LanguageConfiguration languageConfiguration, BitcoinConfiguration bitcoinConfiguration, Optional<Coin> miningFee, int transactionSize) { if (miningFee.isPresent()) { Coin miningFeeAsCoin = miningFee.get(); String[] minerFeePaidArray = Formats.formatCoinAsSymbolic(miningFeeAsCoin.negate(), languageConfiguration, bitcoinConfiguration, true); miningFeePaidValue.setText(minerFeePaidArray[0] + minerFeePaidArray[1]); // Work out fee rate if (transactionSize > 0) { double feeRate = (double)miningFeeAsCoin.getValue() / transactionSize; miningFeePaidRateValue.setText(feeRateFormat.format(feeRate)); } else { miningFeePaidRateValue.setText(Languages.safeText(MessageKey.NOT_AVAILABLE)); } } else { miningFeePaidValue.setText(Languages.safeText(MessageKey.NOT_AVAILABLE)); miningFeePaidRateValue.setText(Languages.safeText(MessageKey.NOT_AVAILABLE)); } }
totalAmountIncludingTransactionAndClientFee = totalAmountIncludingTransactionAndClientFee.negate();
@Test public void testSigns() throws Exception { assertEquals("-1.00", NO_CODE.format(Coin.COIN.negate()).toString()); assertEquals("@1.00", NO_CODE.negativeSign('@').format(Coin.COIN.negate()).toString()); assertEquals("1.00", NO_CODE.format(Coin.COIN).toString()); assertEquals("+1.00", NO_CODE.positiveSign('+').format(Coin.COIN).toString()); }
@Test public void testSigns() throws Exception { assertEquals("-1.00", NO_CODE.format(Coin.COIN.negate()).toString()); assertEquals("@1.00", NO_CODE.negativeSign('@').format(Coin.COIN.negate()).toString()); assertEquals("1.00", NO_CODE.format(Coin.COIN).toString()); assertEquals("+1.00", NO_CODE.positiveSign('+').format(Coin.COIN).toString()); }
@Test public void testSigns() throws Exception { assertEquals("-1.00", NO_CODE.format(Coin.COIN.negate()).toString()); assertEquals("@1.00", NO_CODE.negativeSign('@').format(Coin.COIN.negate()).toString()); assertEquals("1.00", NO_CODE.format(Coin.COIN).toString()); assertEquals("+1.00", NO_CODE.positiveSign('+').format(Coin.COIN).toString()); }
Coin transactionAmount = currentTransaction.getValue(wallet).negate(); transactionAmountFormatted = Formats.formatCoinAsSymbolic(transactionAmount, languageConfiguration, bitcoinConfiguration); feeAmount = Formats.formatCoinAsSymbolic(currentTransaction.getFee(), languageConfiguration, bitcoinConfiguration);
/** * @param event The "transaction seen" event * * @return A String suitably formatted for presentation as an alert message */ public static String formatAlertMessage(TransactionSeenEvent event) { // Decode the "transaction seen" event final Coin amount = event.getAmount(); final Coin modulusAmount; if (amount.compareTo(Coin.ZERO) >= 0) { modulusAmount = amount; } else { modulusAmount = amount.negate(); } // Create a suitable representation for inline text (no icon) final String messageAmount = Formats.formatCoinAsSymbolicText( modulusAmount, Configurations.currentConfiguration.getLanguage(), Configurations.currentConfiguration.getBitcoin() ); // Construct a suitable alert message if (amount.compareTo(Coin.ZERO) >= 0) { // Positive or zero amount, this is a receive return Languages.safeText(MessageKey.PAYMENT_RECEIVED_ALERT, messageAmount); } else { // Negative amount, this is a send (probably from a wallet clone elsewhere) return Languages.safeText(MessageKey.PAYMENT_SENT_ALERT, messageAmount); } }
@Test public void parse() throws Exception { BtcFormat coin = BtcFormat.getCoinInstance(Locale.US); assertEquals(Coin.COIN, coin.parseObject("1")); assertEquals(Coin.COIN, coin.parseObject("1.")); assertEquals(Coin.COIN, coin.parseObject("1.0")); assertEquals(Coin.COIN, BtcFormat.getCoinInstance(Locale.GERMANY).parseObject("1,0")); assertEquals(Coin.COIN, coin.parseObject("01.0000000000")); // TODO work with express positive sign // assertEquals(Coin.COIN, coin.parseObject("+1.0")); assertEquals(Coin.COIN.negate(), coin.parseObject("-1")); assertEquals(Coin.COIN.negate(), coin.parseObject("-1.0")); assertEquals(Coin.CENT, coin.parseObject(".01")); BtcFormat milli = BtcFormat.getMilliInstance(Locale.US); assertEquals(Coin.MILLICOIN, milli.parseObject("1")); assertEquals(Coin.MILLICOIN, milli.parseObject("1.0")); assertEquals(Coin.MILLICOIN, milli.parseObject("01.0000000000")); // TODO work with express positive sign //assertEquals(Coin.MILLICOIN, milli.parseObject("+1.0")); assertEquals(Coin.MILLICOIN.negate(), milli.parseObject("-1")); assertEquals(Coin.MILLICOIN.negate(), milli.parseObject("-1.0")); BtcFormat micro = BtcFormat.getMicroInstance(Locale.US); assertEquals(Coin.MICROCOIN, micro.parseObject("1")); assertEquals(Coin.MICROCOIN, micro.parseObject("1.0")); assertEquals(Coin.MICROCOIN, micro.parseObject("01.0000000000")); // TODO work with express positive sign // assertEquals(Coin.MICROCOIN, micro.parseObject("+1.0")); assertEquals(Coin.MICROCOIN.negate(), micro.parseObject("-1")); assertEquals(Coin.MICROCOIN.negate(), micro.parseObject("-1.0")); }
@Test public void parse() throws Exception { assertEquals(Coin.COIN, NO_CODE.parse("1")); assertEquals(Coin.COIN, NO_CODE.parse("1.")); assertEquals(Coin.COIN, NO_CODE.parse("1.0")); assertEquals(Coin.COIN, NO_CODE.decimalMark(',').parse("1,0")); assertEquals(Coin.COIN, NO_CODE.parse("01.0000000000")); assertEquals(Coin.COIN, NO_CODE.positiveSign('+').parse("+1.0")); assertEquals(Coin.COIN.negate(), NO_CODE.parse("-1")); assertEquals(Coin.COIN.negate(), NO_CODE.parse("-1.0")); assertEquals(Coin.CENT, NO_CODE.parse(".01")); assertEquals(Coin.MILLICOIN, MonetaryFormat.MBTC.parse("1")); assertEquals(Coin.MILLICOIN, MonetaryFormat.MBTC.parse("1.0")); assertEquals(Coin.MILLICOIN, MonetaryFormat.MBTC.parse("01.0000000000")); assertEquals(Coin.MILLICOIN, MonetaryFormat.MBTC.positiveSign('+').parse("+1.0")); assertEquals(Coin.MILLICOIN.negate(), MonetaryFormat.MBTC.parse("-1")); assertEquals(Coin.MILLICOIN.negate(), MonetaryFormat.MBTC.parse("-1.0")); assertEquals(Coin.MICROCOIN, MonetaryFormat.UBTC.parse("1")); assertEquals(Coin.MICROCOIN, MonetaryFormat.UBTC.parse("1.0")); assertEquals(Coin.MICROCOIN, MonetaryFormat.UBTC.parse("01.0000000000")); assertEquals(Coin.MICROCOIN, MonetaryFormat.UBTC.positiveSign('+').parse("+1.0")); assertEquals(Coin.MICROCOIN.negate(), MonetaryFormat.UBTC.parse("-1")); assertEquals(Coin.MICROCOIN.negate(), MonetaryFormat.UBTC.parse("-1.0")); assertEquals(Coin.CENT, NO_CODE.withLocale(new Locale("hi", "IN")).parse(".०१")); // Devanagari }
@Test public void testToFriendlyString() { assertEquals("1.00 BTC", COIN.toFriendlyString()); assertEquals("1.23 BTC", valueOf(1, 23).toFriendlyString()); assertEquals("0.001 BTC", COIN.divide(1000).toFriendlyString()); assertEquals("-1.23 BTC", valueOf(1, 23).negate().toFriendlyString()); }
@Test public void millicoinScaleTest() throws Exception { BtcFormat coinFormat = BtcFormat.getMilliInstance(Locale.US); assertEquals("1,000.00", coinFormat.format(Coin.COIN)); assertEquals("-1,000.00", coinFormat.format(Coin.COIN.negate())); assertEquals(Coin.parseCoin("0.001"), coinFormat.parseObject("1.00")); assertEquals(valueOf(1000), coinFormat.parseObject("0.01")); assertEquals(Coin.parseCoin("1"), coinFormat.parseObject("1,000.00")); assertEquals(Coin.parseCoin("1"), coinFormat.parseObject("1000")); }
@Test public void coinScaleTest() throws Exception { BtcFormat coinFormat = BtcFormat.getCoinInstance(Locale.US); assertEquals("1.00", coinFormat.format(Coin.COIN)); assertEquals("-1.00", coinFormat.format(Coin.COIN.negate())); assertEquals(Coin.parseCoin("1"), coinFormat.parseObject("1.00")); assertEquals(valueOf(1000000), coinFormat.parseObject("0.01")); assertEquals(Coin.parseCoin("1000"), coinFormat.parseObject("1,000.00")); assertEquals(Coin.parseCoin("1000"), coinFormat.parseObject("1000")); }
@Test public void testParseCoin() { // String version assertEquals(CENT, parseCoin("0.01")); assertEquals(CENT, parseCoin("1E-2")); assertEquals(COIN.add(CENT), parseCoin("1.01")); assertEquals(COIN.negate(), parseCoin("-1")); try { parseCoin("2E-20"); org.junit.Assert.fail("should not have accepted fractional satoshis"); } catch (IllegalArgumentException expected) { } catch (Exception e) { org.junit.Assert.fail("should throw IllegalArgumentException"); } assertEquals(1, parseCoin("0.00000001").value); assertEquals(1, parseCoin("0.000000010").value); }
@Test public void microcoinScaleTest() throws Exception { BtcFormat coinFormat = BtcFormat.getMicroInstance(Locale.US); assertEquals("1,000,000.00", coinFormat.format(Coin.COIN)); assertEquals("-1,000,000.00", coinFormat.format(Coin.COIN.negate())); assertEquals("1,000,000.10", coinFormat.format(Coin.COIN.add(valueOf(10)))); assertEquals(Coin.parseCoin("0.000001"), coinFormat.parseObject("1.00")); assertEquals(valueOf(1), coinFormat.parseObject("0.01")); assertEquals(Coin.parseCoin("0.001"), coinFormat.parseObject("1,000.00")); assertEquals(Coin.parseCoin("0.001"), coinFormat.parseObject("1000")); }
@Test public void testValueOf() { // int version assertEquals(CENT, valueOf(0, 1)); assertEquals(SATOSHI, valueOf(1)); assertEquals(NEGATIVE_SATOSHI, valueOf(-1)); assertEquals(MAX_MONEY, valueOf(MAX_MONEY.value)); assertEquals(MAX_MONEY.negate(), valueOf(MAX_MONEY.value * -1)); valueOf(MAX_MONEY.value + 1); valueOf((MAX_MONEY.value * -1) - 1); valueOf(Long.MAX_VALUE); valueOf(Long.MIN_VALUE); try { valueOf(1, -1); fail(); } catch (IllegalArgumentException e) {} try { valueOf(-1, 0); fail(); } catch (IllegalArgumentException e) {} }
clientState.incrementPaymentBy(Coin.SATOSHI.negate(), null); fail(); } catch (ValueOutOfRangeException e) {}