示例#1
0
        async Task VerifyInfo(VerifyEngine engine, VerifySettings settings, object?info)
        {
            if (info == null)
            {
                return;
            }

            var file = GetFileNames("txt", settings.Namer, "info");

            var builder = JsonFormatter.AsJson(
                info,
                settings.serialization.currentSettings,
                settings.IsNewLineEscapingDisabled);

            ApplyScrubbers.Apply(builder, settings.instanceScrubbers);

            var result = await Comparer.Text(file, builder, settings);

            engine.HandleCompareResult(result, file);
        }
        static async Task <EqualityResult> GetResult(VerifySettings settings, FilePair filePair, Target target)
        {
            if (target.IsString)
            {
                var builder = new StringBuilder(target.StringData);
                ApplyScrubbers.Apply(target.Extension, builder, settings);
                return(await Comparer.Text(filePair, builder.ToString(), settings));
            }

            var stream = target.StreamData;

#if NETSTANDARD2_0 || NETFRAMEWORK
            using (stream)
#else
            await using (stream)
#endif
            {
                stream.MoveToStart();
                return(await Comparer.Streams(settings, stream, filePair));
            }
        }
示例#3
0
        static async Task <EqualityResult> GetResult(VerifySettings settings, FilePair filePair, ConversionStream conversionStream)
        {
            if (conversionStream.IsData)
            {
                var builder = new StringBuilder(conversionStream.Data);
                ApplyScrubbers.Apply(builder, settings.instanceScrubbers);
                return(await Comparer.Text(filePair, builder.ToString(), settings));
            }

            var stream = conversionStream.Stream;

#if NETSTANDARD2_0 || NETFRAMEWORK
            using (stream)
#else
            await using (stream)
#endif
            {
                stream.MoveToStart();
                return(await Comparer.Streams(settings, stream, filePair));
            }
        }
示例#4
0
        static async Task <EqualityResult> GetResult(VerifySettings settings, FilePair filePair, ConversionStream conversionStream)
        {
            var stream = conversionStream.Stream;

#if NETSTANDARD2_0 || NETFRAMEWORK
            using (stream)
#else
            await using (stream)
#endif
            {
                stream.MoveToStart();
                if (!EmptyFiles.Extensions.IsText(conversionStream.Extension))
                {
                    return(await Comparer.Streams(settings, stream, filePair));
                }

                var builder = await stream.ReadAsString();

                ApplyScrubbers.Apply(builder, settings.instanceScrubbers);
                return(await Comparer.Text(filePair, builder, settings));
            }
        }
        public static void SchemaSettings(
            this VerifySettings settings,
            bool storedProcedures           = true,
            bool tables                     = true,
            bool views                      = true,
            bool userDefinedFunctions       = true,
            bool synonyms                   = true,
            Func <string, bool>?includeItem = null)
        {
            Guard.AgainstNull(settings, nameof(settings));
            includeItem ??= _ => true;

            settings.Context.Add(
                "SqlServer",
                new SchemaSettings(
                    storedProcedures,
                    tables,
                    views,
                    userDefinedFunctions,
                    synonyms,
                    includeItem));
        }
示例#6
0
        public InnerVerifier(string testName, string sourceFile, Assembly assembly, VerifySettings settings)
        {
            var projectDirectory = AttributeReader.GetProjectDirectory(assembly);

            directory     = VerifierSettings.DeriveDirectory(sourceFile, projectDirectory);
            this.testName = testName;
            this.assembly = assembly;
            this.settings = settings;

            var altProjectDirectory        = projectDirectory.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
            var altProjectDirectoryTrimmed = altProjectDirectory.TrimEnd('/', '\\');
            var projectDirectoryTrimmed    = projectDirectory.TrimEnd('/', '\\');

            settings.instanceScrubbers.Add(builder =>
            {
                builder.Replace(projectDirectory, "{ProjectDirectory}");
                builder.Replace(projectDirectoryTrimmed, "{ProjectDirectory}");
                builder.Replace(altProjectDirectory, "{ProjectDirectory}");
                builder.Replace(altProjectDirectoryTrimmed, "{ProjectDirectory}");
            });

            if (AttributeReader.TryGetSolutionDirectory(assembly, out var solutionDirectory))
            {
                var altSolutionDirectory        = solutionDirectory !.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
                var altSolutionDirectoryTrimmed = altSolutionDirectory.TrimEnd('/', '\\');
                var solutionDirectoryTrimmed    = solutionDirectory.TrimEnd('/', '\\');
                settings.instanceScrubbers.Add(builder =>
                {
                    builder.Replace(solutionDirectory, "{SolutionDirectory}");
                    builder.Replace(solutionDirectoryTrimmed, "{SolutionDirectory}");
                    builder.Replace(altSolutionDirectory, "{SolutionDirectory}");
                    builder.Replace(altSolutionDirectoryTrimmed, "{SolutionDirectory}");
                });
            }


            CounterContext.Start();
        }
示例#7
0
        public static object?[] GetParameters(this VerifySettings settings, MethodInfo methodInfo)
        {
            var settingsParameters = settings.ParametersOrDefault();
            var methodParameters   = methodInfo.GetParameters();

            if (!methodParameters.Any() || settingsParameters.Any())
            {
                return(settingsParameters);
            }

            var names = string.Join(", ", methodParameters.Select(x => x.Name));

            throw new($@"Method `{methodInfo.DeclaringType!.Name}.{methodInfo.Name}` requires parameters, but none have been defined. Add UseParameters. For example:

VerifySettings settings = new();
settings.UseParameters({names});
await Verifier.Verify(target, settings);

or

await Verifier.Verify(target).UseParameters({names});
");
        }
示例#8
0
        async Task VerifyStream(VerifySettings settings, Stream stream)
        {
#if NETSTANDARD2_1
            await using (stream)
#else
            using (stream)
#endif
            {
                if (settings.HasExtension())
                {
                    if (VerifierSettings.TryGetExtensionConverter(settings.extension !, out var conversion))
                    {
                        var result = await conversion(stream, settings);
                        await VerifyBinary(result.Streams, settings.ExtensionOrTxt(), settings, result.Info, result.Cleanup);

                        return;
                    }
                }

                await VerifyBinary(new List <ConversionStream> {
                    new ConversionStream(settings.ExtensionOrBin(), stream)
                }, settings.ExtensionOrBin(), settings, null, null);
            }
        }
示例#9
0
        async Task VerifyBinary(IEnumerable <ConversionStream> streams, string infoExtension, VerifySettings settings, object?info, Func <Task>?cleanup)
        {
            var engine = new VerifyEngine(
                infoExtension,
                settings,
                directory,
                testName,
                assembly);
            var list = streams.ToList();

            await VerifyInfo(engine, settings, info);

            for (var index = 0; index < list.Count; index++)
            {
                var conversionStream = list[index];
                var file             = GetFileForIndex(settings, list, index, conversionStream.Extension);

                var result = await GetResult(settings, file, conversionStream);

                engine.HandleCompareResult(result, file);
            }

            if (cleanup != null)
            {
                await cleanup.Invoke();
            }
            await engine.ThrowIfRequired();
        }
示例#10
0
 public static void AngleSharpDiffingSettings(
     this VerifySettings settings,
     Action <IDiffingStrategyCollection> options)
 {
     settings.Context["AngleSharpDiffing"] = new CompareSettings(options);
 }
示例#11
0
 public static void UseParameters(this VerifySettings settings, params object?[] parameters)
 {
     Guard.AgainstNull(settings, nameof(settings));
     Guard.AgainstNullOrEmpty(parameters, nameof(parameters));
     settings.Context["Parameters"] = parameters;
 }