package org.springside.modules.utils.number; import static org.assertj.core.api.Assertions.*; import java.math.RoundingMode; import org.junit.Test; public class MathUtilTest { @Test public void power2() { try { assertThat(MathUtil.nextPowerOfTwo(-5)).isEqualTo(8); fail("should fail here"); } catch (Exception e) { assertThat(e).isInstanceOf(IllegalArgumentException.class); } assertThat(MathUtil.nextPowerOfTwo(5)).isEqualTo(8); assertThat(MathUtil.nextPowerOfTwo(99)).isEqualTo(128); assertThat(MathUtil.previousPowerOfTwo(5)).isEqualTo(4); assertThat(MathUtil.previousPowerOfTwo(99)).isEqualTo(64); assertThat(MathUtil.isPowerOfTwo(32)).isTrue(); assertThat(MathUtil.isPowerOfTwo(31)).isFalse(); assertThat(MathUtil.nextPowerOfTwo(5L)).isEqualTo(8L); assertThat(MathUtil.nextPowerOfTwo(99L)).isEqualTo(128L); assertThat(MathUtil.previousPowerOfTwo(5L)).isEqualTo(4L); assertThat(MathUtil.previousPowerOfTwo(99L)).isEqualTo(64L); assertThat(MathUtil.isPowerOfTwo(32L)).isTrue(); assertThat(MathUtil.isPowerOfTwo(31L)).isFalse(); assertThat(MathUtil.isPowerOfTwo(-2)).isFalse(); assertThat(MathUtil.modByPowerOfTwo(0, 16)).isEqualTo(0); assertThat(MathUtil.modByPowerOfTwo(1, 16)).isEqualTo(1); assertThat(MathUtil.modByPowerOfTwo(31, 16)).isEqualTo(15); assertThat(MathUtil.modByPowerOfTwo(32, 16)).isEqualTo(0); assertThat(MathUtil.modByPowerOfTwo(65, 16)).isEqualTo(1); assertThat(MathUtil.modByPowerOfTwo(-1, 16)).isEqualTo(15); } @Test public void gcd() { assertThat(MathUtil.gcd(5, 6)).isEqualTo(1); assertThat(MathUtil.gcd(12, 18)).isEqualTo(6); assertThat(MathUtil.gcd(100, 1000)).isEqualTo(100); assertThat(MathUtil.gcd(5L, 6L)).isEqualTo(1L); assertThat(MathUtil.gcd(12L, 18L)).isEqualTo(6L); assertThat(MathUtil.gcd(100L, 1000L)).isEqualTo(100L); } @Test public void caculate() { assertThat(MathUtil.mod(15, 10)).isEqualTo(5); assertThat(MathUtil.mod(-15, 10)).isEqualTo(5); assertThat(MathUtil.mod(-5, 3)).isEqualTo(1); assertThat(MathUtil.mod(15l, 10l)).isEqualTo(5); assertThat(MathUtil.mod(-15l, 10l)).isEqualTo(5); assertThat(MathUtil.mod(-5l, 3l)).isEqualTo(1); assertThat(MathUtil.mod(15l, 10)).isEqualTo(5); assertThat(MathUtil.mod(-15l, 10)).isEqualTo(5); assertThat(MathUtil.mod(-5l, 3)).isEqualTo(1); assertThat(MathUtil.pow(2, 3)).isEqualTo(8); assertThat(MathUtil.pow(2, 0)).isEqualTo(1); assertThat(MathUtil.pow(2l, 3)).isEqualTo(8); assertThat(MathUtil.pow(2l, 0)).isEqualTo(1); assertThat(MathUtil.sqrt(15, RoundingMode.HALF_UP)).isEqualTo(4); assertThat(MathUtil.sqrt(16, RoundingMode.HALF_UP)).isEqualTo(4); assertThat(MathUtil.sqrt(10l, RoundingMode.HALF_UP)).isEqualTo(3); } @Test public void divide() { assertThat(10 / 4).isEqualTo(2); assertThat(MathUtil.divide(10, 4, RoundingMode.HALF_UP)).isEqualTo(3); assertThat(MathUtil.divide(10L, 4L, RoundingMode.HALF_DOWN)).isEqualTo(2); } }