package org.netbeans.gradle.project.tasks.vars;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.netbeans.gradle.project.api.task.TaskVariable;
import org.netbeans.gradle.project.api.task.TaskVariableMap;
import static org.junit.Assert.*;
public final class VariableResolversTest {
private static TaskVariableMap variableMap(Map<DisplayedTaskVariable, String> map) {
return DisplayedTaskVariable.variableMap(map);
}
private DisplayedTaskVariable createVar(String name) {
return new DisplayedTaskVariable(new TaskVariable(name), name, VariableTypeDescription.DEFAULT_TYPE);
}
private DisplayedTaskVariable createVar(String name, String displayName) {
return new DisplayedTaskVariable(new TaskVariable(name), displayName, VariableTypeDescription.DEFAULT_TYPE);
}
private static String replaceVars(
String str,
TaskVariableMap varReplaceMap) {
return VariableResolvers.getDefault().replaceVars(str, varReplaceMap);
}
public static String replaceVars(
String str,
TaskVariableMap varReplaceMap,
Collection<? super DisplayedTaskVariable> collectedVariables) {
return VariableResolvers.getDefault().replaceVars(str, varReplaceMap, collectedVariables);
}
@Test
public void testReplaceVars_String_TaskVariableMap() {
DisplayedTaskVariable var1 = createVar("var1");
String replaceStr = "testReplaceVars_String_TaskVariableMap";
TaskVariableMap varMap = variableMap(Collections.singletonMap(var1, replaceStr));
String resultStr = replaceVars(var1.getScriptReplaceConstant(), varMap);
assertEquals(replaceStr, resultStr);
}
@Test
public void testReplaceVars_3args() {
DisplayedTaskVariable var1 = createVar("var1");
DisplayedTaskVariable var2 = createVar("var2");
DisplayedTaskVariable var3 = createVar("var3", "display");
DisplayedTaskVariable var4 = createVar("var4");
String str = var1.getScriptReplaceConstant()
+ " SEPARATOR1 "
+ "${unknown-var}${illegal-chars*-=\\}}}}}"
+ var2.getScriptReplaceConstant()
+ var3.getScriptReplaceConstant()
+ " SEPARATOR2 "
+ var4.getScriptReplaceConstant();
Map<DisplayedTaskVariable, String> valueMap = new HashMap<>();
valueMap.put(var1, "VALUE1");
valueMap.put(var2, "VALUE2");
valueMap.put(var3, "VALUE3");
valueMap.put(var4, "VALUE4");
List<DisplayedTaskVariable> foundVars = new LinkedList<>();
String resultStr = replaceVars(str, variableMap(valueMap), foundVars);
assertEquals("VALUE1 SEPARATOR1 ${unknown-var}${illegal-chars*-=\\}}}}}VALUE2VALUE3 SEPARATOR2 VALUE4",
resultStr);
}
}