Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class FizzBuzz {
- private final List<Fizzer> fizzers;
- private static class Fizzer {
- private final String name;
- private final int divisor;
- private Fizzer(String name, int divisor) {
- this.name = name;
- this.divisor = divisor;
- }
- }
- public static class Builder {
- private final List<Fizzer> fizzers = new ArrayList<>();
- public Builder add(String name, int divisor) {
- fizzers.add(new Fizzer(name, divisor));
- return this;
- }
- public FizzBuzz build() {
- return new FizzBuzz(this);
- }
- }
- private FizzBuzz(Builder builder) {
- fizzers = Collections.unmodifiableList(builder.fizzers);
- }
- public String getValue(int num) {
- String output = "";
- for (Fizzer fizzer : fizzers) {
- if (num % fizzer.divisor == 0) {
- output += fizzer.name;
- }
- }
- return output.isEmpty() ? Integer.toString(num) : output;
- }
- public static Builder builder() {
- return new Builder();
- }
- }
- import static java.util.stream.IntStream.rangeClosed;
- class FizzBuzzDemo {
- public static void main(String[] args) {
- FizzBuzz fizzBuzz = FizzBuzz.builder().add("Fizz", 3).add("Buzz", 5).build();
- rangeClosed(1, 100).mapToObj(fizzBuzz::getValue).forEach(System.out::println);
- }
- }
- import org.junit.Test;
- import static org.junit.Assert.assertEquals;
- public class FizzBuzzTest {
- @Test
- public void test_Without_Fizzer() {
- FizzBuzz fizzBuzz = FizzBuzz.builder().build();
- assertEquals("1", fizzBuzz.getValue(1));
- assertEquals("2", fizzBuzz.getValue(2));
- assertEquals("3", fizzBuzz.getValue(3));
- assertEquals("4", fizzBuzz.getValue(4));
- assertEquals("5", fizzBuzz.getValue(5));
- assertEquals("15", fizzBuzz.getValue(15));
- assertEquals("16", fizzBuzz.getValue(16));
- assertEquals(Integer.toString(31 * 3 * 5), fizzBuzz.getValue(31 * 3 * 5));
- assertEquals(Integer.toString(31 * 3 * 5 + 1), fizzBuzz.getValue(31 * 3 * 5 + 1));
- }
- @Test
- public void test_With_Fizz() {
- FizzBuzz fizzBuzz = FizzBuzz.builder().add("Fizz", 3).build();
- assertEquals("1", fizzBuzz.getValue(1));
- assertEquals("2", fizzBuzz.getValue(2));
- assertEquals("Fizz", fizzBuzz.getValue(3));
- assertEquals("4", fizzBuzz.getValue(4));
- assertEquals("5", fizzBuzz.getValue(5));
- assertEquals("Fizz", fizzBuzz.getValue(15));
- assertEquals("16", fizzBuzz.getValue(16));
- assertEquals("Fizz", fizzBuzz.getValue(31 * 3 * 5));
- assertEquals(Integer.toString(31 * 3 * 5 + 1), fizzBuzz.getValue(31 * 3 * 5 + 1));
- }
- @Test
- public void test_With_FizzBuzz() {
- FizzBuzz fizzBuzz = FizzBuzz.builder().add("Fizz", 3).add("Buzz", 5).build();
- assertEquals("1", fizzBuzz.getValue(1));
- assertEquals("2", fizzBuzz.getValue(2));
- assertEquals("Fizz", fizzBuzz.getValue(3));
- assertEquals("4", fizzBuzz.getValue(4));
- assertEquals("Buzz", fizzBuzz.getValue(5));
- assertEquals("FizzBuzz", fizzBuzz.getValue(15));
- assertEquals("16", fizzBuzz.getValue(16));
- assertEquals("FizzBuzz", fizzBuzz.getValue(31 * 3 * 5));
- assertEquals(Integer.toString(31 * 3 * 5 + 1), fizzBuzz.getValue(31 * 3 * 5 + 1));
- }
- @Test
- public void test_With_FizzBuzzJazz() {
- FizzBuzz fizzBuzz = FizzBuzz.builder().add("Fizz", 3).add("Buzz", 5).add("Jazz", 7).build();
- assertEquals("1", fizzBuzz.getValue(1));
- assertEquals("2", fizzBuzz.getValue(2));
- assertEquals("Fizz", fizzBuzz.getValue(3));
- assertEquals("4", fizzBuzz.getValue(4));
- assertEquals("Buzz", fizzBuzz.getValue(5));
- assertEquals("FizzBuzz", fizzBuzz.getValue(15));
- assertEquals("16", fizzBuzz.getValue(16));
- assertEquals("FizzBuzz", fizzBuzz.getValue(31 * 3 * 5));
- assertEquals(Integer.toString(31 * 3 * 5 + 1), fizzBuzz.getValue(31 * 3 * 5 + 1));
- assertEquals("FizzBuzzJazz", fizzBuzz.getValue(31 * 3 * 5 * 7));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement