@@ -0,0 +1,1294 @@
+package de.cgan.bottles;%0A%0Aimport static org.hamcrest.MatcherAssert.assertThat;%0Aimport static org.hamcrest.Matchers.equalTo;%0A%0Aimport java.io.ByteArrayOutputStream;%0Aimport java.io.PrintStream;%0A%0Aimport org.junit.Test;%0A%0Aimport de.cgan.bottles.Bottles.Num;%0Aimport de.cgan.bottles.Bottles.Singer;%0A%0Apublic class SingerTest %7B%0A  ByteArrayOutputStream bytes = new ByteArrayOutputStream();%0A  Singer singer = new Singer(new PrintStream(bytes), new Num(99));%0A%0A  @Test%0A  public void singsLastStanza() %7B%0A    singer.accept(new Num(0));%0A%0A    assertThat(getOutput(), equalTo(%22No more bottles of beer on the wall, no more bottles of beer.%5Cn%22%0A        + %22Go to the store and buy some more, 99 bottles of beer on the wall.%5Cn%22));%0A  %7D%0A%0A  @Test%0A  public void singsStanzaOne() %7B%0A    singer.accept(new Num(1));%0A%0A    assertThat(getOutput(), equalTo(%221 bottle of beer on the wall, 1 bottle of beer.%5Cn%22%0A        + %22Take one down, pass it around, no more bottles of beer on the wall.%5Cn%5Cn%22));%0A  %7D%0A%0A  @Test%0A  public void singsStanzaTwo() %7B%0A    singer.accept(new Num(2));%0A%0A    assertThat(getOutput(), equalTo(%222 bottles of beer on the wall, 2 bottles of beer.%5Cn%22%0A        + %22Take one down, pass it around, 1 bottle of beer on the wall.%5Cn%5Cn%22));%0A  %7D%0A%0A  private String getOutput() %7B%0A    return new String(bytes.toByteArray());%0A  %7D%0A%7D%0A

Add simple unit tests