BAEL-1076 How to get a number of digits in an int? (#2457)

* BAEL-1076 How to get a number of digits in an int?

Six different ways to find the number of digits in an integer.

* BAEL-1076 How to get a number of digits in an int?

* Update NumberOfDigits.java
This commit is contained in:
ramansahasi
2017-08-26 00:54:43 +05:30
committed by maibin
parent d492c6f4d8
commit 09d10ac85f
4 changed files with 355 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
package com.baeldung.numberofdigits;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
@RunWith(Theories.class)
public class NumberOfDigitsIntegrationTest {
@DataPoints
public static int[][] lowestIntegers()
{
return new int[][]{
{1, 1},
{2, 10},
{3, 100},
{4, 1000},
{5, 10000},
{6, 100000},
{7, 1000000},
{8, 10000000},
{9, 100000000},
{10, 1000000000}
};
}
@DataPoints
public static int[][] highestIntegers()
{
return new int[][]{
{1, 9},
{2, 99},
{3, 999},
{4, 9999},
{5, 99999},
{6, 999999},
{7, 9999999},
{8, 99999999},
{9, 999999999},
{10, Integer.MAX_VALUE}
};
}
@DataPoints
public static int[][] randomIntegers()
{
return new int[][]{
{1, 1},
{2, 14},
{3, 549},
{4, 1136},
{5, 25340},
{6, 134321},
{7, 1435432},
{8, 54234129},
{9, 113683912},
{10, 1534031982}
};
}
@Theory
public void givenDataPoints_whenStringBasedSolutionInvoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.stringBasedSolution(entry[1]));
}
@Theory
public void givenDataPoints_whenLogarithmicApproachInvoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.logarithmicApproach(entry[1]));
}
@Theory
public void givenDataPoints_whenRepeatedMultiplicationInvoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.repeatedMultiplication(entry[1]));
}
@Theory
public void givenDataPoints_whenShiftOperatorsInvoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.shiftOperators(entry[1]));
}
@Theory
public void givenDataPoints_whenDividingWithPowersOf2Invoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.dividingWithPowersOf2(entry[1]));
}
@Theory
public void givenDataPoints_whenDivideAndConquerInvoked_thenAllPointsMatch(final int[] entry) {
Assume.assumeTrue(entry[0] > 0 && entry[1] > 0);
Assert.assertEquals(entry[0], NumberOfDigits.divideAndConquer(entry[1]));
}
}