package de.invesdwin.util.math.decimal.scaled; import javax.annotation.concurrent.ThreadSafe; import org.junit.Test; import de.invesdwin.util.assertions.Assertions; import de.invesdwin.util.math.decimal.Decimal; @ThreadSafe public class PercentTest { @Test public void test() { Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.RATE).getValue(PercentScale.RATE)) .isEqualTo(Decimal.ONE); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.RATE).getValue(PercentScale.PERCENT)) .isEqualTo(new Decimal("100")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.RATE).getValue(PercentScale.PERMILLE)) .isEqualTo(new Decimal("1000")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERCENT).getValue(PercentScale.PERCENT)) .isEqualTo(Decimal.ONE); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERCENT).getValue(PercentScale.PERMILLE)) .isEqualTo(new Decimal("10")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERCENT).getValue(PercentScale.RATE)) .isEqualTo(new Decimal("0.01")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERMILLE).getValue(PercentScale.PERMILLE)) .isEqualTo(Decimal.ONE); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERMILLE).getValue(PercentScale.PERCENT)) .isEqualTo(new Decimal("0.1")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERMILLE).getValue(PercentScale.RATE)) .isEqualTo(new Decimal("0.001")); Assertions.assertThat(new Percent(Decimal.ONE, PercentScale.PERMILLE).toString(PercentScale.PERMILLE)) .isEqualTo("1" + PercentScale.PERMILLE.getSymbol()); } @Test public void testToString() { Assertions.assertThat(new Percent(new Decimal("0.001"), PercentScale.PERCENT).toString(PercentScale.RATE)) .isEqualTo("0"); Assertions.assertThat(new Percent(new Decimal("0.001"), PercentScale.PERCENT).toStringBuilder() .withScale(PercentScale.RATE) .withDecimalDigits(5) .toString()).isEqualTo("0.00001"); Assertions.assertThat(new Percent(new Decimal("0.001"), PercentScale.PERCENT).toString(PercentScale.PERCENT)) .isEqualTo("0%"); Assertions.assertThat(new Percent(new Decimal("0.001"), PercentScale.PERCENT).toStringBuilder() .withScale(PercentScale.PERCENT) .withDecimalDigits(3) .toString()).isEqualTo("0.001%"); final Percent permilleValue = new Percent(new Decimal("0.001"), PercentScale.PERCENT) .asScale(PercentScale.PERMILLE); Assertions.assertThat(permilleValue.toString(PercentScale.PERMILLE)) .isEqualTo("0" + PercentScale.PERMILLE.getSymbol()); Assertions .assertThat(permilleValue.toStringBuilder() .withScale(PercentScale.PERMILLE) .withDecimalDigits(2) .toString()) .isEqualTo("0.01" + PercentScale.PERMILLE.getSymbol()); } }