public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { JoinMacroConfig config = rawConfig as JoinMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as ConcatenationMacroConfig"); } List <string> values = new List <string>(); foreach (KeyValuePair <string, string> symbol in config.Symbols) { switch (symbol.Key) { case "ref": string value; if (!vars.TryGetValue(symbol.Value, out object working)) { if (parameters.TryGetRuntimeValue(environmentSettings, symbol.Value, out object resolvedValue, true)) { value = resolvedValue.ToString(); } else { value = string.Empty; } }
public void TestJoinConstantAndReferenceSymbolConfig(string separator, bool removeEmptyValues) { string variableName = "joinedParameter"; string referenceSymbolName = "referenceSymbol"; string referenceSymbolValue = "referenceValue"; string referenceEmptySymbolName = "referenceEmptySymbol"; string constantValue = "constantValue"; List <KeyValuePair <string, string> > definitions = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("const", constantValue), new KeyValuePair <string, string>("ref", referenceEmptySymbolName), new KeyValuePair <string, string>("ref", referenceSymbolName) }; JoinMacroConfig macroConfig = new JoinMacroConfig(variableName, null, definitions, separator, removeEmptyValues); IVariableCollection variables = new VariableCollection(); IRunnableProjectConfig config = A.Fake <IRunnableProjectConfig>(); IParameterSet parameters = new RunnableProjectGenerator.ParameterSet(config); ParameterSetter setter = MacroTestHelpers.TestParameterSetter(_engineEnvironmentSettings, parameters); Parameter referenceParam = new Parameter { IsVariable = true, Name = referenceSymbolName }; variables[referenceSymbolName] = referenceSymbolValue; setter(referenceParam, referenceSymbolValue); JoinMacro macro = new JoinMacro(); macro.EvaluateConfig(_engineEnvironmentSettings, variables, macroConfig, parameters, setter); Assert.True(parameters.TryGetParameterDefinition(variableName, out ITemplateParameter convertedParam)); string convertedValue = (string)parameters.ResolvedValues[convertedParam]; string expectedValue = removeEmptyValues ? string.Join(separator, constantValue, referenceSymbolValue) : string.Join(separator, constantValue, null, referenceSymbolValue); Assert.Equal(convertedValue, expectedValue); }