private void ValidateSyntaxTree(Interfaces.ITemplateManager manager) { var template = manager.GetTemplate(Template, new TestTyperesolver(), new TypeResolver.ModelDescriptor(new TypeResolver.IDjangoType[] { new TypeResolver.CLRTypeDjangoType("Standard", typeof(EmptyClass)) })); //the same logic responsible for retriving nodes as in NodeProvider class (DjangoDesigner). var nodes = GetNodes(template.Nodes.ToList().ConvertAll (node => (Interfaces.INode)node)).FindAll(node => (node is Interfaces.ICompletionValuesProvider) || (node.NodeType == Interfaces.NodeType.ParsingContext) || (node.ErrorMessage.Message != "")); var actualResult = nodes.ConvertAll( node => { var valueProvider = node as Interfaces.ICompletionValuesProvider; var values = valueProvider == null ? new List <string>() : valueProvider.Values; var contextValues = new List <string>(values); switch (node.NodeType) { case Interfaces.NodeType.ParsingContext: contextValues.InsertRange(0, (node.Context.TagClosures)); return(new DesignerData(node.Position, node.Length, contextValues.ToArray(), node.ErrorMessage.Severity, node.ErrorMessage.Message)); case Interfaces.NodeType.Reference: return(new DesignerData(node.Position, node.Length, GetModelValues(node.Context.Model, RecursionDepth).ToArray(), node.ErrorMessage.Severity, node.ErrorMessage.Message)); default: return(new DesignerData(node.Position, node.Length, new List <string>(values).ToArray(), node.ErrorMessage.Severity, node.ErrorMessage.Message)); } }); for (var i = 0; i < actualResult.Count; i++) { Assert.AreEqual(ResultForDesigner[i].Length, actualResult[i].Length, "Invalid Length"); Assert.AreEqual(ResultForDesigner[i].Position, actualResult[i].Position, "Invalid Position"); Assert.AreEqual(ResultForDesigner[i].ErrorMessage, actualResult[i].ErrorMessage, "Invalid ErrorMessage"); Assert.AreEqual(ResultForDesigner[i].Severity, actualResult[i].Severity, "Invalid Severity"); Assert.AreEqual(ResultForDesigner[i].Values.OrderBy(x => x), actualResult[i].Values.OrderBy(x => x), "Invalid Values Array " + i); } Assert.AreEqual(ResultForDesigner.Count(), actualResult.Count); }