package org.mafagafogigante.dungeon.util;
import org.junit.Assert;
import org.junit.Test;
public class PercentageTest {
@Test
public void testCompareTo() throws Exception {
Assert.assertTrue(new Percentage(0.1).compareTo(new Percentage(0.2)) < 0);
Assert.assertTrue(new Percentage(0.2).compareTo(new Percentage(0.1)) > 0);
Assert.assertTrue(new Percentage(0.0).equals(new Percentage(0.0)));
Assert.assertTrue(new Percentage(1.0).equals(new Percentage(1.0)));
Assert.assertTrue(new Percentage(0.0).compareTo(new Percentage(1e-6)) < 0);
Assert.assertTrue(new Percentage(1e-6).compareTo(new Percentage(0.0)) > 0);
}
@Test
public void testBiggerThanOrEqualTo() throws Exception {
Assert.assertTrue(new Percentage(1.0).biggerThanOrEqualTo(new Percentage(0.0)));
Assert.assertTrue(new Percentage(1.0).biggerThanOrEqualTo(new Percentage(0.9999)));
Assert.assertTrue(new Percentage(0.0001).biggerThanOrEqualTo(new Percentage(0.0)));
Assert.assertFalse(new Percentage(0.0).biggerThanOrEqualTo(new Percentage(1.0)));
Assert.assertFalse(new Percentage(0.9999).biggerThanOrEqualTo(new Percentage(1.0)));
Assert.assertFalse(new Percentage(0.0).biggerThanOrEqualTo(new Percentage(0.0001)));
}
@Test
public void testToString() throws Exception {
Assert.assertEquals("0.00%", new Percentage(0.0).toString());
Assert.assertEquals("5.50%", new Percentage(0.055).toString());
Assert.assertEquals("100.00%", new Percentage(1.0).toString());
}
@Test
public void testFromString() throws Exception {
Percentage[] objects = {new Percentage(0.0), new Percentage(0.2468), new Percentage(1.0)};
for (Percentage percentage : objects) {
Assert.assertEquals(percentage, Percentage.fromString(percentage.toString()));
}
}
@Test
public void testIsValidPercentageString() throws Exception {
Assert.assertTrue(Percentage.isValidPercentageString("0.0%"));
Assert.assertTrue(Percentage.isValidPercentageString("100.0%"));
Assert.assertTrue(Percentage.isValidPercentageString("12.3456789%"));
// Sixty decimal places.
Assert.assertTrue(
Percentage.isValidPercentageString("0.000000000000000000000000000000000000000000000000000000000000%"));
Assert.assertTrue(
Percentage.isValidPercentageString("0.000000000000000000000000000000000000000000000000000000000001%"));
Assert.assertFalse(Percentage.isValidPercentageString("110.00%"));
Assert.assertFalse(Percentage.isValidPercentageString("100.001%"));
Assert.assertFalse(Percentage.isValidPercentageString("100.0001%"));
Assert.assertFalse(Percentage.isValidPercentageString("100.00001%")); // Enough precision.
}
}