package rabbitescape.engine.util;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.CoreMatchers.*;
import static rabbitescape.engine.util.NamedFieldFormatter.*;
import static rabbitescape.engine.util.Util.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
public class TestNamedFieldFormatter
{
@Test
public void Empty_string_comes_out_empty()
{
assertThat( format( "", map() ), equalTo( "" ) );
}
@Test
public void No_substitutions_returns_format_string()
{
assertThat( format( "a b c", map() ), equalTo( "a b c" ) );
}
@Test
public void Substitute_each_param_once()
{
assertThat(
format( "a ${b}${cc}", map( "b", "BBB", "cc", "C" ) ),
equalTo( "a BBBC" )
);
}
@Test
public void Substitute_some_params_multiple_times()
{
assertThat(
format( "${cc}a ${b}${cc}${cc}", map( "b", "BBB", "cc", "C" ) ),
equalTo( "Ca BBBCC" )
);
}
@Test
public void Substitute_with_values_containing_special_characters()
{
assertThat(
format( "${cc}a ${b}${cc}${cc}", map( "b", "\\", "cc", "C$D" ) ),
equalTo( "C$Da \\C$DC$D" )
);
}
private static Map<String, Object> map( Object... keysAndValues )
{
HashMap<String, Object> ret = new HashMap<>();
reAssert( keysAndValues.length % 2 == 0 );
for ( int i = 0; i < keysAndValues.length; i += 2 )
{
ret.put( (String)keysAndValues[ i ], keysAndValues[ i + 1 ] );
}
return ret;
}
}