Esempio n. 1
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_ErrorOnUnclosed()
        {
            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName([[varName)]]", null, true, null, true);

            Assert.AreEqual(enIntellisenseErrorCode.SyntaxError, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Error, result[0].Type);
        }
Esempio n. 2
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_NoFieldMatches()
        {
            const string dataList = @"<doc><recName1 Description=""RecName1 Description""><field1 Description=""field1 Desc"" /><field2 Description=""field2 Desc"" /></recName1><recName2 Description=""RecName2 Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName1.Name", dataList, false, null, true);

            Assert.AreEqual(0, result.Count);
        }
Esempio n. 3
0
        public override IActionableErrorInfo Check()
        {
            var value = GetValue();

            if (string.IsNullOrEmpty(value))
            {
                return(null);
            }

            var result = value.TryParseVariables(out _outputValue, DoError, LabelText, _variableValue, _inputs);

            if (result != null)
            {
                if (string.Equals(value, _outputValue))
                {
                    _outputValue = _variableValue;
                }
                return(result);
            }

            var parser = new Dev2DataLanguageParser();

            var results = parser.ParseDataLanguageForIntellisense(value, _datalist);

            if (DataListUtil.IsEvaluated(value) && !DataListUtil.IsValueRecordset(value))
            {
                var validRegions = Dev2.DataList.Contract.DataListCleaningUtils.SplitIntoRegions(value);
                foreach (var region in validRegions)
                {
                    var intellisenseResult = parser.ValidateName(DataListUtil.RemoveLanguageBrackets(region), "");
                    if (intellisenseResult != null && intellisenseResult.Type == enIntellisenseResultType.Error)
                    {
                        results.Add(intellisenseResult);
                    }
                }
            }

            var error = results.FirstOrDefault(r => r.Type == enIntellisenseResultType.Error);

            if (error != null)
            {
                if (string.Equals(value, _outputValue))
                {
                    _outputValue = _variableValue;
                }

                return(new ActionableErrorInfo(DoError)
                {
                    ErrorType = ErrorType.Critical,
                    Message = (string.IsNullOrEmpty(LabelText) ? "" : LabelText + " - ")
                              + error.Message
                });
            }
            return(null);
        }
Esempio n. 4
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_EmptyClosed()
        {
            const string dataList = @"<doc><recName Description=""RecName Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[[[]]]]", dataList, false, null, false);

            Assert.AreEqual(enIntellisenseErrorCode.SyntaxError, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Error, result[0].Type);
            Assert.AreEqual("Variable [[]] is missing a name", result[0].Message);
        }
Esempio n. 5
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_TwoMatchingFields_AddCompleteParts()
        {
            const string dataList = @"<doc><recName1 Description=""RecName1 Description""><field1 Description=""field1 Desc"" /><field2 Description=""field2 Desc"" /></recName1><recName2 Description=""RecName2 Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName1", dataList, false);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual("RecName1 Description", result[0].Message);
        }
Esempio n. 6
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_OneMatchNoParent2()
        {
            const string dataList = @"<doc><recName Description=""RecName Description""></recName></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName([[recName).field]]", dataList, false, null, true);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual("RecName Description", result[0].Message);
        }
Esempio n. 7
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_EmptyHangingOpen()
        {
            const string dataList = @"<doc><recName Description=""RecName Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[", dataList, false, null, false);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual("RecName Description / Select this variable", result[0].Message);
        }
Esempio n. 8
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_NoFieldMatchInValidRecordset()
        {
            const string dataList = @"<doc><recName Description=""RecName Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName().field]]", dataList, false, null, true);

            // Note: studio does not allow recordsets with no fields
            Assert.AreEqual(enIntellisenseErrorCode.NeitherRecordsetNorFieldFound, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Error, result[0].Type);
            Assert.AreEqual("[[recName()]] does not exist in your variable list", result[0].Message);
        }
Esempio n. 9
0
        public void ParseDataLanguageForIntellisense_GivenInvalidDatalist_ShouldSwallowException()
        {
            //---------------Set up test pack-------------------
            var parser   = new Dev2DataLanguageParser();
            var datalist = "Invalid Datalist!!!";
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var expressionIntoParts = parser.ParseDataLanguageForIntellisense("some value", datalist);

            //---------------Test Result -----------------------
            Assert.AreEqual(0, expressionIntoParts.Count);
        }
Esempio n. 10
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_BlankDescriptions()
        {
            const string dataList = @"<doc><recName1 Description=""""><field1 Description="""" /><field2 Description=""field2 Desc"" /></recName1><recName2 Description=""RecName2 Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName1.field", dataList, false, null, true);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual(" Input: Use last row, Result: Append new record", result[0].Message);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[2].Type);
            Assert.AreEqual("field2 Desc", result[2].Message);
        }
Esempio n. 11
0
        public void ParseDataLanguageForIntellisense_GivenEmpty_ShouldExecutesCorreclty()
        {
            //---------------Set up test pack-------------------
            var          parser     = new Dev2DataLanguageParser();
            const string trueString = "True";
            const string noneString = "None";
            var          datalist   = string.Format("<DataList><var Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><a Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><rec Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" ><set Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /></rec></DataList>", trueString, noneString);
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var expressionIntoParts = parser.ParseDataLanguageForIntellisense("", datalist);

            //---------------Test Result -----------------------
            Assert.AreEqual(0, expressionIntoParts.Count);
        }
Esempio n. 12
0
        public void ParseDataLanguageForIntellisense_GivenRecordSetsFilter_ShouldExecutesCorreclty()
        {
            var          parser     = new Dev2DataLanguageParser();
            const string trueString = "True";
            const string noneString = "None";
            var          datalist   = string.Format("<DataList><var Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><a Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><rec Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" ><set Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /></rec></DataList>", trueString, noneString);

            var obj = new object();

            lock (obj)
            {
                var expressionIntoParts = parser.ParseDataLanguageForIntellisense("[[a]]", datalist, false, new IntellisenseFilterOpsTO {
                    FilterType = enIntellisensePartType.RecordsetsOnly
                });
            }
        }
Esempio n. 13
0
        public void ParseDataLanguageForIntellisense_GivenFuncThrowsException_ShouldCatchAndLogException()
        {
            var          parser     = new Dev2DataLanguageParser();
            const string trueString = "True";
            const string noneString = "None";
            var          datalist   = string.Format("<DataList><var Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><a Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><rec Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" ><set Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /></rec></DataList>", trueString, noneString);
            var          mock       = new Mock <IIntellisenseFilterOpsTO>();

            mock.SetupGet(to => to.FilterType).Throws(new Exception("Error"));
            try
            {
                parser.ParseDataLanguageForIntellisense("[[a]]", datalist, false, mock.Object);
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Error", ex.Message);
            }
        }
Esempio n. 14
0
        public void Dev2DataLanguageParser_ForIntellisense_GivenValidArgs_ShouldExecutesCorreclty()
        {
            //---------------Set up test pack-------------------
            var          parser     = new Dev2DataLanguageParser();
            const string trueString = "True";
            const string noneString = "None";
            var          datalist   = string.Format("<DataList><var Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><a Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /><rec Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" ><set Description=\"\" IsEditable=\"{0}\" ColumnIODirection=\"{1}\" /></rec></DataList>", trueString, noneString);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var expressionIntoParts = parser.ParseDataLanguageForIntellisense("[[a]]", datalist);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, expressionIntoParts.Count);
            Assert.AreEqual(enIntellisenseErrorCode.None, expressionIntoParts[0].ErrorCode);
            Assert.AreEqual("", expressionIntoParts[0].Message);
            Assert.AreEqual("[[var]]", expressionIntoParts[0].Option.DisplayValue);
            Assert.AreEqual("var", expressionIntoParts[0].Option.Field);
            Assert.AreEqual("", expressionIntoParts[0].Option.Recordset);
            Assert.AreEqual("", expressionIntoParts[0].Option.RecordsetIndex);
        }
Esempio n. 15
0
        public void Dev2DataLanguageParser_ValidateName()
        {
            //---------------Set up test pack-------------------
            const string dataList = @"<doc><recName1 Description=""RecName1 Description""><field1 Description=""field1 Desc"" /><field2 Description=""field2 Desc"" /></recName1><recName2 Description=""RecName2 Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName1.field", dataList, false, null, true);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual("field1 Desc", result[0].Message);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[2].Type);
            Assert.AreEqual("field2 Desc", result[2].Message);

            var name = parser.ValidateName("field1", "Scalar");

            Assert.IsNull(name);

            name = parser.ValidateName("[[recName1]]", "Recordset");

            Assert.IsNotNull(name);
        }
Esempio n. 16
0
        public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_OneMatchWithParent()
        {
            const string dataList = @"<doc><recName Description=""RecName Description"" /></doc>";

            var parser = new Dev2DataLanguageParser();
            var result = parser.ParseDataLanguageForIntellisense("[[recName([[recName([[index).field]]", dataList, false, null, true);

            Assert.AreEqual(enIntellisenseErrorCode.None, result[0].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Selectable, result[0].Type);
            Assert.AreEqual("RecName Description", result[0].Message);
            Assert.AreEqual("[[recName]]", result[0].Option.DisplayValue);
            Assert.AreEqual("recName", result[0].Option.Field);
            Assert.AreEqual("", result[0].Option.Recordset);
            Assert.AreEqual("", result[0].Option.RecordsetIndex);

            Assert.AreEqual(enIntellisenseErrorCode.SyntaxError, result[1].ErrorCode);
            Assert.AreEqual(enIntellisenseResultType.Error, result[1].Type);
            Assert.AreEqual("Variable name [[index).field]] contains invalid character(s). Only use alphanumeric _ and - ", result[1].Message);
            Assert.AreEqual("[[index).field()]]", result[1].Option.DisplayValue);
            Assert.AreEqual("", result[1].Option.Field);
            Assert.AreEqual("index).field", result[1].Option.Recordset);
            Assert.AreEqual("", result[1].Option.RecordsetIndex);
        }
 public void Dev2DataLanguageParser_ParseDataLanguageForIntellisense_DataListIsEmpty_NoIntellisenseResult()
 {
     //------------Setup for test--------------------------
     var dev2LanuageParser = new Dev2DataLanguageParser();
     //------------Execute Test---------------------------
     var parts = dev2LanuageParser.ParseDataLanguageForIntellisense("", "");
     //------------Assert Results-------------------------
     Assert.AreEqual(0, parts.Count);
 }
Esempio n. 18
0
        public void WhenIValidate()
        {
            IList <IIntellisenseResult> results = new List <IIntellisenseResult>();

            var variable = ScenarioContext.Current.Get <string>("variable");


            var parser = new Dev2DataLanguageParser();

            IntellisenseFilterOpsTO filterTO = new IntellisenseFilterOpsTO {
                FilterType = enIntellisensePartType.All
            };

            var datalist = new StringBuilder();

            datalist.Append("<DataList>");

            datalist.Append("<a>");
            datalist.Append("</a>");

            datalist.Append("<b>");
            datalist.Append("</b>");

            datalist.Append("<c>");
            datalist.Append("</c>");

            datalist.Append("<y>");
            datalist.Append("</y>");

            datalist.Append("<d>");
            datalist.Append("</d>");

            datalist.Append("<test>");
            datalist.Append("</test>");

            datalist.Append("<v>");
            datalist.Append("</v>");

            datalist.Append("<var>");
            datalist.Append("</var>");

            datalist.Append("<var1>");
            datalist.Append("</var1>");

            datalist.Append("<rec>");
            datalist.Append("<a/>");
            datalist.Append("<b/>");
            datalist.Append("</rec>");

            datalist.Append("<r>");
            datalist.Append("<a/>");
            datalist.Append("<b/>");
            datalist.Append("</r>");

            datalist.Append("</DataList>");

            var dataList   = datalist.ToString();
            var tmpResults = parser.ParseDataLanguageForIntellisense(variable, dataList, true, filterTO, false);

            tmpResults.ToList().ForEach(r =>
            {
                if (r.Type == enIntellisenseResultType.Error)
                {
                    results.Add(r);
                }
            });

            ScenarioContext.Current.Add("results", results);
        }
Esempio n. 19
0
        public void WhenIValidate()
        {
            IList<IIntellisenseResult> results = new List<IIntellisenseResult>();

            var variable = ScenarioContext.Current.Get<string>("variable");


            var parser = new Dev2DataLanguageParser();

            IntellisenseFilterOpsTO filterTO = new IntellisenseFilterOpsTO { FilterType = enIntellisensePartType.All };

            var datalist = new StringBuilder();
            datalist.Append("<DataList>");

            datalist.Append("<a>");
            datalist.Append("</a>");

            datalist.Append("<b>");
            datalist.Append("</b>");

            datalist.Append("<c>");
            datalist.Append("</c>");

            datalist.Append("<y>");
            datalist.Append("</y>");

            datalist.Append("<d>");
            datalist.Append("</d>");

            datalist.Append("<test>");
            datalist.Append("</test>");

            datalist.Append("<v>");
            datalist.Append("</v>");

            datalist.Append("<var>");
            datalist.Append("</var>");

            datalist.Append("<var1>");
            datalist.Append("</var1>");

            datalist.Append("<rec>");
            datalist.Append("<a/>");
            datalist.Append("<b/>");
            datalist.Append("</rec>");

            datalist.Append("<r>");
            datalist.Append("<a/>");
            datalist.Append("<b/>");
            datalist.Append("</r>");

            datalist.Append("</DataList>");

            var dataList = datalist.ToString();
            var tmpResults = parser.ParseDataLanguageForIntellisense(variable, dataList, true, filterTO, false);
            tmpResults.ToList().ForEach(r =>
            {
                if(r.Type == enIntellisenseResultType.Error)
                {
                    results.Add(r);
                }
            });

            ScenarioContext.Current.Add("results", results);
        }
Esempio n. 20
0
        public IList <IIntellisenseResult> ParseDataLanguageForIntellisense(string value, string datalist)
        {
            var parser = new Dev2DataLanguageParser();

            return(parser.ParseDataLanguageForIntellisense(value, datalist));
        }