public void SerializeToXML_ValidXML_Expect_Sucess() { ErrorResultTO errors; string error; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); byte[] data = (TestHelper.ConvertStringToByteArray(DataListWellformedData)); IBinaryDataList obj = xmlConverter.ConvertTo(data, _dataListWellformed, out errors); IBinaryDataListEntry entry; if (obj.TryGetEntry("rs1", out entry, out error)) { IList <IBinaryDataListItem> cols = entry.FetchRecordAt(1, out error); int systemTagCount = Enum.GetValues(typeof(enSystemTag)).Length; var res1 = obj.FetchAllEntries().Count; var res2 = obj.FetchScalarEntries().Count; var res3 = obj.FetchRecordsetEntries().Count; var res4 = cols.Count; Assert.AreEqual(3 + systemTagCount, res1); Assert.AreEqual(2 + systemTagCount, res2); Assert.AreEqual(1, res3); Assert.AreEqual(2, res4); } else { Assert.Fail("Error"); } }
public void DeSerializeToXMLFromBinary_InvertedIndexInsert_ValidXML_Expect_Sucess() { IBinaryDataList dl = Dev2BinaryDataListFactory.CreateDataList(); string error; List <Dev2Column> cols = new List <Dev2Column>(); ErrorResultTO errors; cols.Add(DataListFactory.CreateDev2Column("f1", "")); cols.Add(DataListFactory.CreateDev2Column("f2", "")); cols.Add(DataListFactory.CreateDev2Column("f3", "")); IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); dl.TryCreateRecordsetTemplate("rs1", "", cols, true, out error); dl.TryCreateScalarTemplate(string.Empty, "scalar1", "", true, out error); dl.TryCreateScalarValue("scalar1Value", "scalar1", out error); dl.TryCreateRecordsetValue("rec1.f2.vale", "f2", "rs1", 1, out error); dl.TryCreateRecordsetValue("rec1.f1.vale", "f1", "rs1", 1, out error); dl.TryCreateRecordsetValue("rec1.f3.vale", "f3", "rs1", 1, out error); dl.TryCreateRecordsetValue("rec2.f1.vale", "f1", "rs1", 2, out error); dl.TryCreateRecordsetValue("rec2.f2.vale", "f2", "rs1", 2, out error); dl.TryCreateRecordsetValue("rec2.f3.vale", "f3", "rs1", 2, out error); DataListTranslatedPayloadTO tmp = xmlConverter.ConvertFrom(dl, out errors); string result = tmp.FetchAsString().ToString(); Assert.AreEqual("<DataList><rs1><f1>rec1.f1.vale</f1><f2>rec1.f2.vale</f2><f3>rec1.f3.vale</f3></rs1><rs1><f1>rec2.f1.vale</f1><f2>rec2.f2.vale</f2><f3>rec2.f3.vale</f3></rs1><scalar1>scalar1Value</scalar1></DataList>", result); }
public void XmlTranslator_ConvertAndFilter_WhenRecordsetWithGaps_ExpectRowAnnotations() { //------------Setup for test-------------------------- IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormatWithoutSystemTags); IBinaryDataList dl1 = Dev2BinaryDataListFactory.CreateDataList(GlobalConstants.NullDataListID); string error; var cols = new List <Dev2Column> { DataListFactory.CreateDev2Column("val", string.Empty) }; dl1.TryCreateRecordsetTemplate("rs", string.Empty, cols, true, out error); dl1.TryCreateRecordsetValue("1", "val", "rs", 1, out error); dl1.TryCreateRecordsetValue("3", "val", "rs", 3, out error); //------------Execute Test--------------------------- ErrorResultTO errors; var actual = xmlConverter.ConvertAndFilter(dl1, "<root><rs><val/></rs></root>".ToStringBuilder(), out errors); actual = actual.Replace("\r", "").Replace("\n", ""); //------------Assert Results------------------------- const string expected = "<rs index=\"1\"><val>1</val></rs><rs index=\"3\"><val>3</val></rs>"; StringAssert.Contains(actual.ToString(), expected, "rowID attribute not present"); }
public void DeSerializeToXMLInputsOnlyFromBinary_ValidXML_Expect_Sucess() { IBinaryDataList dl = Dev2BinaryDataListFactory.CreateDataList(); List <Dev2Column> cols1 = new List <Dev2Column> { DataListFactory.CreateDev2Column("f1", ""), }; List <Dev2Column> cols2 = new List <Dev2Column> { DataListFactory.CreateDev2Column("f2", ""), }; string error; ErrorResultTO errors; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormatInputsOnly); dl.TryCreateRecordsetTemplate("rs1", "", cols1, true, out error); dl.TryCreateRecordsetTemplate("rs2", "", cols2, true, true, enDev2ColumnArgumentDirection.Input, out error); dl.TryCreateScalarTemplate("", "scalar1", "", true, true, enDev2ColumnArgumentDirection.Input, out error); dl.TryCreateScalarTemplate("", "scalar2", "", true, true, enDev2ColumnArgumentDirection.Output, out error); dl.TryCreateScalarValue("scalar1Value", "scalar1", out error); dl.TryCreateScalarValue("scalar2Value", "scalar2", out error); dl.TryCreateRecordsetValue("rec1.f1.value", "f1", "rs1", 1, out error); dl.TryCreateRecordsetValue("rec1.f2.value", "f2", "rs2", 1, out error); dl.TryCreateRecordsetValue("rec2.f1.value", "f1", "rs1", 2, out error); dl.TryCreateRecordsetValue("rec2.f2.value", "f2", "rs2", 2, out error); DataListTranslatedPayloadTO tmp = xmlConverter.ConvertFrom(dl, out errors); string result = tmp.FetchAsString().ToString(); Assert.AreEqual("<DataList><scalar1>scalar1Value</scalar1></DataList>", result); }
public void AddTranslator(IDataListTranslator translator) { if (translator == null) { throw new ArgumentNullException("translator"); } AddTranslatorImpl(translator, true); }
public void SerializeToXML_InValidXML_Expect_Error() { ErrorResultTO errors; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); byte[] data = (TestHelper.ConvertStringToByteArray(_dataListMalformed.ToString())); xmlConverter.ConvertTo(data, _dataListMalformed, out errors); // convert fails, hence no datalist cleanup ;) Assert.AreEqual("The 'rs1' start tag on line 1 position 22 does not match the end tag of 'DataList'. Line 1, position 53.", errors.FetchErrors()[0]); }
public void SerializeToXML_ValidXML_BlankXML_Expect_Blank_Values_Returned() { string error; ErrorResultTO errors; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); byte[] data = (TestHelper.ConvertStringToByteArray("")); IBinaryDataList obj = xmlConverter.ConvertTo(data, _dataListWellformedDescAttributes, out errors); IList <IBinaryDataListEntry> scalars = obj.FetchScalarEntries(); IList <IBinaryDataListEntry> recordsets = obj.FetchRecordsetEntries(); IBinaryDataListItem item = scalars[0].FetchScalar(); IList <IBinaryDataListItem> items = recordsets[0].FetchRecordAt(1, out error); Assert.IsTrue(item != null && items != null); }
public void SerializeToXML_ValidXMLWithDescriptions_Return_Decriptions_Expect_Sucess() { ErrorResultTO errors; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); byte[] data = (TestHelper.ConvertStringToByteArray(DataListWellformedDataWithDesc)); IBinaryDataList obj = xmlConverter.ConvertTo(data, _dataListWellformedDescAttributes, out errors); IList <IBinaryDataListEntry> scalars = obj.FetchScalarEntries(); IList <IBinaryDataListEntry> recordsets = obj.FetchRecordsetEntries(); var res1 = scalars[0].Description; var res2 = recordsets[0].Columns[0].ColumnDescription; Assert.AreEqual("Test scalar description", res1); Assert.AreEqual("Test field1 desciption", res2); }
public void DeserializeToXMLFromBinaryDataListWhereDataListContainsInvalidXMLCharactersExpectedInvalidCharactersAreEscaped() { IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormat); IBinaryDataList dl1 = Dev2BinaryDataListFactory.CreateDataList(GlobalConstants.NullDataListID); string error; dl1.TryCreateScalarTemplate(string.Empty, "cake", "", false, true, enDev2ColumnArgumentDirection.Both, out error); dl1.TryCreateScalarValue("Travis Is \"Cool\"&>'nstuff'<", "cake", out error); ErrorResultTO errors; var payload = xmlConverter.ConvertFrom(dl1, out errors); string actual = payload.FetchAsString().ToString(); const string expected = "Travis Is \"Cool\"&>'nstuff'<"; StringAssert.Contains(actual, expected, "Not all XML special characters are escaped i.e \"'><&"); }
private void AddTranslatorsImpl(Type[] translatorTypes, bool fromExternal) { string interfaceName = typeof(IDataListTranslator).Name; List <IDataListTranslator> translators = new List <IDataListTranslator>(); for (int i = 0; i < translatorTypes.Length; i++) { Type current = translatorTypes[i]; Type interfaceImpl = current.GetInterface(interfaceName); if (interfaceImpl == null) { if (fromExternal) { throw new ArgumentException("Type \"" + current.Name + "\" does not implement interface \"" + interfaceName + "\"."); } translatorTypes[i] = null; } else { ConstructorInfo defaultCtor = current.GetConstructor(Type.EmptyTypes); if (defaultCtor == null) { throw new ArgumentException("Type \"" + current.Name + "\" does not implement a public parameterless constructor."); } IDataListTranslator instance = Activator.CreateInstance(current) as IDataListTranslator; if (instance == null) { throw new ArgumentException("Type \"" + current.Name + "\" does not implement interface \"" + typeof(IDataListTranslator).FullName + "\"."); } translators.Add(instance); } } foreach (IDataListTranslator t in translators) { AddTranslatorImpl(t, fromExternal); } }
private void AddTranslatorImpl(IDataListTranslator translator, bool fromExternal) { DataListFormat format = translator.Format; lock (_translatorGuard) { IDataListTranslator existing; if (_translators.TryGetValue(format, out existing)) { if (fromExternal) { throw new InvalidOperationException("A IDataListTranslator has already been added for format \"" + format + "\"."); } } else { _translators.Add(format, translator); } } }
public void XmlTranslator_ConvertAndFilter_WhenXMLSpecialCharsPresent_ExpectEscapedChars() { //------------Setup for test-------------------------- IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormatWithoutSystemTags); IBinaryDataList dl1 = Dev2BinaryDataListFactory.CreateDataList(GlobalConstants.NullDataListID); string error; dl1.TryCreateScalarTemplate(string.Empty, "cake", "", false, true, enDev2ColumnArgumentDirection.Both, out error); dl1.TryCreateScalarValue("Travis Is \"Cool\"&>'nstuff'<", "cake", out error); //------------Execute Test--------------------------- ErrorResultTO errors; var actual = xmlConverter.ConvertAndFilter(dl1, "<root><cake/></root>".ToStringBuilder(), out errors); //------------Assert Results------------------------- const string expected = "Travis Is "Cool"&>'nstuff'<"; StringAssert.Contains(actual.ToString(), expected, "Not all XML special characters are escaped i.e \"'><&"); }
public void ConvertTo_XMLInputsOnlyFromBinary_ValidXML_Expect_Sucess() { ErrorResultTO errors; IDataListTranslator xmlConverter = Dls.GetTranslator(XmlFormatInputsOnly); const string payload = "<DataList><rs2><f2>rec1.f2.value</f2></rs2><rs2><f2>rec2.f2.value</f2></rs2><scalar1>scalar1Value</scalar1></DataList>"; const string shape = "<ADL><rs2><f2/></rs2><scalar1/></ADL>"; var data = TestHelper.ConvertStringToByteArray(payload); var tmp = xmlConverter.ConvertTo(data, shape.ToStringBuilder(), out errors); var recordsets = tmp.FetchRecordsetEntries(); var scalars = tmp.FetchScalarEntries(); string error; Assert.AreEqual(1, recordsets.Count); var rowItems = recordsets[0].FetchRowAt(1, out error); Assert.AreEqual("rec1.f2.value", rowItems[0].TheValue); Assert.AreEqual(1, scalars.Count); Assert.AreEqual("scalar1Value", scalars[0].FetchScalar().TheValue); }
public void AddTranslator(IDataListTranslator translator) { if(translator == null) throw new ArgumentNullException("translator"); AddTranslatorImpl(translator, true); }
private void AddTranslatorImpl(IDataListTranslator translator, bool fromExternal) { DataListFormat format = translator.Format; lock(_translatorGuard) { IDataListTranslator existing; if(_translators.TryGetValue(format, out existing)) { if(fromExternal) { throw new InvalidOperationException("A IDataListTranslator has already been added for format \"" + format + "\"."); } } else _translators.Add(format, translator); } }