コード例 #1
0
        public void CreatePropertyFinder()
        {
            IPropertyFinder finder = BindableObjectMetadataFactory.Create().CreatePropertyFinder(typeof(TestClass));

            Assert.That(finder.GetType(), Is.SameAs(typeof(ReflectionBasedPropertyFinder)));
            Assert.That(new List <IPropertyInformation> (finder.GetPropertyInfos())[0].DeclaringType, Is.SameAs(TypeAdapter.Create(typeof(TestClass))));
        }
コード例 #2
0
        public void CreateClassReflector()
        {
            BindableObjectProvider provider       = new BindableObjectProvider();
            IClassReflector        classReflector = BindableObjectMetadataFactory.Create().CreateClassReflector(typeof(TestClass), provider);

            Assert.That(classReflector.TargetType, Is.SameAs(typeof(TestClass)));
            Assert.That(classReflector.BusinessObjectProvider, Is.SameAs(provider));
        }
コード例 #3
0
        public override void SetUp()
        {
            base.SetUp();

            _type = typeof(DerivedBusinessObjectClass);
            _businessObjectProvider             = new BindableObjectProvider();
            _metadataFactory                    = BindableObjectMetadataFactory.Create();
            _bindableObjectGlobalizationService = SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>();
        }
コード例 #4
0
 public void Instantiate_WithMixin()
 {
     using (MixinConfiguration.BuildNew().ForClass(typeof(BindableObjectMetadataFactory)).AddMixin <MixinStub>().EnterScope())
     {
         BindableObjectMetadataFactory factory = BindableObjectMetadataFactory.Create();
         Assert.That(factory, Is.InstanceOf(typeof(BindableObjectMetadataFactory)));
         Assert.That(factory, Is.InstanceOf(typeof(IMixinTarget)));
     }
 }
コード例 #5
0
        public void GetPropertyDefinition_WithInvalidPropertyName()
        {
            var classReflector = new ClassReflector(
                typeof(ClassWithAllDataTypes),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            Assert.That(bindableObjectClass.GetPropertyDefinition("Invalid"), Is.Null);
        }
コード例 #6
0
        public void HasPropertyDefinition_ForMixedProperty()
        {
            var classReflector = new ClassReflector(
                typeof(ClassWithMixedProperty),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            Assert.That(bindableObjectClass.HasPropertyDefinition("MixedProperty"), Is.True);
        }
コード例 #7
0
 public void CreatePropertyReflector()
 {
     using (MixinConfiguration.BuildNew().EnterScope())
     {
         PropertyInfo         propertyInfo      = typeof(TestClass).GetProperty("Property");
         IPropertyInformation property          = PropertyInfoAdapter.Create(propertyInfo);
         PropertyReflector    propertyReflector =
             BindableObjectMetadataFactory.Create().CreatePropertyReflector(typeof(TestClass), property, new BindableObjectProvider());
         Assert.That(propertyReflector.GetType(), Is.SameAs(typeof(PropertyReflector)));
         Assert.That(propertyReflector.PropertyInfo, Is.SameAs(property));
     }
 }
コード例 #8
0
        public void HasPropertyDefinition()
        {
            var classReflector = new ClassReflector(
                typeof(ClassWithAllDataTypes),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            Assert.That(bindableObjectClass.HasPropertyDefinition("String"), Is.True);
            Assert.That(bindableObjectClass.HasPropertyDefinition("Invalid"), Is.False);
        }
コード例 #9
0
        public void GetPropertyDefinition()
        {
            PropertyReflector propertyReflector =
                PropertyReflector.Create(GetPropertyInfo(typeof(SimpleBusinessObjectClass), "String"), _bindableObjectProvider);
            var classReflector = new ClassReflector(
                typeof(ClassWithAllDataTypes),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            CheckPropertyBase(propertyReflector.GetMetadata(), bindableObjectClass.GetPropertyDefinition("String"));
        }
コード例 #10
0
        public void GetPropertyDefinitions()
        {
            Type type = typeof(ClassWithReferenceType <SimpleReferenceType>);
            var  expectedProperties = new[]
            {
                CreateProperty(type, "Scalar"),
                CreateProperty(type, "ReadOnlyScalar"),
                CreateProperty(type, "ReadOnlyAttributeScalar"),
                CreateProperty(type, "ReadOnlyNonPublicSetterScalar"),
                CreateProperty(type, "Array"),
                CreateProperty(type, "ImplicitInterfaceScalar"),
                CreateProperty(type, "ImplicitInterfaceReadOnlyScalar"),
                CreateProperty(
                    type,
                    "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceWithReferenceType<T>.ExplicitInterfaceScalar")
                ,
                CreateProperty(
                    type,
                    "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceWithReferenceType<T>.ExplicitInterfaceReadOnlyScalar"),
                CreateProperty(type, "PropertyWithNoSetter"),
                CreateProperty(type, "ThrowingProperty"),
            };

            var classReflector = new ClassReflector(
                type,
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            IBusinessObjectProperty[] actualProperties = bindableObjectClass.GetPropertyDefinitions();

            Assert.That(actualProperties.Length, Is.EqualTo(expectedProperties.Length));
            foreach (PropertyBase expectedProperty in expectedProperties)
            {
                bool isFound = false;
                foreach (IBusinessObjectProperty actualProperty in actualProperties)
                {
                    if (actualProperty.Identifier == expectedProperty.Identifier)
                    {
                        Assert.That(isFound, Is.False, "Multiple properties '{0}' found", expectedProperty.Identifier, BindableObjectMetadataFactory.Create());
                        CheckPropertyBase(expectedProperty, actualProperty);
                        isFound = true;
                    }
                }
                Assert.That(isFound, Is.True, "Property '{0}' was not found", expectedProperty.Identifier);
            }
        }
コード例 #11
0
        public override void SetUp()
        {
            base.SetUp();

            _businessObjectProvider             = CreateBindableObjectProviderWithStubBusinessObjectServiceFactory();
            _bindableObjectGlobalizationService = SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>();
            ClassReflector classReflector = new ClassReflector(
                typeof(ClassWithValueType <bool>),
                _businessObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);

            _businessObjectClass = classReflector.GetMetadata();

            _mockRepository = new MockRepository();
        }
コード例 #12
0
        public void GetPropertyDefinition_ForMixedProperty()
        {
            PropertyReflector propertyReflector = PropertyReflector.Create(
                GetPropertyInfo(
                    MixinTypeUtility.GetConcreteMixedType(typeof(ClassWithMixedProperty)),
                    typeof(IMixinAddingProperty).FullName + ".MixedProperty"),
                _bindableObjectProvider);
            var classReflector = new ClassReflector(
                typeof(ClassWithMixedProperty),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                _bindableObjectGlobalizationService);
            BindableObjectClass bindableObjectClass = classReflector.GetMetadata();

            CheckPropertyBase(propertyReflector.GetMetadata(), bindableObjectClass.GetPropertyDefinition("MixedProperty"));
        }
コード例 #13
0
        public void GetDisplayName_WithGlobalizationService()
        {
            var mockMemberInformationGlobalizationService = _mockRepository.StrictMock <IMemberInformationGlobalizationService> ();
            var classReflector = new ClassReflector(
                typeof(ClassWithAllDataTypes),
                _bindableObjectProvider,
                BindableObjectMetadataFactory.Create(),
                new BindableObjectGlobalizationService(
                    MockRepository.GenerateStub <IGlobalizationService>(),
                    mockMemberInformationGlobalizationService,
                    MockRepository.GenerateStub <IEnumerationGlobalizationService>(),
                    MockRepository.GenerateStub <IExtensibleEnumGlobalizationService>()));
            var bindableObjectClass = classReflector.GetMetadata();

            Expect.Call(
                mockMemberInformationGlobalizationService.TryGetTypeDisplayName(
                    Arg <ITypeInformation> .Matches(c => c.ConvertToRuntimeType() == bindableObjectClass.TargetType),
                    Arg <ITypeInformation> .Matches(c => c.ConvertToRuntimeType() == bindableObjectClass.TargetType),
                    out Arg <string> .Out("MockString").Dummy))
            .Return(true);
            _mockRepository.ReplayAll();

            Assert.That(bindableObjectClass.GetDisplayName(), Is.EqualTo("MockString"));
        }
 protected BindableObjectProvider CreateBindableObjectProviderWithStubBusinessObjectServiceFactory()
 {
     return(new BindableObjectProvider(BindableObjectMetadataFactory.Create(), MockRepository.GenerateStub <IBusinessObjectServiceFactory>()));
 }
        public override void SetUp()
        {
            base.SetUp();

            _factory = BindableObjectMetadataFactory.Create();
        }