예제 #1
0
 @Test
 public void smallRate() throws Exception {
   ExchangeRateBase rate =
       new ExchangeRateBase(Value.parse(BTC, "10000"), FiatValue.parse("XXX", "0.00001"));
   assertEquals("0", rate.convert(oneBtc).toPlainString()); // Tiny value!
   assertEquals("1000000000", rate.convert(FiatValue.parse("XXX", "1")).toPlainString());
 }
예제 #2
0
 @Test
 public void bigRate() throws Exception {
   ExchangeRateBase rate =
       new ExchangeRateBase(Value.parse(BTC, "0.0001"), FiatValue.parse("BYR", "5320387.3"));
   assertEquals("53203873000", rate.convert(oneBtc).toPlainString());
   assertEquals("0", rate.convert(FiatValue.parse("BYR", "1")).toPlainString()); // Tiny value!
 }
예제 #3
0
  @Test
  public void scalingAndRounding() throws Exception {
    // 1BTC = 100.1234567890NBT
    // This rate causes the BTC & NBT to overflow so it sets the correct scale and rounding
    ExchangeRateBase rate = new ExchangeRateBase(BTC, NBT, "100.1234567890");

    // Check the rate's internal state
    assertEquals("100000", rate.value1.toPlainString());
    assertEquals("10012345.6789", rate.value2.toPlainString());

    // Make some conversions
    assertEquals("0.00998767", rate.convert(oneNbt).toPlainString());
    assertEquals("0.000001", rate.convert(Value.parse(NBT, "0.0001")).toPlainString());
    assertEquals("0.0001", rate.convert(Value.parse(BTC, "0.00000099")).toPlainString());
    assertEquals("0.0099", rate.convert(Value.parse(BTC, "0.000099")).toPlainString());
    assertEquals("10012345.6789", rate.convert(oneBtc.multiply(100000)).toPlainString());
    assertEquals("1001.2346", rate.convert(oneBtc.multiply(10)).toPlainString());
    assertEquals("998766.95438852", rate.convert(oneNbt.multiply(100000000)).toPlainString());

    // Check too precise rates
    rate = new ExchangeRateBase(BTC, NBT, "100.12345678901999");
    assertEquals("100000", rate.value1.toPlainString());
    assertEquals("10012345.6789", rate.value2.toPlainString());
  }
예제 #4
0
 @Test(expected = ArithmeticException.class)
 public void coinToFiatTooSmall() throws Exception {
   ExchangeRateBase rate = new ExchangeRateBase(oneBtc, FiatValue.parse("XXX", "1000000000"));
   rate.convert(Value.parse(BTC, "-1000000"));
 }