public void SetUp() { _implementationPropertyInformationStub = MockRepository.GenerateStub <IPropertyInformation>(); _declarationPropertyInformationStub = MockRepository.GenerateStub <IPropertyInformation>(); _interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( _implementationPropertyInformationStub, _declarationPropertyInformationStub); }
public void GetGetMethod_GetSetMethod_ExplicitPropertyImplementation() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty( "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceToImplement.ExplicitProperty", BindingFlags.NonPublic | BindingFlags.Instance)); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("ExplicitProperty")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); var getMethodResult = interfaceImplementationPropertyInformation.GetGetMethod(false); CheckMethodInformation( typeof(InterfaceImplementationMethodInformation), TypeAdapter.Create(typeof(ClassImplementingInterface)), "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceToImplement.get_ExplicitProperty", getMethodResult); var setMethodResult = interfaceImplementationPropertyInformation.GetSetMethod(false); CheckMethodInformation( typeof(InterfaceImplementationMethodInformation), TypeAdapter.Create(typeof(ClassImplementingInterface)), "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceToImplement.set_ExplicitProperty", setMethodResult); }
public void CanBeSetFromOutside_ImplicitPropertyImplementationAddingPrivateSetAccessor() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty("PropertyAddingPrivateSetAccessor")); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("PropertyAddingPrivateSetAccessor")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); Assert.That(interfaceImplementationPropertyInformation.CanBeSetFromOutside, Is.False); }
public void CanBeSetFromOutside_ImplicitWriteOnlyPropertyImplementation() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty("WriteOnlyImplicitProperty")); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("WriteOnlyImplicitProperty")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); Assert.That(interfaceImplementationPropertyInformation.CanBeSetFromOutside, Is.True); }
public void CanBeSetFromOutside_ExplicitWriteOnlyPropertyImplementation() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty( "Remotion.ObjectBinding.UnitTests.TestDomain.IInterfaceToImplement.WriteOnlyExplicitProperty", BindingFlags.NonPublic | BindingFlags.Instance)); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("WriteOnlyExplicitProperty")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); Assert.That(interfaceImplementationPropertyInformation.CanBeSetFromOutside, Is.True); }
public void GetGetMethod_GetSetMethod_ImplicitWriteOnlyPropertyImplementationAddingPrivateSetAccessor_NonPublicFlagFalse() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty("PropertyAddingPrivateSetAccessor")); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("PropertyAddingPrivateSetAccessor")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); var getMethodResult = interfaceImplementationPropertyInformation.GetGetMethod(false); CheckMethodInformation( typeof(InterfaceImplementationMethodInformation), TypeAdapter.Create(typeof(ClassImplementingInterface)), "get_PropertyAddingPrivateSetAccessor", getMethodResult); Assert.That(interfaceImplementationPropertyInformation.GetSetMethod(false), Is.Null); }
public void GetGetMethod_GetSetMethod_WriteOnlyImplicitPropertyImplementation() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty("WriteOnlyImplicitProperty")); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("WriteOnlyImplicitProperty")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); Assert.That(interfaceImplementationPropertyInformation.GetGetMethod(false), Is.Null); var getMethodResult = interfaceImplementationPropertyInformation.GetSetMethod(false); CheckMethodInformation( typeof(InterfaceImplementationMethodInformation), TypeAdapter.Create(typeof(ClassImplementingInterface)), "set_WriteOnlyImplicitProperty", getMethodResult); }
protected IPropertyInformation GetPropertyInfo(Type type, Type interfaceType, string propertyName) { PropertyInfo interfacePropertyInfo = interfaceType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); Assert.IsNotNull(interfacePropertyInfo, "Property '{0}' was not found on type '{1}'.", propertyName, interfaceType); PropertyInfo propertyInfo = type.GetProperty(propertyName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); if (propertyInfo == null) { Type interfaceTypeDefinition = interfaceType.IsGenericType ? interfaceType.GetGenericTypeDefinition() : interfaceType; string explicitName = interfaceTypeDefinition.FullName.Replace("`1", "<T>") + "." + interfacePropertyInfo.Name; propertyInfo = type.GetProperty(explicitName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); Assert.IsNotNull(propertyInfo, "Property '{0}' (or '{1}') was not found on type '{2}'.", propertyName, explicitName, type); } var introducedMemberAttributes = propertyInfo.GetCustomAttributes(typeof(IntroducedMemberAttribute), true); if (introducedMemberAttributes.Length > 0) { var introducedMemberAttribute = introducedMemberAttributes[0] as IntroducedMemberAttribute; var interfaceProperty = PropertyInfoAdapter.Create(introducedMemberAttribute.IntroducedInterface.GetProperty(introducedMemberAttribute.InterfaceMemberName)); var mixinProperty = interfaceProperty.FindInterfaceImplementation(introducedMemberAttribute.Mixin); var interfaceImplementation = new InterfaceImplementationPropertyInformation(mixinProperty, interfaceProperty); return(new MixinIntroducedPropertyInformation(interfaceImplementation)); } else { var propertyInfoAdapter = PropertyInfoAdapter.Create(propertyInfo); var interfaceDeclaration = propertyInfoAdapter.FindInterfaceDeclarations().SingleOrDefault(); if (interfaceDeclaration != null) { return(new InterfaceImplementationPropertyInformation(propertyInfoAdapter, interfaceDeclaration)); } else { return(propertyInfoAdapter); } } }
public void GetGetMethod_GetSetMethod_ImplicitReadOnlyOnlyPropertyImplementationAddingSetAccessor() { var implementationPropertyInfo = PropertyInfoAdapter.Create(typeof(ClassImplementingInterface).GetProperty("PropertyAddingSetAccessor")); var declaringPropertyInfo = PropertyInfoAdapter.Create(typeof(IInterfaceToImplement).GetProperty("PropertyAddingSetAccessor")); var interfaceImplementationPropertyInformation = new InterfaceImplementationPropertyInformation( implementationPropertyInfo, declaringPropertyInfo); var getMethodResult = interfaceImplementationPropertyInformation.GetGetMethod(false); CheckMethodInformation( typeof(InterfaceImplementationMethodInformation), TypeAdapter.Create(typeof(ClassImplementingInterface)), "get_PropertyAddingSetAccessor", getMethodResult); var setMethodResult = interfaceImplementationPropertyInformation.GetSetMethod(false); CheckMethodInformation( typeof(MethodInfoAdapter), TypeAdapter.Create(typeof(ClassImplementingInterface)), "set_PropertyAddingSetAccessor", setMethodResult); }
public void GetHashCodeTest() { var equalObject = new InterfaceImplementationPropertyInformation(_implementationPropertyInformationStub, _declarationPropertyInformationStub); Assert.That(_interfaceImplementationPropertyInformation.GetHashCode(), Is.EqualTo(equalObject.GetHashCode())); }