예제 #1
0
        public bool Equals(CustomField other)
        {
            if (other == null)
            {
                return(false);
            }

            return(Id == other.Id &&
                   IsFilter == other.IsFilter &&
                   IsRequired == other.IsRequired &&
                   Multiple == other.Multiple &&
                   Searchable == other.Searchable &&
                   Visible == other.Visible &&
                   CustomizedType.Equals(other.CustomizedType) &&
                   DefaultValue.Equals(other.DefaultValue) &&
                   FieldFormat.Equals(other.FieldFormat) &&
                   MaxLength == other.MaxLength &&
                   MinLength == other.MinLength &&
                   Name.Equals(other.Name) &&
                   Regexp.Equals(other.Regexp) &&
                   PossibleValues.Equals(other.PossibleValues) &&
                   Roles.Equals(other.Roles) &&
                   Trackers.Equals(other.Trackers));
        }
예제 #2
0
        public void FromExpression_CanGetMetadataFromCustomizedType()
        {
            var instance1 = new CustomizedType();
            var instance2 = new CustomizedType();

            var baseType = typeof(CustomizedType);

            // instance property inherits type customization
            {
                var instancePropertyExpressions = instance2.InstanceProperty1Expressions().ToList();
                var baseInstanceProperty        = baseType.GetProperty(nameof(CustomizedType.InstanceProperty1), BindingFlags.Instance | BindingFlags.Public);

                var actual = SettingMetadata.FromExpression(instancePropertyExpressions.Last());

                AreEqual(baseType, actual.Type);
                AreSame(instance2, actual.Instance);
                AreEqual(baseInstanceProperty, actual.Member);
                AreEqual("InstanceProperty1x", actual.MemberName);

                AssertDefault(actual);
            }

            // instance property overrides type customization
            {
                var instancePropertyExpressions = instance2.InstanceProperty2Expressions().ToList();
                var baseInstanceProperty        = baseType.GetProperty(nameof(CustomizedType.InstanceProperty2), BindingFlags.Instance | BindingFlags.Public);

                var actual = SettingMetadata.FromExpression(instancePropertyExpressions.Last());

                AreEqual(baseType, actual.Type);
                AreSame(instance2, actual.Instance);
                AreEqual(baseInstanceProperty, actual.Member);
                AreEqual("InstanceProperty2x", actual.MemberName);

                //AssertDefault(actual);

                AreEqual("Prefix2", actual.Prefix);
                AreEqual("BaseClass2", actual.TypeName);
                AreEqual("Provider2", actual.ProviderName);
                AreEqual(SettingNameStrength.High, actual.SettingNameStrength);
                AreEqual(PrefixHandling.Enable, actual.PrefixHandling);
            }

            // static property inherits type customization
            {
                var staticPropertyExpressions = instance2.StaticPropertyExpressions().ToList();
                var baseStaticProperty        = baseType.GetProperty(nameof(CustomizedType.StaticProperty1), BindingFlags.Static | BindingFlags.Public);

                var actual = SettingMetadata.FromExpression(staticPropertyExpressions.Last());

                IsNull(actual.Instance);
                AreEqual(baseStaticProperty, actual.Member);
                AreEqual("StaticProperty1x", actual.MemberName);

                AssertDefault(actual);
            }

            void AssertDefault(SettingMetadata actual)
            {
                // These cases are common to all tests.

                AreEqual(Namespace, actual.Namespace);
                IsTrue(actual.Validations.Empty());
                IsNull(actual.DefaultValue);
                AreEqual("Prefix1", actual.Prefix);
                AreEqual("BaseClass2", actual.TypeName);
                AreEqual("Provider1", actual.ProviderName);
                AreEqual(SettingNameStrength.Low, actual.SettingNameStrength);
                AreEqual(PrefixHandling.Enable, actual.PrefixHandling);
            }
        }