public void IsValid_Lambda() { var context = CreateContext(); var descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(invocation => invocation != null); descriptor.IsValid(null).Should().BeFalse(); descriptor.IsValid(context.Node as InvocationExpressionSyntax).Should().BeTrue(); }
public void IsValid_Literal() { var context = CreateContext(); var trueDescriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true); trueDescriptor.IsValid(null).Should().BeTrue(); trueDescriptor.IsValid(context.Node as InvocationExpressionSyntax).Should().BeTrue(); var falseDescriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(false); falseDescriptor.IsValid(null).Should().BeFalse(); falseDescriptor.IsValid(context.Node as InvocationExpressionSyntax).Should().BeFalse(); }
public void IsInvalidBuilderInitialization_CS() { var aaaInvalidator = new BuilderPatternDescriptor <CSharpSyntax.InvocationExpressionSyntax>(false, (context) => context.MethodName == "Aaa"); var bbbValidator = new BuilderPatternDescriptor <CSharpSyntax.InvocationExpressionSyntax>(true, (context) => context.MethodName == "Bbb"); var cccInvalidator = new BuilderPatternDescriptor <CSharpSyntax.InvocationExpressionSyntax>(false, (context) => context.MethodName == "Ccc"); var condition1 = new CSharpBuilderPatternCondition(false, bbbValidator); condition1.IsInvalidBuilderInitialization(context_CS).Should().BeFalse(); // Invalid constructor validated by method var condition2 = new CSharpBuilderPatternCondition(false, cccInvalidator); condition2.IsInvalidBuilderInitialization(context_CS).Should().BeTrue(); // Invalid constructor invalidated by method var condition3 = new CSharpBuilderPatternCondition(true, cccInvalidator); condition3.IsInvalidBuilderInitialization(context_CS).Should().BeTrue(); // Valid constructor invalidated by method var condition4 = new CSharpBuilderPatternCondition(true, bbbValidator); condition4.IsInvalidBuilderInitialization(context_CS).Should().BeFalse(); // Valid constructor validated by method var condition5 = new CSharpBuilderPatternCondition(false, aaaInvalidator, bbbValidator); condition5.IsInvalidBuilderInitialization(context_CS).Should().BeFalse(); // Invalid constructor, invalidated by Aaa, validated by Bbb var condition6 = new CSharpBuilderPatternCondition(false, bbbValidator, aaaInvalidator); // Configuration order has no effect condition6.IsInvalidBuilderInitialization(context_CS).Should().BeFalse(); // Invalid constructor, invalidated by Aaa, validated by Bbb var condition7 = new CSharpBuilderPatternCondition(true, bbbValidator, cccInvalidator); condition7.IsInvalidBuilderInitialization(context_CS).Should().BeTrue(); // Valid constructor, validated by Bbb, invalidated by Ccc var condition8 = new CSharpBuilderPatternCondition(true, cccInvalidator, bbbValidator); // Configuration order has no effect condition8.IsInvalidBuilderInitialization(context_CS).Should().BeTrue(); // Valid constructor, validated by Bbb, invalidated by Ccc var dddContext = new InvocationContext(FindMethodInvocation_CS(context_CS.Invocation.SyntaxTree, "Ddd"), "Ddd", context_CS.SemanticModel); var condition9 = new CSharpBuilderPatternCondition(false); condition9.IsInvalidBuilderInitialization(dddContext).Should().BeFalse(); // Invalid constructor is not tracked through array propagation }
public void IsMatch() { var context = CreateContext(); InvocationCondition trueCondition = _ => true; InvocationCondition falseCondition = _ => false; BuilderPatternDescriptor <InvocationExpressionSyntax> descriptor; descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true); descriptor.IsMatch(context).Should().BeTrue(); descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true, trueCondition); descriptor.IsMatch(context).Should().BeTrue(); descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true, trueCondition, trueCondition); descriptor.IsMatch(context).Should().BeTrue(); descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true, falseCondition); descriptor.IsMatch(context).Should().BeFalse(); descriptor = new BuilderPatternDescriptor <InvocationExpressionSyntax>(true, trueCondition, falseCondition); descriptor.IsMatch(context).Should().BeFalse(); }