예제 #1
0
        public static TestName ReadTestName(XElement node)
        {
            if (!node.Name.LocalName.Equals("TestName"))
            {
                throw new InternalErrorException();
            }

            var builder  = new TestNameBuilder();
            var nameAttr = node.Attribute("Name");

            if (nameAttr != null)
            {
                builder.PushName(nameAttr.Value);
            }

            foreach (var child in node.Elements("Parameter"))
            {
                var name     = child.Attribute("Name").Value;
                var value    = child.Attribute("Value").Value;
                var isHidden = bool.Parse(child.Attribute("IsHidden").Value);
                builder.PushParameter(name, value, isHidden);
            }

            return(builder.GetName());
        }
예제 #2
0
        static InnerVerifier GetVerifier(string sourceFile, string method, VerifySettings?settings)
        {
            var methodInfo = TypeCache.GetInfo(sourceFile, method);
            var parameters = settings.GetParameters(methodInfo);

            var className = Path.GetFileNameWithoutExtension(sourceFile);
            var name      = TestNameBuilder.GetUniqueTestName(className, methodInfo, parameters);

            return(new InnerVerifier(name, sourceFile));
        }
예제 #3
0
    public async Task Split(
        bool hasExistingReceived,
        bool autoVerify)
    {
        TypeToSplit    initialTarget = new("info1", "value1", "value2");
        TypeToSplit    secondTarget  = new("info2", "value1.1", "value2.1");
        VerifySettings settings      = new();

        if (autoVerify)
        {
            settings.AutoVerify();
        }
        var uniqueTestName = TestNameBuilder.GetUniqueTestName(
            "Tests_Split",
            Info.OfMethod <Tests>("Split"),
            new object[] { hasExistingReceived, autoVerify });

        settings.UseParameters(hasExistingReceived, autoVerify);
        var      prefix       = Path.Combine(SourceDirectory, $"{uniqueTestName}.");
        var      danglingFile = $"{prefix}03.verified.txt";
        FilePair info         = new("txt", $"{prefix}info");
        FilePair file1        = new("txt", $"{prefix}00");
        FilePair file2        = new("txt", $"{prefix}01");

        DeleteAll(danglingFile, info.Received, info.Verified, file1.Verified, file1.Received, file2.Verified, file2.Received);
        File.WriteAllText(danglingFile, "");

        if (hasExistingReceived)
        {
            File.WriteAllText(info.Received, "");
            File.WriteAllText(file1.Received, "");
            File.WriteAllText(file2.Received, "");
        }

        await InitialVerifySplit(initialTarget, true, settings, info, file1, file2);

        if (!autoVerify)
        {
            RunClipboardCommand();
        }

        AssertNotExists(danglingFile);

        await ReVerifySplit(initialTarget, settings, info, file1, file2);

        await InitialVerifySplit(secondTarget, true, settings, info, file1, file2);

        if (!autoVerify)
        {
            RunClipboardCommand();
        }

        await ReVerifySplit(secondTarget, settings, info, file1, file2);
    }
예제 #4
0
        static DisposableVerifier BuildVerifier(string sourceFile)
        {
            Guard.AgainstNullOrEmpty(sourceFile, nameof(sourceFile));
            var context     = TestContext.CurrentContext;
            var testAdapter = context.Test;
            var test        = (Test)field.GetValue(testAdapter);

            var testType       = test.TypeInfo.Type;
            var uniqueTestName = TestNameBuilder.GetUniqueTestName(testType, test.Method.MethodInfo, testAdapter.Arguments);

            return(new DisposableVerifier(testType, Path.GetDirectoryName(sourceFile), uniqueTestName));
        }
예제 #5
0
        static InnerVerifier BuildVerifier(string sourceFile)
        {
            Guard.AgainstNullOrEmpty(sourceFile, nameof(sourceFile));
            var context = TestContext.CurrentContext;
            var adapter = context.Test;
            var test    = (Test)field.GetValue(adapter) !;

            var method = test.Method.MethodInfo;
            var name   = TestNameBuilder.GetUniqueTestName(Path.GetFileNameWithoutExtension(sourceFile), method, adapter.Arguments);

            return(new InnerVerifier(name, sourceFile, test.TypeInfo.Assembly));
        }
예제 #6
0
        static InnerVerifier GetVerifier(string sourceFile, VerifySettings?settings)
        {
            var className = Path.GetFileNameWithoutExtension(sourceFile);

            if (!UsesVerifyAttribute.TryGet(out var info))
            {
                throw new XunitException($"Expected to find a `[UsesVerify]` on `{className}`.");
            }

            var parameters = settings.GetParameters(info);

            var name = TestNameBuilder.GetUniqueTestName(className, info, parameters);

            return(new InnerVerifier(name, sourceFile, info.DeclaringType !.Assembly));
        }
예제 #7
0
        static InnerVerifier GetVerifier(VerifySettings settings, string sourceFile)
        {
            if (!UsesVerifyAttribute.TryGet(out var info))
            {
                var fileName = Path.GetFileName(sourceFile);
                throw new Exception($"Expected to find a `[UsesVerify]` on test class. File: {fileName}.");
            }

            var className = Path.GetFileNameWithoutExtension(sourceFile);

            var parameters = settings.GetParameters(info);

            var name = TestNameBuilder.GetUniqueTestName(className, info, parameters);

            return(new(name, sourceFile, info.DeclaringType !.Assembly, settings));
        }
예제 #8
0
파일: VerifyBase.cs 프로젝트: jawn/Verify
        InnerVerifier BuildVerifier(string sourceFile, VerifySettings?settings)
        {
            Guard.AgainstNullOrEmpty(sourceFile, nameof(sourceFile));
            var type = GetType();

            var methodInfo = type.GetMethod(TestContext.TestName, BindingFlags.Instance | BindingFlags.Public);

            if (methodInfo == null)
            {
                throw new Exception($"Could not find method `{type.Name}.{TestContext.TestName}`");
            }

            var parameters     = settings.GetParameters(methodInfo);
            var uniqueTestName = TestNameBuilder.GetUniqueTestName(type, methodInfo, parameters);

            return(new InnerVerifier(uniqueTestName, sourceFile, type.Assembly));
        }
예제 #9
0
파일: Tests_Single.cs 프로젝트: jawn/Verify
    public async Task Text(
        bool hasExistingReceived,
        bool autoVerify)
    {
        var uniqueTestName = TestNameBuilder.GetUniqueTestName("Tests_Single", Info.OfMethod <Tests>("Text"), new object[] { hasExistingReceived, autoVerify });
        var settings       = new VerifySettings();

        settings.UseParameters(hasExistingReceived, autoVerify);
        await RunTest(
            "txt",
            () => "someText",
            () => "someOtherText",
            hasMatchingDiffTool : true,
            hasExistingReceived,
            autoVerify,
            settings,
            uniqueTestName);
    }
예제 #10
0
        InnerVerifier BuildVerifier(VerifySettings settings, string sourceFile)
        {
            var type = GetType();

            var methodInfo = type
                             .GetMethods(BindingFlags.Instance | BindingFlags.Public)
                             .FirstOrDefault(x => x.Name == TestContext.TestName);

            if (methodInfo == null)
            {
                throw new($"Could not find method `{type.Name}.{TestContext.TestName}`");
            }

            var parameters     = settings.GetParameters(methodInfo);
            var uniqueTestName = TestNameBuilder.GetUniqueTestName(type, methodInfo, parameters);

            return(new(uniqueTestName, sourceFile, type.Assembly, settings));
        }
예제 #11
0
        static TestName GetTestName(TestHost host, TestPath parent, ITestParameter parameter = null)
        {
            var builder = new TestNameBuilder();

            if (parent != null)
            {
                builder.Merge(parent.name);
            }
            if (host.Name != null)
            {
                if (parameter != null && ((host.Flags & TestFlags.PathHidden) == 0))
                {
                    builder.PushParameter(host.Name, parameter.Value, (host.Flags & TestFlags.Hidden) != 0);
                }
                else if ((host.Flags & TestFlags.Hidden) == 0)
                {
                    builder.PushName(host.Name);
                }
            }
            return(builder.GetName());
        }
예제 #12
0
파일: Tests_Single.cs 프로젝트: jawn/Verify
    public async Task Stream(
        bool hasMatchingDiffTool,
        bool hasExistingReceived,
        bool autoVerify)
    {
        var extension = hasMatchingDiffTool ? "knownBin" : "unknownBin";

        var uniqueTestName = TestNameBuilder.GetUniqueTestName("Tests_Single", Info.OfMethod <Tests>("Stream"), new object[] { hasMatchingDiffTool, hasExistingReceived, autoVerify });
        var settings       = new VerifySettings();

        settings.UseParameters(hasMatchingDiffTool, hasExistingReceived, autoVerify);
        await RunTest(
            extension : extension,
            () => new MemoryStream(new byte[] { 1 }),
            () => new MemoryStream(new byte[] { 2 }),
            hasMatchingDiffTool,
            hasExistingReceived,
            autoVerify,
            settings,
            uniqueTestName);
    }