public void Dev2LanuageParser_ParseExpressionIntoParts_WhenMalformedRecordsetWithInvalidIndex_Expect2Errors()
        {
            //------------Setup for test--------------------------
            var dev2LanuageParser = new Dev2DataLanguageParser();

            const string data = @"[[rec(&&,.a]]";
            const string dl = "<DataList><rec><a/></rec></DataList>";
            var compiler = DataListFactory.CreateDataListCompiler();
            ErrorResultTO errors;
            var dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), string.Empty.ToStringBuilder(), dl.ToStringBuilder(), out errors);
            var bdl = compiler.FetchBinaryDataList(dlID, out errors);
            if(bdl != null)
            {
                var intillisenseParts = bdl.FetchIntellisenseParts();

                //------------Execute Test---------------------------
                // ReSharper disable once RedundantAssignment
                var parts = dev2LanuageParser.ParseExpressionIntoParts(data, intillisenseParts);
                parts = dev2LanuageParser.ParseExpressionIntoParts(data, intillisenseParts);
                //------------Assert Results-------------------------
                Assert.AreEqual(1, parts.Count);
                StringAssert.Contains(parts[0].Message, "Recordset name [[rec(&&,]] contains invalid character(s)");
            }
            else
            {
                Assert.Fail();
            }
        }
예제 #2
0
        public void Dev2DataLanguageParser_ParseWithCData()
        {
            //---------------Set up test pack-------------------
            var          parser = new Dev2DataLanguageParser();
            const string text   = @"<![CDATA[[[]]]]>";
            var          parts  = parser.ParseExpressionIntoParts(text, new List <IDev2DataLanguageIntellisensePart>());

            Assert.AreEqual(1, parts.Count);
            Assert.AreEqual(parts[0].Type, enIntellisenseResultType.Error);
            Assert.AreEqual(parts[0].ErrorCode, enIntellisenseErrorCode.SyntaxError);
            Assert.AreEqual(parts[0].Message, ErrorResource.VariableIsMissing);

            const string textNoBrackets = @"Some text[[";

            parts = parser.ParseExpressionIntoParts(textNoBrackets, new List <IDev2DataLanguageIntellisensePart>());
            Assert.AreEqual(1, parts.Count);
            Assert.AreEqual(parts[0].Type, enIntellisenseResultType.Error);
            Assert.AreEqual(parts[0].ErrorCode, enIntellisenseErrorCode.SyntaxError);
            Assert.AreEqual(parts[0].Message, ErrorResource.InvalidCloseRegion);

            const string textWithAuto = @"[[varName]]";

            parts = parser.ParseExpressionIntoParts(textWithAuto, new List <IDev2DataLanguageIntellisensePart>());
            Assert.AreEqual(1, parts.Count);
            Assert.AreEqual(enIntellisenseResultType.Error, parts[0].Type);
            Assert.AreEqual(enIntellisenseErrorCode.ScalarNotFound, parts[0].ErrorCode);
            Assert.AreEqual(" [[varName]] does not exist in your variable list", parts[0].Message);
        }
예제 #3
0
        public void ParseExpressionIntoParts_GivenExpressionInCache_ShouldReturnFromCache()
        {
            //---------------Set up test pack-------------------
            var parser = new Dev2DataLanguageParser();
            var concurrentDictionary = new ConcurrentDictionary <string, IList <IIntellisenseResult> >();
            var tryAdd = concurrentDictionary.TryAdd("[[a]]", new List <IIntellisenseResult> {
                IntellisenseFactory.CreateErrorResult(1, 2, null, "", enIntellisenseErrorCode.FieldNotFound, false)
            });

            Assert.IsTrue(tryAdd);
            var fieldInfo = typeof(Dev2DataLanguageParser).GetField("_expressionCache", BindingFlags.Static | BindingFlags.NonPublic);

            if (fieldInfo != null)
            {
                fieldInfo.SetValue(parser, concurrentDictionary);
            }
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var expressionIntoParts = parser.ParseExpressionIntoParts("[[a]]", new List <IDev2DataLanguageIntellisensePart>());

            //---------------Test Result -----------------------
            Assert.AreEqual(1, expressionIntoParts.Count);
            var error = expressionIntoParts.SingleOrDefault(result => !string.IsNullOrEmpty(result.Message));

            Assert.IsNull(error);
        }
예제 #4
0
        public void ParseExpressionIntoParts_GivenEmptyExpression_ShouldReturnEmptyParts()
        {
            //---------------Set up test pack-------------------
            var parser = new Dev2DataLanguageParser();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var expressionIntoParts = parser.ParseExpressionIntoParts("", new List <IDev2DataLanguageIntellisensePart>());

            //---------------Test Result -----------------------
            Assert.AreEqual(0, expressionIntoParts.Count);
            var error = expressionIntoParts.SingleOrDefault(result => !string.IsNullOrEmpty(result.Message));

            Assert.IsNull(error);
        }
 public void Dev2DataLanguageParser_ParseExpressionIntoParts_DataListPartsIsNull_NoIntellisenseResult()
 {
     //------------Setup for test--------------------------
     var dev2LanuageParser = new Dev2DataLanguageParser();
     //------------Execute Test---------------------------
     var parts = dev2LanuageParser.ParseExpressionIntoParts("[[var]]", null);
     //------------Assert Results-------------------------
     Assert.AreEqual(0, parts.Count);
 }
 public void Dev2DataLanguageParser_ParseExpressionIntoParts_ExpressionIsEmpty_NoIntellisenseResult()
 {
     //------------Setup for test--------------------------
     var dev2LanuageParser = new Dev2DataLanguageParser();
     //------------Execute Test---------------------------
     var parts = dev2LanuageParser.ParseExpressionIntoParts("", new List<IDev2DataLanguageIntellisensePart>());
     //------------Assert Results-------------------------
     Assert.AreEqual(0, parts.Count);
 }
        public void Dev2LanuageParser_ParseExpressionIntoParts_WhenMissingVariable_Expect1Error()
        {
            //------------Setup for test--------------------------
            var dev2LanuageParser = new Dev2DataLanguageParser();

            const string data = @"[[]]";
            const string dl = "<DataList><rec><a/></rec></DataList>";
            var compiler = DataListFactory.CreateDataListCompiler();
            ErrorResultTO errors;
            var dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), string.Empty.ToStringBuilder(), dl.ToStringBuilder(), out errors);
            var bdl = compiler.FetchBinaryDataList(dlID, out errors);
            if(bdl != null)
            {
                var intillisenseParts = bdl.FetchIntellisenseParts();

                //------------Execute Test---------------------------
                var parts = dev2LanuageParser.ParseExpressionIntoParts(data, intillisenseParts);

                //------------Assert Results-------------------------
                Assert.AreEqual(1, parts.Count);
                StringAssert.Contains(parts[0].Message, "Variable [[]] is missing a name");
            }
            else
            {
                Assert.Fail();
            }
        }
        public void Dev2LanuageParser_ParseExpressionIntoParts_WhenInValid_ExpectNoCache()
        {
            //------------Setup for test--------------------------
            var dev2LanuageParser = new Dev2DataLanguageParser();
            PrivateType p = new PrivateType(typeof(Dev2DataLanguageParser));
            var cache = p.GetStaticField("_payloadCache") as ConcurrentDictionary<Tuple<string, string>, IList<IIntellisenseResult>>;

            Assert.IsNotNull(cache);
            cache.Clear();
            Assert.AreEqual(cache.Count, 0);
            const string data = @"[[rec(*123).a]]";
            const string dl = "<DataList><rec><a/></rec></DataList>";
            var compiler = DataListFactory.CreateDataListCompiler();
            ErrorResultTO errors;
            var dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), string.Empty.ToStringBuilder(), dl.ToStringBuilder(), out errors);
            var bdl = compiler.FetchBinaryDataList(dlID, out errors);
            var intillisenseParts = bdl.FetchIntellisenseParts();
            //------------Execute Test---------------------------
            dev2LanuageParser.ParseExpressionIntoParts(data, intillisenseParts);
            //------------Assert Results-------------------------
            Assert.IsNotNull(cache);
            Assert.AreEqual(cache.Count, 0);


        }