| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | // Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the Apache 2.0 License.// See the LICENSE file in the project root for more information. using ApprovalTests.Core;using DiffPlex;using DiffPlex.DiffBuilder;using DiffPlex.DiffBuilder.Model;using System.IO;using Xunit.Abstractions;namespace ReactiveTests.Tests{    public class DiffPlexReporter : IApprovalFailureReporter    {        public static DiffPlexReporter INSTANCE = new DiffPlexReporter();        public ITestOutputHelper Output { get; set; }        public void Report(string approved, string received)        {            var approvedText = File.Exists(approved) ? File.ReadAllText(approved) : string.Empty;            var receivedText = File.ReadAllText(received);            var diffBuilder = new InlineDiffBuilder(new Differ());            var diff = diffBuilder.BuildDiffModel(approvedText, receivedText);            foreach (var line in diff.Lines)            {                if (line.Type == ChangeType.Unchanged) continue;                var prefix = "  ";                switch (line.Type)                {                    case ChangeType.Inserted:                        prefix = "+ ";                        break;                    case ChangeType.Deleted:                        prefix = "- ";                        break;                }                Output.WriteLine("{0}{1}", prefix, line.Text);            }        }    }}
 |