package org.mafagafogigante.dungeon.entity; import org.mafagafogigante.dungeon.util.Percentage; import org.junit.Assert; import org.junit.Test; public class WeightTest { private static final double[] WEIGHTS = {0.0, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0}; private static final double[] FRACTIONS = {0.0, 0.001, 0.01, 0.1, 1.0}; @Test public void newInstanceShouldWorkForNonnegativeValues() throws Exception { for (final double value : WEIGHTS) { Weight.newInstance(value); } } @Test public void addingZeroShouldNotModifyWeights() throws Exception { for (final double value : WEIGHTS) { final Weight valueWeight = Weight.newInstance(value); Assert.assertEquals(valueWeight, Weight.ZERO.add(valueWeight)); Assert.assertEquals(valueWeight, valueWeight.add(Weight.ZERO)); } } @Test public void addingShouldWorkAsExpected() throws Exception { for (final double first : WEIGHTS) { for (final double second : WEIGHTS) { final Weight firstWeight = Weight.newInstance(first); final Weight secondWeight = Weight.newInstance(second); Assert.assertEquals(Weight.newInstance(first + second), firstWeight.add(secondWeight)); Assert.assertEquals(Weight.newInstance(first + second), secondWeight.add(firstWeight)); } } } @Test public void multiplyingShouldWorkAsExpected() throws Exception { for (final double weight : WEIGHTS) { for (final double fraction : FRACTIONS) { final Weight expected = Weight.newInstance(weight * fraction); Assert.assertEquals(expected, Weight.newInstance(weight).multiply(new Percentage(fraction))); } } } }