Ejemplo n.º 1
0
        public void ShouldBuildValueSelectionExpression()
        {
            // Arrange, Act
            string pattern = Pattern.Any(new[] { "a", "b", "c" });

            // Assert
            Assert.Equal("a|b|c", pattern);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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]);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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]);
        }
Ejemplo n.º 6
0
        public void AnyPatternShouldMatchAnyObject()
        {
            var pattern = Pattern.Any <object>();

            Assert.True(pattern.Matches(new object()));
        }