package rabbitescape.engine.config;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.CoreMatchers.*;
import org.junit.Test;
import rabbitescape.engine.util.FakeFileSystem;
public class TestConfigFile
{
@Test
public void You_get_back_the_value_you_set()
{
ConfigFile cfg = new ConfigFile( null, null );
// Sanity
assertThat( cfg.get( "key1" ), is( nullValue() ) );
// This is what we are testing
cfg.set( "key1", "setValue1" );
// What you set stuck
assertThat( cfg.get( "key1" ), equalTo( "setValue1" ) );
}
@Test
public void Loading_from_existing_file_provides_loaded_values()
{
String fileName = "~/.rabbitescape/config/ui.properties";
FakeFileSystem fs = new FakeFileSystem(
fileName,
new String[] {
"key1=my value 1",
"key3=my value 3"
}
);
ConfigFile cfg = new ConfigFile( fs, fileName );
assertThat( cfg.get( "key1" ), equalTo( "my value 1" ) );
assertThat( cfg.get( "key2" ), is( nullValue() ) );
assertThat( cfg.get( "key3" ), equalTo( "my value 3" ) );
}
@Test
public void Saving_saves_values_and_defaults_and_adds_comments()
throws Exception
{
String fileName = "~/.rabbitescape/config/ui.properties";
FakeFileSystem fs = new FakeFileSystem();
ConfigFile cfg = new ConfigFile( fs, fileName );
cfg.set( "key2", "my value 2" );
// Sanity
assertThat( fs.exists( "~/.rabbitescape/config" ), is( false ) );
assertThat( fs.exists( fileName ), is( false ) );
cfg.save( new Config( TestConfig.simpleSchema(), cfg ) );
assertThat( fs.exists( "~" ), is( true ) );
assertThat( fs.exists( "~/.rabbitescape" ), is( true ) );
assertThat( fs.exists( "~/.rabbitescape/config" ), is( true ) );
assertThat(
fs.readLines( fileName ),
equalTo(
new String[] {
"# The version of this config file.",
"#config.version=0",
"",
"# desc1",
"#key1=defaultValue1",
"",
"# desc2",
"key2=my value 2",
"",
"# desc3",
"#key3=defaultValue3"
}
)
);
}
}