Пример #1
0
 public void TestDontMatchConstant()
 {
     IConstant input = Polynomial.CreateConstant(1.5);
     var m = new TypeMatchTemplate<INamedVariable>();
     var result = m.TryMatch(input);
     Assert.IsNull(result);
 }
Пример #2
0
        public void TestDoMatchAssignment()
        {
            // Set up expression a + 1 * 2
            var v = Polynomial.CreateNamedVariable("a");
            var e = Polynomial.CreateConstant(1).C * Polynomial.CreateConstant(2);
            AbstractExpr input = v.C + e;

            // Set up template vt + et
            var vt = new TypeMatchTemplate<IVariable>();
            var et = new TypeMatchTemplate<AbstractExpr>();
            BinaryExpressionTemplate template = vt + et;

            // Do matching
            IDictionary<AbstractExpressionTemplate, IAbstractExpr> result =
                template.TryMatch(input);

            // Check that
            // * vt matched to a
            // * et matched to 1 * 2
            // * complete template matched to input.
            Assert.AreSame(result[vt], v);
            Assert.AreEqual("a", ((IVariable)result[vt]).Name);
            Assert.AreSame(result[et], e);
            Assert.AreSame(result[template], input);
        }
Пример #3
0
        public void TestDontMatchAssignment()
        {
            AbstractExpr input = Polynomial.CreateConstant(-1).C + Polynomial.CreateConstant(1).C * Polynomial.CreateConstant(2);

            BinaryExpressionTemplate template = new TypeMatchTemplate<IVariable>() + new TypeMatchTemplate<AbstractExpr>();

            IDictionary<AbstractExpressionTemplate, IAbstractExpr> result = template.TryMatch(input);
            Assert.IsNull(result);
        }
Пример #4
0
        public void TestDoMatchTwice2()
        {
            AbstractExpr input = Polynomial.CreateConstant(3).C + Polynomial.CreateConstant(3);

            var ct = new TypeMatchTemplate<IConstant>();
            BinaryExpressionTemplate template = ct + ct;

            IDictionary<AbstractExpressionTemplate, IAbstractExpr> result = template.TryMatch(input);
            Assert.AreEqual(result[ct], Polynomial.CreateConstant(3));
            Assert.AreSame(result[template], input);
        }
Пример #5
0
        public void TestDontMatchTwice()
        {
            AbstractExpr input = Polynomial.CreateConstant(3).C + Polynomial.CreateConstant(2);

            var ct = new TypeMatchTemplate<IConstant>();
            BinaryExpressionTemplate template = ct + ct;

            IDictionary<AbstractExpressionTemplate, IAbstractExpr> result = template.TryMatch(input);
            Assert.IsNull(result);
        }
Пример #6
0
 public void TestMatchConstant()
 {
     IConstant input = Polynomial.CreateConstant(1.5);
     var m = new TypeMatchTemplate<IConstant>();
     var result = m.TryMatch(input);
     Assert.AreSame(result[m], input);
 }