public void Pattern_TreePattern() { Project p = new Project(); MathSystem s = p.CurrentSystem; // sin(x^2) Signal x = Binder.CreateSignal(); x.Label = "x"; Std.ConstrainAlwaysReal(x); Signal x2 = StdBuilder.Square(x); x2.Label = "x2"; Signal sinx2 = StdBuilder.Sine(x2); sinx2.Label = "sinx2"; Pattern psimp = new Pattern(new EntityCondition(new MathIdentifier("Sine", "Std"))); Assert.AreEqual(true, psimp.Match(sinx2, sinx2.DrivenByPort), "B01"); Assert.AreEqual(false, psimp.Match(x2, x2.DrivenByPort), "B02"); TreePattern psinsqr = new TreePattern(new EntityCondition(new MathIdentifier("Sine", "Std"))); psinsqr.Add(new Pattern(new EntityCondition(new MathIdentifier("Square", "Std")))); Assert.AreEqual(true, psinsqr.Match(sinx2, sinx2.DrivenByPort), "B03"); Assert.AreEqual(false, psinsqr.Match(x2, x2.DrivenByPort), "B04"); TreePattern psinadd = new TreePattern(new EntityCondition(new MathIdentifier("Sine", "Std"))); psinadd.Add(new Pattern(new EntityCondition(new MathIdentifier("Add", "Std")))); Assert.AreEqual(false, psinadd.Match(sinx2, sinx2.DrivenByPort), "B03"); Assert.AreEqual(false, psinadd.Match(x2, x2.DrivenByPort), "B04"); }