Exemple #1
0
        public void TestObjectDescriptor()
        {
            var attributeRegistry = new AttributeRegistry();

            // Rename ItemRenamed2 to Item2
            attributeRegistry.Register(typeof(TestObject).GetProperty("ItemRenamed2"), new YamlMemberAttribute("Item2"));

            var descriptor = new ObjectDescriptor(attributeRegistry, typeof(TestObject), false, new DefaultNamingConvention());

            descriptor.Initialize();

            // Verify members
            Assert.AreEqual(8, descriptor.Count);

            descriptor.SortMembers(new DefaultKeyComparer());

            // Check names and their orders
            Assert.AreEqual(descriptor.Members.Select(memberDescriptor => memberDescriptor.Name), new[]
            {
                "Collection",
                "CollectionReadOnly",
                "DefaultValue",
                "Item1",
                "Item2",
                "Name",
                "Property",
                "Value"
            });

            var instance = new TestObject {
                Name = "Yes", Property = "property"
            };

            // Check field accessor
            Assert.AreEqual("Yes", descriptor["Name"].Get(instance));
            descriptor["Name"].Set(instance, "No");
            Assert.AreEqual("No", instance.Name);

            // Check property accessor
            Assert.AreEqual("property", descriptor["Property"].Get(instance));
            descriptor["Property"].Set(instance, "property1");
            Assert.AreEqual("property1", instance.Property);

            // Check ShouldSerialize
            Assert.True(descriptor["Name"].ShouldSerialize(instance));

            Assert.False(descriptor["Value"].ShouldSerialize(instance));
            instance.Value = 1;
            Assert.True(descriptor["Value"].ShouldSerialize(instance));

            Assert.False(descriptor["DefaultValue"].ShouldSerialize(instance));
            instance.DefaultValue++;
            Assert.True(descriptor["DefaultValue"].ShouldSerialize(instance));

            // Check HasSet
            Assert.True(descriptor["Collection"].HasSet);
            Assert.False(descriptor["CollectionReadOnly"].HasSet);
        }
Exemple #2
0
        public void TestObjectWithCustomNamingConvention()
        {
            var attributeRegistry = new AttributeRegistry();
            var descriptor        = new ObjectDescriptor(attributeRegistry, typeof(TestObjectNamingConvention), false, new FlatNamingConvention());

            descriptor.Initialize();

            descriptor.SortMembers(new DefaultKeyComparer());

            // Check names and their orders
            Assert.AreEqual(descriptor.Members.Select(memberDescriptor => memberDescriptor.Name), new[]
            {
                "myname",
                "name",
                "this_is_camel_name"
            });
        }