/// <summary> /// Displays the string differences. /// </summary> /// <param name="writer">The writer.</param> /// <param name="expected">The expected.</param> /// <param name="actual">The actual.</param> private void DisplayStringDifferences(MessageWriter writer, string expected, string actual) { int mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, CaseInsensitive); if (expected.Length == actual.Length) { writer.WriteMessageLine(Resources.StringsDiffer_1, expected.Length, mismatch); } else { writer.WriteMessageLine(Resources.StringsDiffer_2, expected.Length, actual.Length, mismatch); } writer.DisplayStringDifferences(expected, actual, mismatch, CaseInsensitive); }
public override void WriteMessageTo(MessageWriter writer) { if (_expected == null || _actual == null) { base.WriteMessageTo(writer); } else { writer.DisplayStringDifferences( string.Format("{{ {0} , {1} }}", _expected.First, _expected.Second), string.Format("{{ {0} , {1} }}", _actual.First, _actual.Second), -1, false, false); } }
public override void WriteActualValueTo(MessageWriter writer) { //IF actual is not empty it means we've an issue with Casing or a space at the end if (actual is IEnumerable <IField> && ((IEnumerable <IField>)actual).Count() == 1) { if (((IEnumerable <IField>)actual).ToArray()[0].Caption.ToLowerInvariant() == Expected.ToLowerInvariant()) { writer.WriteActualValue(string.Format("< <{0}> > (case not matching)", ((IEnumerable <IField>)actual).ToArray()[0].Caption)); } else if (((IEnumerable <IField>)actual).ToArray()[0].Caption.EndsWith(" ")) { writer.WriteActualValue(string.Format("< <{0}> > (with ending space(s))", ((IEnumerable <IField>)actual).ToArray()[0].Caption)); } else { writer.WriteActualValue(string.Format("< <{0}> > (small difference)", ((IEnumerable <IField>)actual).ToArray()[0].Caption)); } } else { Investigate(); if (actual is IEnumerable <IField> && ((IEnumerable <IField>)actual).Count() > 0) { base.WriteActualValueTo(writer); } else { writer.WriteActualValue(new WriterHelper.NothingFoundMessage()); } var closeMatch = GetCloseMatch(); if (!string.IsNullOrEmpty(closeMatch)) { writer.WriteMessageLine(""); writer.WriteMessageLine(""); writer.WriteMessageLine(string.Format("The value '{0}' is close to your expectation.", closeMatch)); writer.DisplayStringDifferences(Expected, closeMatch, -1, false, true); } } }