示例#1
0
        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;
                        }
                    }
示例#2
0
        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);
        }