public void UI_FromDebugInfo_AreCorrectlyGenerated(Type type, params Type[] types)
        {
            Assert.That(PropertyBagDebugInfoStore.TryGetPropertyBagDetail(type, out var debugInfo), Is.True);
            var ui = debugInfo.UI.OfType <AttributeDescriptor <Type, string> >().ToList();

            Assert.That(ui.Count, Is.EqualTo(types.Length));
            for (var i = 0; i < ui.Count; ++i)
            {
                Assert.That(ui[i].Descriptor, Is.EqualTo(types[i]));
            }
            Assert.That(debugInfo.Extensions.HasFlag(ExtensionType.UI), Is.True);
            Assert.That(debugInfo.Extensions.HasFlag(ExtensionType.Serialization), Is.False);
        }
        public void Properties_FromDebugInfo_AreCorrectlyGenerated()
        {
            Assert.That(PropertyBagDebugInfoStore.TryGetPropertyBagDetail(typeof(ReflectionType), out var debugInfo), Is.True);
            var properties = debugInfo.Properties.OfType <PropertyTypeDescriptor>().ToList();

            Assert.That(properties.Count, Is.EqualTo(4));
            Assert.That(properties[0].Descriptor.Name, Is.EqualTo("A"));
            Assert.That(properties[0].Value, Is.EqualTo(typeof(float)));
            Assert.That(properties[1].Descriptor.Name, Is.EqualTo("B"));
            Assert.That(properties[1].Value, Is.EqualTo(typeof(int)));
            Assert.That(properties[2].Descriptor.Name, Is.EqualTo("C"));
            Assert.That(properties[2].Value, Is.EqualTo(typeof(string)));
            Assert.That(properties[3].Descriptor.Name, Is.EqualTo("D"));
            Assert.That(properties[3].Value, Is.EqualTo(typeof(double)));
        }
        public void TypeInfo_FromDebugInfo_AreCorrectlyGenerated()
        {
            Assert.That(PropertyBagDebugInfoStore.TryGetPropertyBagDetail(typeof(CodeGenType), out var debugInfo), Is.True);
            Assert.That(debugInfo.Serialization.Count, Is.EqualTo(0));
            Assert.That(debugInfo.UI.Count, Is.EqualTo(0));

            Assert.That(debugInfo.Name, Is.EqualTo(nameof(CodeGenType)));
            Assert.That(debugInfo.Namespace, Is.EqualTo("Unity.Properties.Debug.Tests"));
            Assert.That(debugInfo.Assembly, Is.EqualTo("Unity.Properties.UI.Tests"));
            Assert.That(debugInfo.FullName, Is.EqualTo("Unity.Properties.Debug.Tests.CodeGenType"));
            Assert.That(debugInfo.PropertyNames[0], Is.EqualTo("A"));
            Assert.That(debugInfo.PropertyNames[1], Is.EqualTo("B"));
            Assert.That(debugInfo.PropertyNames[2], Is.EqualTo("C"));
            Assert.That(debugInfo.PropertyNames[3], Is.EqualTo("D"));
            Assert.That(debugInfo.PropertyTypes[0], Is.EqualTo(TypeUtility.GetTypeDisplayName(typeof(float))));
            Assert.That(debugInfo.PropertyTypes[1], Is.EqualTo(TypeUtility.GetTypeDisplayName(typeof(int))));
            Assert.That(debugInfo.PropertyTypes[2], Is.EqualTo(TypeUtility.GetTypeDisplayName(typeof(string))));
            Assert.That(debugInfo.PropertyTypes[3], Is.EqualTo(TypeUtility.GetTypeDisplayName(typeof(double))));
            Assert.That(debugInfo.CanBeConstructed, Is.EqualTo(true));
            Assert.That(debugInfo.PropertyCount, Is.EqualTo(4));
            Assert.That(debugInfo.TypeTraits, Is.EqualTo(TypeTraits.Class));
        }
 public void PropertyBagType_FromDebugInfo_AreCorrectlyGenerated(Type type, PropertyBagType bagType)
 {
     Assert.That(PropertyBagDebugInfoStore.TryGetPropertyBagDetail(type, out var debugInfo), Is.True);
     Assert.That(debugInfo.PropertyBagType, Is.EqualTo(bagType));
 }