public void Test_can_parse_arbitrary_id_as_start_node(string id) { CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery($"from {id}"); CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause(); FromClauseVisitor visitor = new FromClauseVisitor(); CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree); startNode.StartNodeId.ShouldBeEquivalentTo(id); startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Id); }
public void Test_can_parse_root_as_start_node() { CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("from root"); CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause(); FromClauseVisitor visitor = new FromClauseVisitor(); CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree); startNode.StartNodeId.Should().BeNullOrEmpty(); startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Root); }
private PageReference GetStartSearchFromNode(CmsqlQueryStartNode startNode) { switch (startNode.StartNodeType) { case CmsqlQueryStartNodeType.Start: return(ContentReference.StartPage); case CmsqlQueryStartNodeType.Root: return(ContentReference.RootPage); case CmsqlQueryStartNodeType.Id: if (int.TryParse(startNode.StartNodeId, out int rootNodeId)) { return(new PageReference(rootNodeId)); } break; } return(PageReference.EmptyReference); }