public void PerformanceOfMethodEvaluationOnDifferentContextTypes() { MethodNode mn = new MethodNode(); mn.Text = "ToString"; TypeNode nln = new TypeNode(); nln.Text = "System.Globalization.CultureInfo"; PropertyOrFieldNode pn = new PropertyOrFieldNode(); pn.Text = "InvariantCulture"; Expression exp = new Expression(); exp.addChild(nln); exp.addChild(pn); StringLiteralNode sln = new StringLiteralNode(); sln.Text = "dummy"; mn.addChild(sln); mn.addChild(exp); IExpression mnExp = mn; Assert.AreEqual("dummy", mnExp.GetValue(0m, null)); int runs = 10000000; StopWatch watch = new StopWatch(); using (watch.Start("Duration: {0}")) { for (int i = 0; i < runs; i++) { mnExp.GetValue(0m, null); } } }
public void GenerateProjectModelPasses() { // Use the Assert class to test conditions. //Create a couple methods MethodNode meth1 = new MethodNode("Method1", 10, 1); MethodNode meth2 = new MethodNode("Method2", 35, 2); MethodNode meth3 = new MethodNode("Method3", 10, 1); MethodNode meth4 = new MethodNode("Method4", 35, 2); //Create a couple classes ClassNode class1 = new ClassNode("Class1", 65, 5); ClassNode class2 = new ClassNode("Class2", 250, 3); //Add some methods to the classes class1.addChild(meth1); class1.addChild(meth2); class1.addChild(meth3); class2.addChild(meth4); //Create a couple packages PackageNode package1 = new PackageNode("org"); PackageNode package2 = new PackageNode("org.package"); PackageNode package3 = new PackageNode("org.package.tests"); PackageNode package4 = new PackageNode("org.audit"); //Add packages to packages package1.addChild(package2); package1.addChild(package4); package2.addChild(package3); //Add classes to packages package2.addChild(class1); package4.addChild(class2); //Create Root Project ProjectNode project = new ProjectNode("Example Source"); project.addChild(package1); Assert.AreEqual(project.Children.Count, 1); Assert.AreEqual(project.Children[0], package1); Assert.AreEqual(project.Children[0].Children[0], package2); Assert.AreEqual(project.Children[0].Children[1], package4); Assert.AreEqual(project.Children[0].Children[0].Children[0], package3); Assert.AreEqual(package1.Children.Count, 2); Assert.AreEqual(package2.Children.Count, 2); Assert.AreEqual(package3.Children.Count, 0); Assert.AreEqual(package4.Children.Count, 1); Assert.AreEqual(package1.Classes.Count, 0); Assert.AreEqual(package1.Packages.Count, 2); Assert.AreEqual(package2.Classes.Count, 1); Assert.AreEqual(package2.Packages.Count, 1); Assert.AreEqual(package1.Children[0], package2); Assert.AreEqual(package1.Children[1], package4); Assert.AreEqual(package2.Children[0], package3); Assert.AreEqual(package2.Children[1], class1); Assert.AreEqual(package4.Children[0], class2); Assert.AreEqual(class1.Children.Count, 3); Assert.AreEqual(class2.Children.Count, 1); Assert.AreEqual(class1.Methods.Count, 3); Assert.AreEqual(class2.Methods.Count, 1); Assert.AreEqual(class1.Children[0], meth1); Assert.AreEqual(class1.Children[1], meth2); Assert.AreEqual(class1.Children[2], meth3); Assert.AreEqual(class2.Children[0], meth4); Assert.AreEqual(class1.NOA, 5); Assert.AreEqual(class1.NOM, 3); Assert.AreEqual(class1.LOC, 65); Assert.Throws <System.NotImplementedException>(delegate { meth1.addChild(meth2); }); }