import org.junit.Test;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
public class RaindropConverterTest {
private int inputNumber;
private String outputFromRaindropConversion;
@Parameters(name = "{index}: expected input number {0} to be converted to \"{1}\"")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
// Non-primes
{1, "1"},
{52, "52"},
{12121, "12121"},
// Numbers with 3 as a prime factor
{3, "Pling"},
{6, "Pling"},
{9, "Pling"},
// Numbers with 5 as a prime factor
{5, "Plang"},
{10, "Plang"},
{25, "Plang"},
// Numbers with 7 as a prime factor
{7, "Plong"},
{14, "Plong"},
{49, "Plong"},
// Numbers with multiple activating prime factors
{15, "PlingPlang"},
{21, "PlingPlong"},
{35, "PlangPlong"},
{105, "PlingPlangPlong"},
});
}
public RaindropConverterTest(int inputNumber, String outputFromRaindropConversion) {
this.inputNumber = inputNumber;
this.outputFromRaindropConversion = outputFromRaindropConversion;
}
@Test
public void test() {
assertEquals(outputFromRaindropConversion, new RaindropConverter().convert(inputNumber));
}
}