/*
* Copyright 2014 Andreas Schildbach
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bitcoinj.utils;
import static org.bitcoinj.utils.Fiat.parseFiat;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class FiatTest {
@Test
public void testParseAndValueOf() {
assertEquals(Fiat.valueOf("EUR", 10000), parseFiat("EUR", "1"));
assertEquals(Fiat.valueOf("EUR", 100), parseFiat("EUR", "0.01"));
assertEquals(Fiat.valueOf("EUR", 1), parseFiat("EUR", "0.0001"));
assertEquals(Fiat.valueOf("EUR", -10000), parseFiat("EUR", "-1"));
}
@Test
public void testParseFiat() {
assertEquals(1, Fiat.parseFiat("EUR", "0.0001").value);
assertEquals(1, Fiat.parseFiat("EUR", "0.00010").value);
}
@Test(expected = IllegalArgumentException.class)
public void testParseFiatOverprecise() {
Fiat.parseFiat("EUR", "0.00011");
}
@Test
public void testParseFiatInexact() {
assertEquals(1, Fiat.parseFiatInexact("EUR", "0.0001").value);
assertEquals(1, Fiat.parseFiatInexact("EUR", "0.00011").value);
}
@Test
public void testToFriendlyString() {
assertEquals("1.00 EUR", parseFiat("EUR", "1").toFriendlyString());
assertEquals("1.23 EUR", parseFiat("EUR", "1.23").toFriendlyString());
assertEquals("0.0010 EUR", parseFiat("EUR", "0.001").toFriendlyString());
assertEquals("-1.23 EUR", parseFiat("EUR", "-1.23").toFriendlyString());
}
@Test
public void testToPlainString() {
assertEquals("0.0015", Fiat.valueOf("EUR", 15).toPlainString());
assertEquals("1.23", parseFiat("EUR", "1.23").toPlainString());
assertEquals("0.1", parseFiat("EUR", "0.1").toPlainString());
assertEquals("1.1", parseFiat("EUR", "1.1").toPlainString());
assertEquals("21.12", parseFiat("EUR", "21.12").toPlainString());
assertEquals("321.123", parseFiat("EUR", "321.123").toPlainString());
assertEquals("4321.1234", parseFiat("EUR", "4321.1234").toPlainString());
// check there are no trailing zeros
assertEquals("1", parseFiat("EUR", "1.0").toPlainString());
assertEquals("2", parseFiat("EUR", "2.00").toPlainString());
assertEquals("3", parseFiat("EUR", "3.000").toPlainString());
assertEquals("4", parseFiat("EUR", "4.0000").toPlainString());
}
}