private CompositeReportGenerator CreateCompositeReportGenerator()
        {
            var assemblyIdentifierGenerator            = new IdentifierGenerator <Assembly>();
            var readOnlyassemblyIdentifierGenerator    = assemblyIdentifierGenerator.GetReadonlyIdentiferGenerator("none");
            var readonlyInvolvedTypeIdentiferGenerator =
                new IdentifierPopulator <Type> (_involvedTypes.Select(it => it.Type)).GetReadonlyIdentifierGenerator("none");
            var memberIdentifierGenerator   = new IdentifierGenerator <MemberInfo> ();
            var interfaceIdentiferGenerator = new IdentifierGenerator <Type>();
            var attributeIdentiferGenerator = new IdentifierGenerator <Type>();

            var involvedReport = new InvolvedTypeReportGenerator(
                _involvedTypes,
                assemblyIdentifierGenerator,
                readonlyInvolvedTypeIdentiferGenerator,
                memberIdentifierGenerator,
                interfaceIdentiferGenerator,
                attributeIdentiferGenerator,
                _remotionReflector,
                _outputFormatter);
            var interfaceReport = new InterfaceReportGenerator(
                _involvedTypes,
                assemblyIdentifierGenerator,
                readonlyInvolvedTypeIdentiferGenerator,
                memberIdentifierGenerator,
                interfaceIdentiferGenerator,
                _remotionReflector,
                _outputFormatter);
            var attributeReport = new AttributeReportGenerator(
                _involvedTypes,
                assemblyIdentifierGenerator,
                readonlyInvolvedTypeIdentiferGenerator,
                attributeIdentiferGenerator,
                _remotionReflector,
                _outputFormatter);
            var assemblyReport = new AssemblyReportGenerator(_involvedTypes, readOnlyassemblyIdentifierGenerator, readonlyInvolvedTypeIdentiferGenerator);

            var configurationErrorReport = new ConfigurationErrorReportGenerator(_configurationErrors);
            var validationErrorReport    = new ValidationErrorReportGenerator(_validationErrors, _remotionReflector);

            return(new CompositeReportGenerator(
                       involvedReport,
                       interfaceReport,
                       attributeReport,
                       assemblyReport,
                       configurationErrorReport,
                       validationErrorReport));
        }
        public void GenerateXml_MoreAssemblies()
        {
            var typeStub1 = MockRepository.GenerateStub<Type> ();
              typeStub1.Stub (t => t.Assembly).Return (_assembly1);

              var typeStub2 = MockRepository.GenerateStub<Type> ();
              typeStub2.Stub (t => t.Assembly).Return (_assembly2);

              var assemblyIdentifierGeneratorStub =
            StubFactory.CreateIdentifierGeneratorStub (new[] { _assembly1, _assembly2 });

              var typeIdentifierGeneratorStub =
            StubFactory.CreateIdentifierGeneratorStub (new[] { typeStub1, typeStub2 });

              var involvedTypes = new[] { new InvolvedType (typeStub1), new InvolvedType (typeStub2) };

              var reportGenerator = new AssemblyReportGenerator (involvedTypes, assemblyIdentifierGeneratorStub, typeIdentifierGeneratorStub);
              var output = reportGenerator.GenerateXml ();

              var expectedOutput = new XElement (
              "Assemblies",
              new XElement (
              "Assembly",
              new XAttribute ("id", "0"),
              new XAttribute ("name", _assembly1.GetName ().Name),
              new XAttribute ("version", _assembly1.GetName ().Version),
              new XAttribute ("location", "./" + Path.GetFileName (_assembly1.Location)),
              new XAttribute ("culture", _assembly1.GetName ().CultureInfo),
              new XAttribute ("publicKeyToken", Convert.ToBase64String (_assembly1.GetName ().GetPublicKeyToken ())),
              new XElement ("InvolvedType-Reference",
                new XAttribute ("ref", typeIdentifierGeneratorStub.GetIdentifier (typeStub1)))),
              new XElement (
              "Assembly",
              new XAttribute ("id", "1"),
              new XAttribute ("name", _assembly2.GetName ().Name),
              new XAttribute ("version", _assembly2.GetName ().Version),
            // _assembly2 is of type object - which is a GAC (mscorlib.dll)
              new XAttribute ("location", _assembly2.Location),
              new XAttribute ("culture", _assembly2.GetName ().CultureInfo),
              new XAttribute ("publicKeyToken", Convert.ToBase64String (_assembly2.GetName ().GetPublicKeyToken ())),
              new XElement ("InvolvedType-Reference",
                new XAttribute ("ref", typeIdentifierGeneratorStub.GetIdentifier (typeStub2)))));

              Assert.That (output.ToString (), Is.EqualTo (expectedOutput.ToString ()));
        }
        private CompositeReportGenerator CreateCompositeReportGenerator()
        {
            var assemblyIdentifierGenerator = new IdentifierGenerator<Assembly>();
              var readOnlyassemblyIdentifierGenerator = assemblyIdentifierGenerator.GetReadonlyIdentiferGenerator ("none");
              var readonlyInvolvedTypeIdentiferGenerator =
              new IdentifierPopulator<Type> (_involvedTypes.Select (it => it.Type)).GetReadonlyIdentifierGenerator ("none");
              var memberIdentifierGenerator = new IdentifierGenerator<MemberInfo> ();
              var interfaceIdentiferGenerator = new IdentifierGenerator<Type>();
              var attributeIdentiferGenerator = new IdentifierGenerator<Type>();

              var involvedReport = new InvolvedTypeReportGenerator (
              _involvedTypes,
              assemblyIdentifierGenerator,
              readonlyInvolvedTypeIdentiferGenerator,
              memberIdentifierGenerator,
              interfaceIdentiferGenerator,
              attributeIdentiferGenerator,
              _remotionReflector,
              _outputFormatter);
              var interfaceReport = new InterfaceReportGenerator (
              _involvedTypes,
              assemblyIdentifierGenerator,
              readonlyInvolvedTypeIdentiferGenerator,
              memberIdentifierGenerator,
              interfaceIdentiferGenerator,
              _remotionReflector,
              _outputFormatter);
              var attributeReport = new AttributeReportGenerator (
              _involvedTypes,
              assemblyIdentifierGenerator,
              readonlyInvolvedTypeIdentiferGenerator,
              attributeIdentiferGenerator,
              _remotionReflector,
              _outputFormatter);
              var assemblyReport = new AssemblyReportGenerator (_involvedTypes, readOnlyassemblyIdentifierGenerator, readonlyInvolvedTypeIdentiferGenerator);

              var configurationErrorReport = new ConfigurationErrorReportGenerator (_configurationErrors);
              var validationErrorReport = new ValidationErrorReportGenerator (_validationErrors, _remotionReflector);

              return new CompositeReportGenerator (
              involvedReport,
              interfaceReport,
              attributeReport,
              assemblyReport,
              configurationErrorReport,
              validationErrorReport);
        }