Skip to content

twelve-days: use instance methods [Fix #357] #405

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 4, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 16 additions & 20 deletions exercises/twelve-days/src/example/java/TwelveDays.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
public class TwelveDays {
private static String[] days = new String[] {"first", "second", "third", "fourth", "fifth", "sixth", "seventh",
"eighth", "ninth", "tenth", "eleventh", "twelfth"};
private static String[] gifts = new String[] {
private static String[] days = new String[]{"first", "second", "third", "fourth", "fifth", "sixth", "seventh",
"eighth", "ninth", "tenth", "eleventh", "twelfth"};
private static String[] gifts = new String[]{
"a Partridge in a Pear Tree.",
"two Turtle Doves, ",
"three French Hens, ",
Expand All @@ -16,31 +16,27 @@ public class TwelveDays {
"twelve Drummers Drumming, "
};

public static String verse(int verseNumber) {
return constructVerse(verseNumber);
public String verse(int verseNumber) {
StringBuilder stringBuilder = new StringBuilder("On the " + days[verseNumber - 1]
+ " day of Christmas my true love gave to me, ");
for (int i = verseNumber; i > 0; i--) {
if (verseNumber != 1 && i == 1) stringBuilder.append("and ");
stringBuilder.append(gifts[i - 1]);
}
stringBuilder.append("\n");
return stringBuilder.toString();
}

public static String verses(int verseNumberStart, int verseNumberEnd) {
StringBuilder stringBuilder = new StringBuilder(constructVerse(verseNumberStart));
public String verses(int verseNumberStart, int verseNumberEnd) {
StringBuilder stringBuilder = new StringBuilder(verse(verseNumberStart));
for (int i = verseNumberStart + 1; i <= verseNumberEnd; i++) {
stringBuilder.append("\n");
stringBuilder.append(constructVerse(i));
stringBuilder.append(verse(i));
}
return stringBuilder.toString();
}

public static String sing() {
public String sing() {
return verses(1, 12);
}

private static String constructVerse(int verseNumber) {
StringBuilder stringBuilder = new StringBuilder("On the " + days[verseNumber - 1]
+ " day of Christmas my true love gave to me, ");
for (int i = verseNumber; i > 0; i--) {
if (verseNumber != 1 && i == 1) stringBuilder.append("and ");
stringBuilder.append(gifts[i - 1]);
}
stringBuilder.append("\n");
return stringBuilder.toString();
}
}
35 changes: 21 additions & 14 deletions exercises/twelve-days/src/test/java/TwelveDaysTest.java
Original file line number Diff line number Diff line change
@@ -1,47 +1,54 @@
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class TwelveDaysTest {
private TwelveDays twelveDays;

@Before
public void setup() {
twelveDays = new TwelveDays();
}

@Test
public void testVerseOne() {
String expectedVerseOne = "On the first day of Christmas my true love gave to me, " +
"a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseOne, TwelveDays.verse(1));
assertEquals(expectedVerseOne, twelveDays.verse(1));
}

@Ignore
@Test
public void testVerseTwo() {
String expectedVerseTwo = "On the second day of Christmas my true love gave to me, two Turtle Doves, " +
"and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseTwo, TwelveDays.verse(2));
assertEquals(expectedVerseTwo, twelveDays.verse(2));
}

@Ignore
@Test
public void testVerseThree() {
String expectedVerseThree = "On the third day of Christmas my true love gave to me, three French Hens, " +
"two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseThree, TwelveDays.verse(3));
assertEquals(expectedVerseThree, twelveDays.verse(3));
}

@Ignore
@Test
public void testVerseFour() {
String expectedVerseFour = "On the fourth day of Christmas my true love gave to me, four Calling Birds, " +
"three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseFour, TwelveDays.verse(4));
assertEquals(expectedVerseFour, twelveDays.verse(4));
}

@Ignore
@Test
public void testVerseFive() {
String expectedVerseFive = "On the fifth day of Christmas my true love gave to me, five Gold Rings, " +
"four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseFive, TwelveDays.verse(5));
assertEquals(expectedVerseFive, twelveDays.verse(5));
}

@Ignore
Expand All @@ -50,7 +57,7 @@ public void testVerseSix() {
String expectedVerseSix = "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, " +
"five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, " +
"and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseSix, TwelveDays.verse(6));
assertEquals(expectedVerseSix, twelveDays.verse(6));
}

@Ignore
Expand All @@ -59,7 +66,7 @@ public void testVerseSeven() {
String expectedVerseSeven = "On the seventh day of Christmas my true love gave to me, " +
"seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, " +
"two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseSeven, TwelveDays.verse(7));
assertEquals(expectedVerseSeven, twelveDays.verse(7));
}

@Ignore
Expand All @@ -68,7 +75,7 @@ public void testVerseEight() {
String expectedVerseEight = "On the eighth day of Christmas my true love gave to me, eight Maids-a-Milking," +
" seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, " +
"three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseEight, TwelveDays.verse(8));
assertEquals(expectedVerseEight, twelveDays.verse(8));
}

@Ignore
Expand All @@ -77,7 +84,7 @@ public void testVerseNine() {
String expectedVerseNine = "On the ninth day of Christmas my true love gave to me, nine Ladies Dancing, " +
"eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, " +
"four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseNine, TwelveDays.verse(9));
assertEquals(expectedVerseNine, twelveDays.verse(9));
}

@Ignore
Expand All @@ -87,7 +94,7 @@ public void testVerseTen() {
"nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, " +
"five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, " +
"and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseTen, TwelveDays.verse(10));
assertEquals(expectedVerseTen, twelveDays.verse(10));
}

@Ignore
Expand All @@ -97,7 +104,7 @@ public void testVerseEleven() {
"eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, " +
"seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, " +
"three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseEleven, TwelveDays.verse(11));
assertEquals(expectedVerseEleven, twelveDays.verse(11));
}

@Ignore
Expand All @@ -107,7 +114,7 @@ public void testVerseTwelve() {
"twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, " +
"eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, " +
"four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseTwelve, TwelveDays.verse(12));
assertEquals(expectedVerseTwelve, twelveDays.verse(12));
}

@Ignore
Expand All @@ -119,7 +126,7 @@ public void testMultipleVerses() {
"and a Partridge in a Pear Tree.\n\n" +
"On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, " +
"and a Partridge in a Pear Tree.\n";
assertEquals(expectedVerseOneToThree, TwelveDays.verses(1, 3));
assertEquals(expectedVerseOneToThree, twelveDays.verses(1, 3));
}

@Ignore
Expand Down Expand Up @@ -167,6 +174,6 @@ public void testSingWholeSong() {
"eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, " +
"seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, " +
"three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n";
assertEquals(expectedSong, TwelveDays.sing());
assertEquals(expectedSong, twelveDays.sing());
}
}