public void GenerateXml_WithIntroducedAttributes()
        {
            var attributeIdentifierGenerator = new IdentifierGenerator <Type>();
            var mixinConfiguration           = MixinConfiguration.BuildNew()
                                               .ForClass <UselessObject>().AddMixin <ObjectWithInheritableAttribute>()
                                               .BuildConfiguration();

            var type1 = new InvolvedType(typeof(UselessObject));

            type1.ClassContext = new ReflectedObject(mixinConfiguration.ClassContexts.First());

            var attributeIntroductions = GetAttributeIntroductions(type1, typeof(ObjectWithInheritableAttribute), mixinConfiguration);
            var reportGenerator        = new AttributeIntroductionReportGenerator(
                attributeIntroductions, attributeIdentifierGenerator, Helpers.RemotionReflectorFactory.GetRemotionReflection());

            var output = reportGenerator.GenerateXml();

            var expectedOutput = new XElement(
                "AttributeIntroductions",
                new XElement(
                    "IntroducedAttribute",
                    new XAttribute("ref", "0")
                    ));

            Assert.That(output.ToString(), Is.EqualTo(expectedOutput.ToString()));
        }
        public void GenerateXml_NoIntroducedAttribute()
        {
            var mixinConfiguration = MixinConfiguration.BuildNew()
                                     .ForClass <TargetClass2>().AddMixin <Mixin1>()
                                     .BuildConfiguration();

            var type1 = new InvolvedType(typeof(TargetClass2));

            type1.ClassContext = new ReflectedObject(mixinConfiguration.ClassContexts.First());

            var attributeIntroductions = GetAttributeIntroductions(type1, typeof(Mixin1), mixinConfiguration);
            var reportGenerator        = new AttributeIntroductionReportGenerator(
                attributeIntroductions, new IdentifierGenerator <Type>(), Helpers.RemotionReflectorFactory.GetRemotionReflection());
            var output = reportGenerator.GenerateXml();

            var expectedOutput = new XElement("AttributeIntroductions");

            Assert.That(output.ToString(), Is.EqualTo(expectedOutput.ToString()));
        }