Skip to content

Commit b2b95b6

Browse files
committed
UglyNumber isUgly complete.
1 parent 989d885 commit b2b95b6

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

src/main/java/stringbasic/exercises/UglyNumber.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@ public UglyNumber(int number) {
99
}
1010

1111
public boolean isUgly() {
12+
if (this.number == 1)
13+
return true;
14+
canDivide(2);
15+
canDivide(3);
16+
canDivide(5);
17+
1218
return this.number == 1;
1319
}
20+
21+
private void canDivide(int d) {
22+
while (this.number % d == 0)
23+
this.number = this.number/d;
24+
}
1425
}
Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,53 @@
11
package stringbasic.exercises;
22

3+
import com.google.common.collect.ImmutableList;
34
import org.junit.Assert;
45
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
import org.junit.runners.Parameterized;
8+
import org.junit.runners.Parameterized.Parameters;
59

10+
import java.util.Collection;
11+
12+
@RunWith(Parameterized.class)
613
public class UglyNumberTest {
714

15+
private int number;
16+
private boolean isUgly;
17+
18+
@Parameters
19+
public static Collection<Object[]> uglyNumbers () {
20+
return ImmutableList.of(
21+
new Object[] {12, true},
22+
new Object[] {11, false},
23+
new Object[] {10, true},
24+
new Object[] {9, true},
25+
new Object[] {8, true},
26+
new Object[] {7, false},
27+
new Object[] {6, true},
28+
new Object[] {5, true},
29+
new Object[] {4, true},
30+
new Object[] {3, true},
31+
new Object[] {2, true},
32+
new Object[] {1, true}
33+
);
34+
}
35+
36+
public UglyNumberTest(int number, boolean isUgly) {
37+
this.number = number;
38+
this.isUgly = isUgly;
39+
}
40+
841
@Test
942
public void testIsUgly() {
10-
int number = 1;
11-
UglyNumber sut = new UglyNumber(number);
12-
Assert.assertTrue(String.format("%d:", number), sut.isUgly());
43+
UglyNumber sut = new UglyNumber(this.number);
44+
Assert.assertEquals(
45+
String.format(
46+
"%d:",
47+
this.number
48+
),
49+
this.isUgly,
50+
sut.isUgly()
51+
);
1352
}
1453
}

0 commit comments

Comments
 (0)