Esempio n. 1
0
        public void TestCreateMatchMethodsForClosedGenericFSharpDiscriminatedUnion()
        {
            //Arrange
            var methodsClassCode =
                @"[CreateMatchMethods(typeof(DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>))]
public static class Methods
{

}";

            var expectedMethodsClassCodeAfterRefactoring =
                @"[CreateMatchMethods(typeof (DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>))]
public static class Methods
{
    public static TResult Match<TResult>(
        this DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String> instance,
        System.Func<DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>.Option1, TResult> option1Case,
        System.Func<TResult> option2Case)
    {
        if (instance is DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>.Option1 option1)
            return option1Case(option1);
        if (instance.IsOption2)
            return option2Case();
        throw new System.Exception(""Invalid GenericFSharpDiscriminatedUnion type"");
    }

    public static void Match(
        this DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String> instance,
        System.Action<DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>.Option1> option1Case,
        System.Action option2Case)
    {
        if (instance is DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpDiscriminatedUnion<System.String>.Option1 option1)
        {
            option1Case(option1);
            return;
        }

        if (instance.IsOption2)
        {
            option2Case();
            return;
        }

        throw new System.Exception(""Invalid GenericFSharpDiscriminatedUnion type"");
    }
}";
            var content = Utilities.MergeParts(createMatchMethodsAttributeCode, methodsClassCode);

            var expectedContentAfterRefactoring = Utilities.NormalizeCode(
                Utilities.MergeParts(createMatchMethodsAttributeCode, expectedMethodsClassCodeAfterRefactoring));

            //Act
            var actualContentAfterRefactoring = Utilities.NormalizeCode(Utilities.ApplyRefactoring(
                content,
                SelectSpanWhereCreateMatchMethodsAttributeIsApplied, Utilities.GetFsharpTestProjectReference()));

            //Assert
            Assert.AreEqual(expectedContentAfterRefactoring, actualContentAfterRefactoring);
        }
Esempio n. 2
0
        public void TestCreateWithMethodsForFSharpDiscriminatedUnionGeneratesMethodsForCases()
        {
            //Arrange
            var methodsClassCode =
                @"[CreateWithMethods(typeof(DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion))]
public static class Methods
{

}";

            var expectedMethodsClassCodeAfterRefactoring =
                @"[CreateWithMethods(typeof(DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion))]
public static class Methods
{
    public static DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1 WithAge(
        this DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1 instance,
        System.Int32 newValue)
    {
        return (DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1)DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.NewOption1(age: newValue, name: instance.Name);
    }

    public static DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1 WithName(
        this DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1 instance,
        System.String newValue)
    {
        return (DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.Option1)DataObjectHelper.Tests.FSharpProject.Module.FSharpDiscriminatedUnion.NewOption1(age: instance.Age, name: newValue);
    }
}";
            var content =
                Utilities.MergeParts(
                    createWithMethodsAttributeCode, methodsClassCode);

            var expectedContentAfterRefactoring =
                Utilities.NormalizeCode(
                    Utilities.MergeParts(
                        createWithMethodsAttributeCode,
                        expectedMethodsClassCodeAfterRefactoring));

            //Act
            var actualContentAfterRefactoring =
                Utilities.NormalizeCode(
                    Utilities.ApplyRefactoring(
                        content,
                        SelectSpanWhereCreateWithMethodsAttributeIsApplied,
                        Utilities.GetFsharpTestProjectReference()));

            //Assert
            Assert.AreEqual(expectedContentAfterRefactoring, actualContentAfterRefactoring);
        }
Esempio n. 3
0
        public void TestCreateWithMethodsForOpenGenericFSharpRecords()
        {
            //Arrange
            var methodsClassCode =
                @"[CreateWithMethods(typeof(DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<>))]
public static class Methods
{

}";

            var expectedMethodsClassCodeAfterRefactoring =
                @"[CreateWithMethods(typeof(DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<>))]
public static class Methods
{
    public static DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a> WithAge<a>(
        this DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a> instance,
        System.Int32 newValue)
    {
        return new DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a>(age: newValue, name: instance.Name);
    }

    public static DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a> WithName<a>(
        this DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a> instance,
        a newValue)
    {
        return new DataObjectHelper.Tests.FSharpProject.Module.GenericFSharpRecord<a>(age: instance.Age, name: newValue);
    }
}";
            var content =
                Utilities.MergeParts(
                    createWithMethodsAttributeCode, methodsClassCode);

            var expectedContentAfterRefactoring =
                Utilities.NormalizeCode(
                    Utilities.MergeParts(
                        createWithMethodsAttributeCode,
                        expectedMethodsClassCodeAfterRefactoring));

            //Act
            var actualContentAfterRefactoring =
                Utilities.NormalizeCode(
                    Utilities.ApplyRefactoring(
                        content,
                        SelectSpanWhereCreateWithMethodsAttributeIsApplied,
                        Utilities.GetFsharpTestProjectReference()));

            //Assert
            Assert.AreEqual(expectedContentAfterRefactoring, actualContentAfterRefactoring);
        }