Skip to content

Instantly share code, notes, and snippets.

@wanooknox
Created February 28, 2019 19:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wanooknox/27db592eac9aab45ae91b70fcae25378 to your computer and use it in GitHub Desktop.
Save wanooknox/27db592eac9aab45ae91b70fcae25378 to your computer and use it in GitHub Desktop.
This is a quick Fizz Buzz exercise I did to teach a high school student the concepts behind TDD. Method naming and code structure could be better, but I just needed to illustrate a point. I felt the exercise went well and I thought it might be worth while to keep the code.
package com.wanooknox.fizzbuzz;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class FizzBuzzTest {
private FizzBuzzEngine fizzBuzzEngine;
@Before
public void setup() {
fizzBuzzEngine = new FizzBuzzEngine();
}
@Test
public void isMultipleOf3_shouldReturnTrue_whenGivenExactly3() {
// Setup
boolean expected = true;
int input = 3;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf3(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf3_shouldReturnTrue_whenGiven6() {
// Setup
boolean expected = true;
int input = 6;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf3(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf3_shouldReturnFalse_whenGiven5() {
// Setup
boolean expected = false;
int input = 5;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf3(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf5_shouldReturnTrue_whenGivenExactly5() {
// Setup
boolean expected = true;
int input = 5;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf5(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf5_shouldReturnTrue_whenGiven10() {
// Setup
boolean expected = true;
int input = 10;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf5(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf5_shouldReturnFalse_whenGiven3() {
// Setup
boolean expected = false;
int input = 3;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf5(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void isMultipleOf5_shouldReturnFalse_whenGiven9() {
// Setup
boolean expected = false;
int input = 9;
// Execute
boolean actual = fizzBuzzEngine.isMultipleOf5(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void fizzOrBuzzOrNumber_shouldReturnFizz_whenMultipleOf3() {
// Setup
String expected = "Fizz";
int input = 6;
// Execute
String actual = fizzBuzzEngine.fizzOrBuzzOrNumber(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void fizzOrBuzzOrNumber_shouldReturnBuzz_whenMultipleOf5() {
// Setup
String expected = "Buzz";
int input = 10;
// Execute
String actual = fizzBuzzEngine.fizzOrBuzzOrNumber(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void fizzOrBuzzOrNumber_shouldReturnFizzBuzz_whenMultipleOf3And5() {
// Setup
String expected = "FizzBuzz";
int input = 15;
// Execute
String actual = fizzBuzzEngine.fizzOrBuzzOrNumber(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void fizzOrBuzzOrNumber_shouldReturnTheNumber_whenNotMultipleOf3Or5() {
// Setup
String expected = "14";
int input = 14;
// Execute
String actual = fizzBuzzEngine.fizzOrBuzzOrNumber(input);
// Assert
assertEquals(expected, actual);
}
@Test
public void dummy() {
fizzBuzzEngine.doFizzBuzz();
}
private class FizzBuzzEngine {
public void doFizzBuzz() {
for (int i = 0; i < 100; i++) {
System.out.println(fizzOrBuzzOrNumber(i));
}
}
public String fizzOrBuzzOrNumber(int input) {
String result = "";
if (isMultipleOf3(input)) {
result += "Fizz";
}
if (isMultipleOf5(input)) {
result += "Buzz";
}
if (result == "") {
return String.valueOf(input);
} else {
return result;
}
}
public boolean isMultipleOf3(int value) {
int divisor = 3;
return ((value % divisor) == 0);
}
public boolean isMultipleOf5(int value) {
return ((value % 5) == 0);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment