public void TestDontMatchConstant() { IConstant input = Polynomial.CreateConstant(1.5); var m = new TypeMatchTemplate<INamedVariable>(); var result = m.TryMatch(input); Assert.IsNull(result); }
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); }
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); }
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); }
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); }
public void TestMatchConstant() { IConstant input = Polynomial.CreateConstant(1.5); var m = new TypeMatchTemplate<IConstant>(); var result = m.TryMatch(input); Assert.AreSame(result[m], input); }