public void GenerateXml_ForGenericTypeDefinition() { var targetType = new InvolvedType(typeof(GenericTarget <,>)); var mixinConfiguration = MixinConfiguration.BuildNew() .ForClass(typeof(GenericTarget <,>)).AddMixin <ClassWithBookAttribute> ().AddMixin <Mixin3> () .BuildConfiguration(); targetType.ClassContext = new ReflectedObject(mixinConfiguration.ClassContexts.First()); var interfaceIdentifierGenerator = new IdentifierGenerator <Type> (); var attributeIdentifierGenerator = new IdentifierGenerator <Type> (); var assemblyIdentifierGenerator = new IdentifierGenerator <Assembly> (); var reportGenerator = new MixinReferenceReportGenerator( targetType, assemblyIdentifierGenerator, // generic target class new IdentifierGenerator <Type> (), interfaceIdentifierGenerator, attributeIdentifierGenerator, _remotionReflector, _outputFormatter); var output = reportGenerator.GenerateXml(); var expectedOutput = new XElement( "Mixins", new XElement( "Mixin", new XAttribute("ref", "0"), new XAttribute("index", "n/a"), new XAttribute("relation", "Extends"), new XAttribute("instance-name", "ClassWithBookAttribute"), new XAttribute("introduced-member-visibility", "private"), // has no dependencies new XElement("AdditionalDependencies") ), new XElement( "Mixin", new XAttribute("ref", "1"), new XAttribute("index", "n/a"), new XAttribute("relation", "Extends"), new XAttribute("instance-name", "Mixin3"), new XAttribute("introduced-member-visibility", "private"), // has no dependencies new XElement("AdditionalDependencies") ) ); Assert.That(output.ToString(), Is.EqualTo(expectedOutput.ToString())); }
public void GenerateXml_WithMixins() { var targetType = new InvolvedType(typeof(TargetClass1)); var mixinConfiguration = MixinConfiguration.BuildNew().ForClass <TargetClass1> ().AddMixin <Mixin1> ().BuildConfiguration(); targetType.ClassContext = new ReflectedObject(mixinConfiguration.ClassContexts.First()); targetType.TargetClassDefinition = new ReflectedObject(TargetClassDefinitionUtility.GetConfiguration(targetType.Type, mixinConfiguration)); var interfaceIdentifierGenerator = new IdentifierGenerator <Type> (); var attributeIdentifierGenerator = new IdentifierGenerator <Type> (); var assemblyIdentifierGenerator = new IdentifierGenerator <Assembly> (); var reportGenerator = new MixinReferenceReportGenerator( targetType, assemblyIdentifierGenerator, new IdentifierGenerator <Type> (), interfaceIdentifierGenerator, attributeIdentifierGenerator, _remotionReflector, _outputFormatter ); var output = reportGenerator.GenerateXml(); var targetClassDefinition = TargetClassDefinitionUtility.GetConfiguration(targetType.Type, mixinConfiguration); var mixinDefinition = targetClassDefinition.GetMixinByConfiguredType(typeof(Mixin1)); var expectedOutput = new XElement( "Mixins", new XElement( "Mixin", new XAttribute("ref", "0"), new XAttribute("index", "0"), new XAttribute("relation", "Extends"), new XAttribute("instance-name", "Mixin1"), new XAttribute("introduced-member-visibility", "private"), // has no dependencies new XElement("AdditionalDependencies"), new InterfaceIntroductionReportGenerator(new ReflectedObject(mixinDefinition.InterfaceIntroductions), interfaceIdentifierGenerator). GenerateXml(), new AttributeIntroductionReportGenerator( new ReflectedObject(mixinDefinition.AttributeIntroductions), attributeIdentifierGenerator, Helpers.RemotionReflectorFactory.GetRemotionReflection()). GenerateXml(), new MemberOverrideReportGenerator(new ReflectedObject(mixinDefinition.GetAllOverrides())).GenerateXml(), new TargetCallDependenciesReportGenerator(new ReflectedObject(mixinDefinition), assemblyIdentifierGenerator, _remotionReflector, _outputFormatter).GenerateXml() )); Assert.That(output.ToString(), Is.EqualTo(expectedOutput.ToString())); }
public void GenerateXml_NoMixins() { var involvedTypeDummy = new InvolvedType(typeof(object)); var reportGenerator = new MixinReferenceReportGenerator( involvedTypeDummy, new IdentifierGenerator <Assembly> (), new IdentifierGenerator <Type> (), new IdentifierGenerator <Type> (), new IdentifierGenerator <Type> (), _remotionReflector, _outputFormatter ); var output = reportGenerator.GenerateXml(); Assert.That(output, Is.Null); }