예제 #1
0
        public void UltracalcGrammer_IsolationGrammer_NDepthRecursion_Test()
        {
            var builder = new SyntaxTreeBuilder();

            builder.Build("10 + (5 - (10 + (5 - (10 + 5))))");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #2
0
        public void DataListGrammer_IsolationGrammer_NDepthRecursion_Test()
        {
            var builder = new SyntaxTreeBuilder();

            builder.Build("[[entry([[entry([[entry(5)]])]])]]");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #3
0
        public void DataListGrammer_IsolationGrammer_EnsureFailure_Test()
        {
            var builder = new SyntaxTreeBuilder();

            builder.Build("[[entry]2]");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
        public void TestBuildsSimpleTree()
        {
            var tokenStream = new Token[]
            {
                new Token(TokenType.Identifier, "p"),
                new Token(TokenType.OpenBrace, "{"),
                new Token(TokenType.Identifier, "color"),
                new Token(TokenType.Colon, ":"),
                new Token(TokenType.Identifier, "red"),
                new Token(TokenType.SemiColon, ";"),
                new Token(TokenType.CloseBrace, "}")
            };

            var builder = new SyntaxTreeBuilder(tokenStream);
            var root    = builder.Build().Root.Children.First();

            Assert.That(root, Is.TypeOf <SassNode>());

            var sassNode = (SassNode)root;

            Assert.That(sassNode.Selector.Selector.Value, Is.EqualTo("p"));

            var declaration = (DeclarationNode)sassNode.Container.Children.First();

            Assert.That(declaration.Property.Name, Is.EqualTo("color"));
            Assert.That(declaration.Value.Value, Is.EqualTo("red"));
        }
예제 #5
0
        public void UltracalcGrammer_IsolationGrammer_CompositeIdentifier_EnsureFailure_Test()
        {
            var builder = new SyntaxTreeBuilder();

            builder.Build("10 + sum(5 - (10 + (5 - (10 + [asd[entry]]))))");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #6
0
        public void DataListGrammer_IsolationGrammer_ComplexParameter_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[identifier([[parameter]]).field]]");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #7
0
        public void UltracalcGrammer_IsolationGrammer_NestedComposite_ComplexParameter_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + sum(5 - (10 + (5 - (10 + [[entry(5).[[field]]]]))), 50 / 2 ^ 8, [[identifier]], 10 + sum(5 - (10 + (5 - (10 + [[entry(5).[[field]]]]))), 50 / 2 != 8, [[identifier]]))");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #8
0
        public void DataListGrammer_IsolationGrammer_NestedComposite_ComplexParameter_NestedSimple_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[[[identifier]]([[parameter(10).field]]).[2[field]]]]");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #9
0
        public void DataListGrammer_IsolationGrammer_CompositeIdentifier_CompositeField_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[[[identifier]2](5).[[field]]]]");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #10
0
        /// <summary>
        /// Parses schema from text reader
        /// </summary>
        /// <param name="reader">Text reader used for parsing</param>
        /// <returns>Parsing result</returns>
        public ParsingResult Parse(TextReader reader)
        {
            var errors = new List <ParsingError>();
            var tokens = Tokenizer.Tokenize(reader, errors).ToArray();

            var passes = new ParserPass[]
            {
                new DeclarationPass(tokens, errors),
                new SyntaxAnalysisPass(tokens, errors)
            };

            var result = new SyntaxTreeBuilder();

            foreach (var pass in passes)
            {
                pass.Run(result);
            }

            if (errors.Count > 0)
            {
                return(new ParsingResult(ImmutableArray <SchemaDeclaration> .Empty, errors.ToImmutableArray()));
            }
            else
            {
                return(new ParsingResult(result.Build(), ImmutableArray <ParsingError> .Empty));
            }
        }
예제 #11
0
        public void DataListGrammer_IsolationGrammer_NDepthRecursion_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[entry([[entry([[entry(5)]])]2])]]");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #12
0
        public void DataListGrammer_IsolationGrammer_CompositeIdentifier_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[[[identifier]](5)]]");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #13
0
        public void DataListGrammer_IsolationGrammer_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[entry]]");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #14
0
        public void ASTGrammerBehaviourRegistry_RegisterTrigger_NullDefinition_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.RegisterGrammer(new TestGrammer(1));
            builder.Build("5 + 4");
        }
예제 #15
0
        public void AbstractSyntaxTreeBuilder_RegisterAfterBuild_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("5");
            builder.RegisterGrammer(new CharLiteralGrammer());
        }
예제 #16
0
        public void DataListGrammer_IsolationGrammer_SingleVariable_HasEventLogsIsFalse()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[entry]]");
            Assert.IsFalse(builder.EventLog.HasEventLogs);
        }
예제 #17
0
        public void DataListGrammer_IsolationGrammer_VariablesSideBySideWithAnAdditionOperator_HasEventLogsIsFalse()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[entry]]+[[var]]");
            Assert.IsFalse(builder.EventLog.HasEventLogs);
        }
예제 #18
0
        public void CorrectlyTokenisesDeleteExample()
        {
            var tokens = new List <SyntaxToken>
            {
                OperationTokens.Delete,
                OperationTokens.From,
                new SyntaxToken("database2.logs"),
                OperationTokens.Where,
                new SyntaxToken("id"),
                OperationTokens.LessThan,
                new SyntaxToken("1000")
            };

            var result         = SyntaxTreeBuilder.Build(tokens);
            var expectedResult = new SyntaxNode(OperationTokens.Delete)
            {
                Right = new SyntaxNode(OperationTokens.From)
                {
                    Left  = new SyntaxNode(new SyntaxToken("database2.logs")),
                    Right = new SyntaxNode(OperationTokens.Where)
                    {
                        Left = new SyntaxNode(OperationTokens.LessThan)
                        {
                            Left  = new SyntaxNode(new SyntaxToken("id")),
                            Right = new SyntaxNode(new SyntaxToken("1000"))
                        }
                    }
                }
            };

            Assert.True(AreSyntaxTreesEqual(expectedResult, result));
        }
예제 #19
0
        public void UltracalcGrammer_IsolationGrammer_CompositeIdentifier_CompositeField_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + sum(5 - - (10 + (5 - (10 + [[entry(5).[[field]]]]))), 10)");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #20
0
        public void UltracalcGrammer_IsolationGrammer_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + 5 asd");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #21
0
        public void UltracalcGrammer_IsolationGrammer_NDepthRecursion_EnsureFailure_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + (5 - (10 + (5 -  as d(10 + 5))))");
            Assert.AreEqual(true, builder.EventLog.HasEventLogs);
        }
예제 #22
0
        public void UltracalcGrammer_IsolationGrammer_CompositeField_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + (5 - (10 + (5 - (10 + [[entry(5).[[field]]]]))))");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #23
0
        public void UltracalcGrammer_IsolationGrammer_ComplexParameter_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + sum(5 - (10 + (5 - (10 + [[entry(5).[[field]]]]))), 50 / 2 ^ 8, [[identifier]])");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #24
0
        public void UltracalcGrammer_StringLiteralGrammer_PartialDatalist_EnsureSuccess_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("\"asd[[asd\" & \"jack\"");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #25
0
        public void UltracalcGrammer_IsolationGrammer_EnsureSuccess_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("10 + 5");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #26
0
        public void UltracalcGrammer_StringLiteralGrammer_CompositeNestedDatalist_Infragistics_EnsureSuccess_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("\"asd[[[[Jon]](sum(5,-1)).[[Field]]]]\" & \"jack\"");
            Assert.AreEqual(false, builder.EventLog.HasEventLogs);
        }
예제 #27
0
        public void DataListGrammer_IsolationGrammer_InvalidVar_HasEventLogsIsTrue()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[entry");
            Assert.IsTrue(builder.EventLog.HasEventLogs);
        }
예제 #28
0
        public void DataListGrammer_IsolationGrammer_VariablesSideBySide_WithModOperator_HasEventLogsIsFalse()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.Build("[[rec().a]]%[[rec().b]] ");
            Assert.IsFalse(builder.EventLog.HasEventLogs);
        }
예제 #29
0
        public void AbstractSyntaxTreeBuilder_MultipleNonUnaryTokenizationHandlers_Test()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();

            builder.RegisterGrammer(new TestGrammer(0));
            builder.Build("5 + 4");
        }
예제 #30
0
        public void SyntaxTreeBuilder_Build_VariablesSideBySideWithNewLine_HasEventLogsIsFalse()
        {
            SyntaxTreeBuilder builder = new SyntaxTreeBuilder();
            var input = "[[entry]]" + Environment.NewLine + "[[var]]";

            builder.Build(input);
            Assert.IsFalse(builder.EventLog.HasEventLogs);
        }
        /// <summary>
        /// Is the list.
        /// </summary>
        /// <param name="activityField">The activity field.</param>
        /// <returns></returns>
        public IList<string> FormatDsfActivityField(string activityField)
        {
            //2013.06.10: Ashley Lewis for bug 9306 - handle the case of miss-matched region braces

            IList<string> result = new List<string>();

            var regions = DataListCleaningUtils.SplitIntoRegionsForFindMissing(activityField);
            foreach(var region in regions)
            {
                // Sashen: 09-10-2012 : Using the new parser
                var intellisenseParser = new SyntaxTreeBuilder();

                Node[] nodes = intellisenseParser.Build(region);

                // No point in continuing ;)
                if(nodes == null)
                {
                    return result;
                }

                if(intellisenseParser.EventLog.HasEventLogs)
                {
                    IDev2StudioDataLanguageParser languageParser = DataListFactory.CreateStudioLanguageParser();

                    try
                    {
                        result = languageParser.ParseForActivityDataItems(region);
                    }
                    catch(Dev2DataLanguageParseError)
                    {
                        return new List<string>();
                    }
                    catch(NullReferenceException)
                    {
                        return new List<string>();
                    }

                }
                var allNodes = new List<Node>();


                if(nodes.Any() && !(intellisenseParser.EventLog.HasEventLogs))
                {
                    nodes[0].CollectNodes(allNodes);

                    // ReSharper disable once ForCanBeConvertedToForeach
                    for(int i = 0; i < allNodes.Count; i++)
                    {
                        if(allNodes[i] is DatalistRecordSetNode)
                        {
                            var refNode = allNodes[i] as DatalistRecordSetNode;
                            string nodeName = refNode.GetRepresentationForEvaluation();
                            nodeName = nodeName.Substring(2, nodeName.Length - 4);
                            result.Add(nodeName);
                        }
                        else if(allNodes[i] is DatalistReferenceNode)
                        {
                            var refNode = allNodes[i] as DatalistReferenceNode;
                            string nodeName = refNode.GetRepresentationForEvaluation();
                            nodeName = nodeName.Substring(2, nodeName.Length - 4);
                            result.Add(nodeName);
                        }

                    }
                }
            }


            return result;
        }