public void Events() { TargetClassDefinition targetClass = DefinitionObjectMother.GetActiveTargetClassDefinition(typeof(BaseType1)); EventInfo baseEvent1 = typeof(BaseType1).GetEvent("VirtualEvent"); EventInfo baseEvent2 = typeof(BaseType1).GetEvent("ExplicitEvent"); EventInfo mixinEvent = typeof(BT1Mixin1).GetEvent("VirtualEvent"); Assert.That(targetClass.Events.ContainsKey(baseEvent1), Is.True); Assert.That(targetClass.Events.ContainsKey(baseEvent2), Is.True); Assert.That(targetClass.Events.ContainsKey(mixinEvent), Is.False); EventDefinition member = targetClass.Events[baseEvent1]; Assert.That(new List <MemberDefinitionBase> (targetClass.GetAllMembers()).Contains(member), Is.True); Assert.That(new List <MemberDefinitionBase> (targetClass.Mixins[typeof(BT1Mixin1)].GetAllMembers()).Contains(member), Is.False); Assert.That(member.Name, Is.EqualTo("VirtualEvent")); Assert.That(member.FullName, Is.EqualTo(typeof(BaseType1).FullName + ".VirtualEvent")); Assert.That(member.IsEvent, Is.True); Assert.That(member.IsMethod, Is.False); Assert.That(member.IsProperty, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(targetClass)); Assert.That(member.AddMethod, Is.Not.Null); Assert.That(member.RemoveMethod, Is.Not.Null); Assert.That(targetClass.Methods.ContainsKey(member.AddMethod.MethodInfo), Is.False); Assert.That(targetClass.Methods.ContainsKey(member.RemoveMethod.MethodInfo), Is.False); Assert.That(member.AddMethod.Parent, Is.SameAs(member)); Assert.That(member.RemoveMethod.Parent, Is.SameAs(member)); member = targetClass.Events[baseEvent2]; Assert.That(member.AddMethod, Is.Not.Null); Assert.That(member.RemoveMethod, Is.Not.Null); MixinDefinition mixin1 = targetClass.Mixins[typeof(BT1Mixin1)]; Assert.That(mixin1.Events.ContainsKey(baseEvent1), Is.False); Assert.That(mixin1.Events.ContainsKey(mixinEvent), Is.True); member = mixin1.Events[mixinEvent]; Assert.That(new List <MemberDefinitionBase> (mixin1.GetAllMembers()).Contains(member), Is.True); Assert.That(member.Name, Is.EqualTo("VirtualEvent")); Assert.That(member.FullName, Is.EqualTo(typeof(BT1Mixin1).FullName + ".VirtualEvent")); Assert.That(member.IsEvent, Is.True); Assert.That(member.IsMethod, Is.False); Assert.That(member.IsProperty, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(mixin1)); Assert.That(member.AddMethod, Is.Not.Null); Assert.That(member.RemoveMethod, Is.Not.Null); }
public void Methods() { TargetClassDefinition targetClass = DefinitionObjectMother.GetActiveTargetClassDefinition(typeof(BaseType1)); MethodInfo baseMethod1 = typeof(BaseType1).GetMethod("VirtualMethod", new Type[0]); MethodInfo baseMethod2 = typeof(BaseType1).GetMethod("VirtualMethod", new[] { typeof(string) }); MethodInfo mixinMethod1 = typeof(BT1Mixin1).GetMethod("VirtualMethod", new Type[0]); Assert.That(targetClass.Methods.ContainsKey(baseMethod1), Is.True); Assert.That(targetClass.Methods.ContainsKey(mixinMethod1), Is.False); MemberDefinitionBase member = targetClass.Methods[baseMethod1]; Assert.That(new List <MemberDefinitionBase> (targetClass.GetAllMembers()).Contains(member), Is.True); Assert.That(new List <MemberDefinitionBase> (targetClass.Mixins[typeof(BT1Mixin1)].GetAllMembers()).Contains(member), Is.False); Assert.That(member.Name, Is.EqualTo("VirtualMethod")); Assert.That(member.FullName, Is.EqualTo(typeof(BaseType1).FullName + ".VirtualMethod")); Assert.That(member.IsMethod, Is.True); Assert.That(member.IsProperty, Is.False); Assert.That(member.IsEvent, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(targetClass)); Assert.That(member.Parent, Is.SameAs(targetClass)); Assert.That(targetClass.Methods.ContainsKey(baseMethod2), Is.True); Assert.That(targetClass.Methods[baseMethod2], Is.Not.SameAs(member)); MixinDefinition mixin1 = targetClass.Mixins[typeof(BT1Mixin1)]; Assert.That(mixin1.Methods.ContainsKey(baseMethod1), Is.False); Assert.That(mixin1.Methods.ContainsKey(mixinMethod1), Is.True); member = mixin1.Methods[mixinMethod1]; Assert.That(new List <MemberDefinitionBase> (mixin1.GetAllMembers()).Contains(member), Is.True); Assert.That(member.Name, Is.EqualTo("VirtualMethod")); Assert.That(member.FullName, Is.EqualTo(typeof(BT1Mixin1).FullName + ".VirtualMethod")); Assert.That(member.IsMethod, Is.True); Assert.That(member.IsProperty, Is.False); Assert.That(member.IsEvent, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(mixin1)); }
public void Properties() { TargetClassDefinition targetClass = DefinitionObjectMother.GetActiveTargetClassDefinition(typeof(BaseType1)); PropertyInfo baseProperty = typeof(BaseType1).GetProperty("VirtualProperty"); PropertyInfo indexedProperty1 = typeof(BaseType1).GetProperty("Item", new[] { typeof(int) }); PropertyInfo indexedProperty2 = typeof(BaseType1).GetProperty("Item", new[] { typeof(string) }); PropertyInfo mixinProperty = typeof(BT1Mixin1).GetProperty("VirtualProperty", new Type[0]); Assert.That(targetClass.Properties.ContainsKey(baseProperty), Is.True); Assert.That(targetClass.Properties.ContainsKey(indexedProperty1), Is.True); Assert.That(targetClass.Properties.ContainsKey(indexedProperty2), Is.True); Assert.That(targetClass.Properties.ContainsKey(mixinProperty), Is.False); PropertyDefinition member = targetClass.Properties[baseProperty]; Assert.That(new List <MemberDefinitionBase> (targetClass.GetAllMembers()).Contains(member), Is.True); Assert.That(new List <MemberDefinitionBase> (targetClass.Mixins[typeof(BT1Mixin1)].GetAllMembers()).Contains(member), Is.False); Assert.That(member.Name, Is.EqualTo("VirtualProperty")); Assert.That(member.FullName, Is.EqualTo(typeof(BaseType1).FullName + ".VirtualProperty")); Assert.That(member.IsProperty, Is.True); Assert.That(member.IsMethod, Is.False); Assert.That(member.IsEvent, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(targetClass)); Assert.That(member.GetMethod, Is.Not.Null); Assert.That(member.SetMethod, Is.Not.Null); Assert.That(targetClass.Methods.ContainsKey(member.GetMethod.MethodInfo), Is.False); Assert.That(targetClass.Methods.ContainsKey(member.SetMethod.MethodInfo), Is.False); Assert.That(member.GetMethod.Parent, Is.SameAs(member)); Assert.That(member.SetMethod.Parent, Is.SameAs(member)); member = targetClass.Properties[indexedProperty1]; Assert.That(targetClass.Properties[indexedProperty2], Is.Not.SameAs(member)); Assert.That(member.GetMethod, Is.Not.Null); Assert.That(member.SetMethod, Is.Null); member = targetClass.Properties[indexedProperty2]; Assert.That(member.GetMethod, Is.Null); Assert.That(member.SetMethod, Is.Not.Null); MixinDefinition mixin1 = targetClass.Mixins[typeof(BT1Mixin1)]; Assert.That(mixin1.Properties.ContainsKey(baseProperty), Is.False); Assert.That(mixin1.Properties.ContainsKey(mixinProperty), Is.True); member = mixin1.Properties[mixinProperty]; Assert.That(new List <MemberDefinitionBase> (mixin1.GetAllMembers()).Contains(member), Is.True); Assert.That(member.Name, Is.EqualTo("VirtualProperty")); Assert.That(member.FullName, Is.EqualTo(typeof(BT1Mixin1).FullName + ".VirtualProperty")); Assert.That(member.IsProperty, Is.True); Assert.That(member.IsMethod, Is.False); Assert.That(member.IsEvent, Is.False); Assert.That(member.DeclaringClass, Is.SameAs(mixin1)); Assert.That(member.GetMethod, Is.Null); Assert.That(member.SetMethod, Is.Not.Null); }