public void ShouldBuildValueSelectionExpression() { // Arrange, Act string pattern = Pattern.Any(new[] { "a", "b", "c" }); // Assert Assert.Equal("a|b|c", pattern); }
public void NonCapturedAnyPatternShouldMatchAndExtractValue() { var pattern = Pattern.Any <object>(); var myObject = new object(); var result = pattern.Match(myObject); Assert.True(result.IsSuccess); Assert.DoesNotContain(_captureGroup, result.Captures); }
public void SpecificVariable() { var group = new CaptureGroup("group"); var statement = new AssignmentStatement <int>(new IVariable[] { new AstVariable("var1"), }, new InstructionExpression <int>(1, ArraySegment <Expression <int> > .Empty)); var pattern = StatementPattern .Assignment <int>() .WithVariables(Pattern.Any <IVariable>().CaptureAs(group)); var result = pattern.Match(statement); Assert.True(result.IsSuccess); Assert.Contains(group, result.Captures); Assert.Contains(statement.Variables[0], result.Captures[group]); }
public void AnyPhiWithFixedVariables() { var statement = new PhiStatement <int>(new AstVariable("phi1"), new List <VariableExpression <int> > { new VariableExpression <int>(new AstVariable("v1")), new VariableExpression <int>(new AstVariable("v2")), new VariableExpression <int>(new AstVariable("v3")), }); var pattern = StatementPattern.Phi <int>() .WithSources( Pattern.Any <VariableExpression <int> >(), Pattern.Any <VariableExpression <int> >(), Pattern.Any <VariableExpression <int> >()); Assert.True(pattern.Matches(statement)); statement.Sources.Add(new VariableExpression <int>(new AstVariable("v4"))); Assert.False(pattern.Matches(statement)); }
public void AnyPhiWithSpecificTargetPattern() { var group = new CaptureGroup("phiGroup"); var statement = new PhiStatement <int>(new AstVariable("phi1"), new List <VariableExpression <int> > { new VariableExpression <int>(new AstVariable("v1")), new VariableExpression <int>(new AstVariable("v2")), new VariableExpression <int>(new AstVariable("v3")), new VariableExpression <int>(new AstVariable("v4")), }); var pattern = StatementPattern.Phi <int>() .WithTarget(Pattern.Any <IVariable>().CaptureAs(group)); var result = pattern.Match(statement); Assert.True(result.IsSuccess); Assert.Contains(group, result.Captures); Assert.Contains(statement.Target, result.Captures[group]); }
public void AnyPatternShouldMatchAnyObject() { var pattern = Pattern.Any <object>(); Assert.True(pattern.Matches(new object())); }