package net.ttddyy.dsproxy.transform;
import net.ttddyy.dsproxy.proxy.ParameterKey;
import net.ttddyy.dsproxy.proxy.ParameterSetOperation;
import org.junit.Test;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
/**
* @author Tadaya Tsuyukubo
*/
public class ParameterReplacerTest {
@Test
public void testParamReplacement() {
Method method = null;
Map<ParameterKey, ParameterSetOperation> input = new LinkedHashMap<ParameterKey, ParameterSetOperation>();
input.put(new ParameterKey(1), new ParameterSetOperation(method, new Object[]{1, "value-1"}));
input.put(new ParameterKey(2), new ParameterSetOperation(method, new Object[]{2, "value-2"}));
input.put(new ParameterKey("foo"), new ParameterSetOperation(method, new Object[]{"foo", "value-foo"}));
input.put(new ParameterKey("bar"), new ParameterSetOperation(method, new Object[]{"bar", "value-bar"}));
ParameterReplacer replacer = new ParameterReplacer(input);
replacer.setString(1, "replaced-1");
replacer.setString("foo", "replaced-foo");
Map<ParameterKey, ParameterSetOperation> params = replacer.getModifiedParameters();
assertThat(params.keySet(), hasSize(4));
assertThat(params.keySet(), hasItems(new ParameterKey(1), new ParameterKey(2), new ParameterKey("foo"), new ParameterKey("bar")));
assertThat((String) params.get(new ParameterKey(1)).getArgs()[1], is("replaced-1"));
assertThat((String) params.get(new ParameterKey(2)).getArgs()[1], is("value-2"));
assertThat((String) params.get(new ParameterKey("foo")).getArgs()[1], is("replaced-foo"));
assertThat((String) params.get(new ParameterKey("bar")).getArgs()[1], is("value-bar"));
}
@Test
public void testClearParamAndReplace() {
Method method = null;
Map<ParameterKey, ParameterSetOperation> input = new LinkedHashMap<ParameterKey, ParameterSetOperation>();
input.put(new ParameterKey(1), new ParameterSetOperation(method, new Object[]{1, "value-1"}));
input.put(new ParameterKey(2), new ParameterSetOperation(method, new Object[]{2, "value-2"}));
input.put(new ParameterKey("foo"), new ParameterSetOperation(method, new Object[]{"foo", "value-foo"}));
input.put(new ParameterKey("bar"), new ParameterSetOperation(method, new Object[]{"bar", "value-bar"}));
ParameterReplacer replacer = new ParameterReplacer(input);
replacer.clearParameters();
replacer.setString(1, "replaced-1");
replacer.setString("foo", "replaced-foo");
Map<ParameterKey, ParameterSetOperation> params = replacer.getModifiedParameters();
assertThat(params.keySet(), hasSize(2));
assertThat(params.keySet(), hasItems(new ParameterKey(1), new ParameterKey("foo")));
assertThat((String) params.get(new ParameterKey(1)).getArgs()[1], is("replaced-1"));
assertThat((String) params.get(new ParameterKey("foo")).getArgs()[1], is("replaced-foo"));
}
}