System.Xml.Tests.ExceptionVerifier.ConstructExpectedMessage C# (CSharp) Method

ConstructExpectedMessage() public method

public ConstructExpectedMessage ( object IdsAndParams ) : string
IdsAndParams object
return string
        public string ConstructExpectedMessage(object[] IdsAndParams)
        {
            var lineInfoMessage = "";
            var paramList = new ArrayList();
            var paramsStartPosition = 1;

            // Verify that input list contains at least one element - ResId
            if (IdsAndParams.Length == 0 || !(IdsAndParams[0] is string))
                throw new VerifyException("ResID at IDsAndParams[0] missing!");
            string expectedResId = (IdsAndParams[0] as string);

            // Verify that resource id exists in resources
            if (!_resources.ContainsKey(expectedResId))
            {
                ExceptionInfoOutput();
                throw new VerifyException("Resources in [" + _asm.GetName().Name + "] does not contain string resource: " + expectedResId);
            }

            // If LineInfo exist, construct LineInfo message
            if (IdsAndParams.Length > 1 && (IdsAndParams[1] is LineInfo))
            {
                if (!IgnoreLineInfo)
                {
                    var lineInfo = (IdsAndParams[1] as LineInfo);

                    // Xml_ErrorPosition = "Line {0}, position {1}."
                    lineInfoMessage = String.IsNullOrEmpty(lineInfo.FilePath) ? _resources["Xml_ErrorPosition"].ToString() : _resources["Xml_ErrorFilePosition"].ToString();

                    var lineNumber = lineInfo.LineNumber.ToString();
                    var linePosition = lineInfo.LinePosition.ToString();
                    lineInfoMessage = String.IsNullOrEmpty(lineInfo.FilePath) ? String.Format(lineInfoMessage, lineNumber, linePosition) : String.Format(lineInfoMessage, lineInfo.FilePath, lineNumber, linePosition);
                }
                else
                    lineInfoMessage = ESCAPE_ANY;

                lineInfoMessage = " " + lineInfoMessage;
                paramsStartPosition = 2;
            }

            string message = _resources[expectedResId].ToString();
            for (var i = paramsStartPosition; i < IdsAndParams.Length; i++)
            {
                if (IdsAndParams[i] is object[])
                    paramList.Add(ConstructExpectedMessage(IdsAndParams[i] as object[]));
                else
                {
                    if (IdsAndParams[i] == null)
                        paramList.Add(ESCAPE_ANY);
                    else
                        paramList.Add(IdsAndParams[i] as string);
                }
            }

            try
            {
                message = string.Format(message, paramList.ToArray());
            }
            catch (FormatException)
            {
                throw new VerifyException("Mismatch in number of parameters!");
            }

            return message + lineInfoMessage;
        }
    }