Skip to content

Commit 5b76fca

Browse files
authored
Merge pull request TheAlgorithms#488 from lq920320/Development
add a Test about AnyBaseToDecimal.java
2 parents db9e4bb + d9c4639 commit 5b76fca

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package src.main.com.java.conversions;
2+
3+
public class AnyBaseToDecimal {
4+
/**
5+
* This method produces a decimal value of any given input number of any base
6+
* @param inpNum String of which we need the decimal value and base in integer format
7+
* @return string format of the decimal value
8+
*/
9+
10+
public String convertToDecimal(String inpNum, int base) {
11+
int len = inpNum.length();
12+
int num = 0;
13+
int pow = 1;
14+
15+
for (int i=len-1; i>=0; i--) {
16+
if (valOfChar(inpNum.charAt(i)) >= base) {
17+
return "Invalid Number";
18+
}
19+
num += valOfChar(inpNum.charAt(i))*pow;
20+
pow *= base;
21+
}
22+
return String.valueOf(num);
23+
}
24+
25+
/**
26+
* This method produces integer value of the input character and returns it
27+
* @param c Char of which we need the integer value of
28+
* @return integer value of input char
29+
*/
30+
31+
private static int valOfChar(char c) {
32+
if (c >= '0' && c <= '9') {
33+
return (int)c - '0';
34+
}
35+
else {
36+
return (int)c - 'A' + 10;
37+
}
38+
}
39+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package src.test.com.java.conversions;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
import src.main.com.java.conversions.AnyBaseToDecimal;
6+
7+
public class AnyBaseToDecimalTest {
8+
9+
@Test
10+
public void testAnyBaseToDecimal() {
11+
AnyBaseToDecimal anyBaseToDecimal = new AnyBaseToDecimal();
12+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("2", 2));
13+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("3", 2));
14+
Assert.assertEquals("3", anyBaseToDecimal.convertToDecimal("11", 2));
15+
Assert.assertEquals("4", anyBaseToDecimal.convertToDecimal("100", 2));
16+
Assert.assertEquals("5", anyBaseToDecimal.convertToDecimal("101", 2));
17+
Assert.assertEquals("10", anyBaseToDecimal.convertToDecimal("1010", 2));
18+
Assert.assertEquals("1024", anyBaseToDecimal.convertToDecimal("10000000000", 2));
19+
20+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("8", 8));
21+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("9", 8));
22+
Assert.assertEquals("7", anyBaseToDecimal.convertToDecimal("7", 8));
23+
Assert.assertEquals("8", anyBaseToDecimal.convertToDecimal("10", 8));
24+
Assert.assertEquals("9", anyBaseToDecimal.convertToDecimal("11", 8));
25+
Assert.assertEquals("10", anyBaseToDecimal.convertToDecimal("12", 8));
26+
Assert.assertEquals("1024", anyBaseToDecimal.convertToDecimal("2000", 8));
27+
28+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("A", 10));
29+
Assert.assertEquals("10", anyBaseToDecimal.convertToDecimal("10", 10));
30+
Assert.assertEquals("1024", anyBaseToDecimal.convertToDecimal("1024", 10));
31+
32+
Assert.assertEquals("Invalid Number", anyBaseToDecimal.convertToDecimal("G", 16));
33+
Assert.assertEquals("16", anyBaseToDecimal.convertToDecimal("10", 16));
34+
Assert.assertEquals("17", anyBaseToDecimal.convertToDecimal("11", 16));
35+
Assert.assertEquals("100", anyBaseToDecimal.convertToDecimal("64", 16));
36+
Assert.assertEquals("225", anyBaseToDecimal.convertToDecimal("E1", 16));
37+
Assert.assertEquals("1024", anyBaseToDecimal.convertToDecimal("400", 16));
38+
}
39+
}

0 commit comments

Comments
 (0)