package rabbitescape.ui.text;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.CoreMatchers.*;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.Locale;
import org.junit.Test;
import rabbitescape.engine.IgnoreLevelWinListener;
import rabbitescape.engine.util.FakeFileSystem;
import rabbitescape.engine.util.FileSystem;
import rabbitescape.engine.util.NothingExistsFileSystem;
public class TestMain
{
@Test
public void File_reading_errors_are_reported()
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
FileSystem fs = new NothingExistsFileSystem();
TextSingleGameEntryPoint main = new TextSingleGameEntryPoint(
fs, new PrintStream( out ), Locale.ENGLISH );
int status = main.launchGame(
new String[] { "file1" }, new IgnoreLevelWinListener() );
assertThat( status, not( equalTo( 0 ) ) );
assertThat(
out.toString(),
equalTo(
"File 'file1' does not exist.\n"
+ "Unable to load world file 'file1'.\n"
)
);
}
@Test
public void Bad_level_syntax_errors_are_reported()
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
String[] badLevel = new String[] { "##", "#" };
FileSystem fs = new FakeFileSystem( "file1", badLevel );
TextSingleGameEntryPoint main = new TextSingleGameEntryPoint(
fs, new PrintStream( out ), Locale.ENGLISH );
int status = main.launchGame(
new String[] { "file1" }, new IgnoreLevelWinListener() );
assertThat( status, not( equalTo( 0 ) ) );
assertThat(
out.toString(),
equalTo(
"Line number 2 (#) has the wrong length in text world lines:\n"
+ "##\n"
+ "#\n"
+ "Unable to load world file 'file1'.\n"
)
);
}
@Test
public void Bad_level_character_syntax_errors_are_reported()
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
String[] badLevel = new String[] { "##", "#z" };
FileSystem fs = new FakeFileSystem( "file1", badLevel );
TextSingleGameEntryPoint main = new TextSingleGameEntryPoint(
fs, new PrintStream( out ), Locale.ENGLISH );
int status = main.launchGame(
new String[] { "file1" }, new IgnoreLevelWinListener() );
assertThat( status, not( equalTo( 0 ) ) );
assertThat(
out.toString(),
equalTo(
"Line number 2 contains an unknown character 'z' "
+ "in text world lines:\n"
+ "##\n"
+ "#z\n"
+ "Unable to load world file 'file1'.\n"
)
);
}
}