package rabbitescape.engine;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.*;
import rabbitescape.engine.util.NamedFieldFormatter;
import java.util.HashMap;
import java.util.Map;
import static rabbitescape.engine.util.Util.*;
public class CallTracker
{
StringBuffer calls = new StringBuffer();
public void track( String method, Object... arguments )
{
Map<String, Object> map = new HashMap<>();
map.put( "method", method );
map.put(
"arguments",
join(
",",
map( stringify(), arguments, new String[ 0 ] )
)
);
calls.append(
NamedFieldFormatter.format( "${method}(${arguments})\n", map )
);
}
private Function<Object, String> stringify()
{
return new Function<Object, String>()
{
@Override
public String apply( Object input )
{
return input.toString();
}
};
}
public void assertCalls( String... expected )
{
if ( expected.length == 0 )
{
assertThat( calls.toString(), equalTo( "" ) );
}
else
{
assertThat(
calls.toString(), equalTo( join( "\n", expected ) + "\n" ) );
}
}
}