Example #1
0
        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");
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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");
        }
Example #4
0
        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);
        }
Example #5
0
 public void AddTranslator(IDataListTranslator translator)
 {
     if (translator == null)
     {
         throw new ArgumentNullException("translator");
     }
     AddTranslatorImpl(translator, true);
 }
Example #6
0
        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]);
        }
Example #7
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);
        }
Example #8
0
        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);
        }
Example #9
0
        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\"&amp;>'nstuff'<";

            StringAssert.Contains(actual, expected, "Not all XML special characters are escaped i.e \"'><&");
        }
Example #10
0
        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);
            }
        }
Example #11
0
        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);
                }
            }
        }
Example #12
0
        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 &quot;Cool&quot;&amp;&gt;&apos;nstuff&apos;&lt;";

            StringAssert.Contains(actual.ToString(), expected, "Not all XML special characters are escaped i.e \"'><&");
        }
Example #13
0
        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);
            }
        }