public void Test_List1ContainsList2()
        {
            var list1 = new List<object>();
            var list2 = new List<object>();
            var root = new Root(list1, list2);
            list1.Add(list2);

            var factory = new PropertyFactory(new PropertyProvider());
            Property p = factory.CreateProperty("Root", root);

            // Always 2 properties in Root
            var complexProperty = p as ComplexProperty;
            Assert.IsNotNull(complexProperty);
            Assert.AreEqual(2, complexProperty.Properties.Count);
            Assert.AreEqual(1, complexProperty.Reference.Count);
            Assert.IsFalse(complexProperty.Reference.IsProcessed);

            // Both lists are of CollectionProperty
            var lp1 = complexProperty.Properties[0] as CollectionProperty;
            Assert.IsNotNull(lp1);
            var lp2 = complexProperty.Properties[1] as CollectionProperty;
            Assert.IsNotNull(lp2);

            Assert.AreEqual(1, lp1.Items.Count);
            var lp1i1 = lp1.Items[0] as CollectionProperty;
            Assert.IsNotNull(lp1i1);
            Assert.AreNotEqual(lp1i1, lp2);

            Assert.AreEqual(lp1i1.Reference, lp2.Reference);
            Assert.AreEqual(2, lp1i1.Reference.Count);
        }
        public void Test_List1ContainsList3_List2ContainsList3()
        {
            var list1 = new List<object>();
            var list2 = new List<object>();
            var list3 = new List<object>();
            var root = new Root(list1, list2);
            list1.Add(list3);
            list2.Add(list3);

            var factory = new PropertyFactory(new PropertyProvider());
            Property p = factory.CreateProperty("Root", root);

            var rootProperty = (ComplexProperty) p;
            // Both lists are of CollectionProperty
            var lp1 = (CollectionProperty) rootProperty.Properties[0];
            var lp2 = (CollectionProperty) rootProperty.Properties[1];

            var lp1i1 = (CollectionProperty) lp1.Items[0];
            var lp2i1 = (CollectionProperty) lp2.Items[0];
            Assert.AreNotEqual(lp1i1, lp2i1);

            Assert.AreEqual(lp1i1.Reference, lp2i1.Reference);
            Assert.AreEqual(2, lp1i1.Reference.Count);
        }
Ejemplo n.º 3
0
        public void Serialize(object data, Stream stream)
        {
            if (data == null) throw new ArgumentNullException("data");

            var factory = new PropertyFactory(PropertyProvider);

            Property property = factory.CreateProperty(RootName, data);

            try
            {
                _serializer.Open(stream);
                _serializer.Serialize(property);
            }
            finally
            {
                _serializer.Close();
            }
        }