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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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 }); } }
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); } }
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); }
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); }
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); }
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); }
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); }
public IList <IIntellisenseResult> ParseDataLanguageForIntellisense(string value, string datalist) { var parser = new Dev2DataLanguageParser(); return(parser.ParseDataLanguageForIntellisense(value, datalist)); }