|
| 1 | +import org.junit.jupiter.api.Test; |
| 2 | + |
| 3 | +import static org.junit.jupiter.api.Assertions.*; |
| 4 | +import static tinyscalautils.java.Util.*; |
| 5 | + |
| 6 | +public class UtilSuite { |
| 7 | + @Test |
| 8 | + void testPow() { |
| 9 | + assertThrows(IllegalArgumentException.class, () -> pow(2, -1)); |
| 10 | + assertEquals(1, pow(0, 0)); |
| 11 | + assertEquals(0, pow(0, 1)); |
| 12 | + assertEquals(1, pow(1, 0)); |
| 13 | + assertEquals(1, pow(1, 100_000)); |
| 14 | + assertEquals(1, pow(2, 0)); |
| 15 | + assertEquals(1024, pow(2, 10)); |
| 16 | + assertEquals(2048, pow(2, 11)); |
| 17 | + assertEquals(1L, pow(2L, 0)); |
| 18 | + assertEquals(1073741824L, pow(2L, 30)); |
| 19 | + assertEquals(536870912L, pow(2L, 29)); |
| 20 | + assertEquals(576460752303423488L, pow(2L, 59)); |
| 21 | + assertEquals(59049, pow(3, 10)); |
| 22 | + assertEquals(205891132094649L, pow(3L, 30)); |
| 23 | + } |
| 24 | + |
| 25 | + @Test |
| 26 | + void testEvenOddInt() { |
| 27 | + assertTrue(isEven(42)); |
| 28 | + assertTrue(isEven(-42)); |
| 29 | + assertFalse(isEven(41)); |
| 30 | + assertFalse(isEven(-41)); |
| 31 | + assertFalse(isOdd(42)); |
| 32 | + assertFalse(isOdd(-42)); |
| 33 | + assertTrue(isOdd(41)); |
| 34 | + assertTrue(isOdd(-41)); |
| 35 | + } |
| 36 | + |
| 37 | + @Test |
| 38 | + void testEvenOddLong() { |
| 39 | + assertTrue(isEven(42L)); |
| 40 | + assertTrue(isEven(-42L)); |
| 41 | + assertFalse(isEven(41L)); |
| 42 | + assertFalse(isEven(-41L)); |
| 43 | + assertFalse(isOdd(42L)); |
| 44 | + assertFalse(isOdd(-42L)); |
| 45 | + assertTrue(isOdd(41L)); |
| 46 | + assertTrue(isOdd(-41L)); |
| 47 | + } |
| 48 | + |
| 49 | + @Test |
| 50 | + void testIsPowerOf2Int() { |
| 51 | + assertThrows(IllegalArgumentException.class, () -> isPowerOf2(-1)); |
| 52 | + assertFalse(isPowerOf2(3)); |
| 53 | + assertFalse(isPowerOf2(5)); |
| 54 | + assertFalse(isPowerOf2(6)); |
| 55 | + assertFalse(isPowerOf2(7)); |
| 56 | + for (int n = 1073741825; n < 2147483647; n++) |
| 57 | + assertFalse(isPowerOf2(n)); |
| 58 | + for (int n = 1, c = 0; c < 31; c++, n <<= 1) |
| 59 | + assertTrue(isPowerOf2(n)); |
| 60 | + } |
| 61 | + |
| 62 | + @Test |
| 63 | + void testIsPowerOf2Long() { |
| 64 | + assertThrows(IllegalArgumentException.class, () -> isPowerOf2(-1L)); |
| 65 | + assertFalse(isPowerOf2(3L)); |
| 66 | + assertFalse(isPowerOf2(5L)); |
| 67 | + assertFalse(isPowerOf2(6L)); |
| 68 | + assertFalse(isPowerOf2(7L)); |
| 69 | + for (long n = 2147483649L; n <= 4294967295L; n++) |
| 70 | + assertFalse(isPowerOf2(n)); |
| 71 | + for (long n = 1L, c = 0; c < 63; c++, n <<= 1) |
| 72 | + assertTrue(isPowerOf2(n)); |
| 73 | + } |
| 74 | +} |
0 commit comments