Example #1
0
        /// <summary>
        /// Replaces all parameters in a parameterized text.
        /// </summary>
        /// <param name="parameterizedText">The parameterized text.</param>
        /// <param name="parameters">The parameters.</param>
        /// <returns>Text where all parameter references have been replaced with expected values</returns>
        private static string ReplaceParameters(ParameterizedString parameterizedText, TestResultParameterCollection parameters)
        {
            if (parameters.Count > 0)
            {
                SyncServiceTrace.D(Resources.ReplacingParameters, parameterizedText, string.Join(",", parameters.Select(x => x.Name + "=" + x.ExpectedValue)));
                foreach (var parameter in parameters)
                {
                    var oldParameterizedText = parameterizedText.ToPlainText();
                    parameterizedText = parameterizedText.ReplaceParameter(parameter.Name, parameter.ExpectedValue);

                    // I don't know why this fails sometimes, maybe because of special characters in the string like "foo: @paramter"
                    if (parameterizedText.ToPlainText().Equals(oldParameterizedText) && parameterizedText.ParameterNames.Contains(parameter.Name))
                    {
                        // manually replace parameter
                        SyncServiceTrace.W(Resources.ParameterizedStringFailed, parameter.Name, parameterizedText.ToPlainText(), parameter.ExpectedValue);
                        parameterizedText = new ParameterizedString(parameterizedText.ToPlainText().Replace("@" + parameter.Name, parameter.ExpectedValue));
                    }
                }
            }
            return(parameterizedText.ToPlainText());
        }