PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/src/NUnit/core/Extensibility/FrameworkRegistry.cs

#
C# | 73 lines | 46 code | 8 blank | 19 comment | 2 complexity | fb32aa9ca94b65d6723a33ccd57b9cdd MD5 | raw file
Possible License(s): GPL-2.0
  1. // ****************************************************************
  2. // Copyright 2007, Charlie Poole
  3. // This is free software licensed under the NUnit license. You may
  4. // obtain a copy of the license at http://nunit.org.
  5. // ****************************************************************
  6. using System;
  7. using System.Reflection;
  8. using System.Collections;
  9. namespace NUnit.Core.Extensibility
  10. {
  11. public class FrameworkRegistry : ExtensionPoint, IFrameworkRegistry
  12. {
  13. #region Constructor
  14. public FrameworkRegistry( IExtensionHost host )
  15. : base( "FrameworkRegistry", host ) { }
  16. #endregion Constructor
  17. #region Instance Fields
  18. /// <summary>
  19. /// List of FrameworkInfo structs for supported frameworks
  20. /// </summary>
  21. private Hashtable testFrameworks = new Hashtable();
  22. #endregion
  23. #region IFrameworkRegistry Members
  24. /// <summary>
  25. /// Register a framework. NUnit registers itself using this method. Add-ins that
  26. /// work with or emulate a different framework may register themselves as well.
  27. /// </summary>
  28. /// <param name="frameworkName">The name of the framework</param>
  29. /// <param name="assemblyName">The name of the assembly that framework users reference</param>
  30. public void Register(string frameworkName, string assemblyName)
  31. {
  32. testFrameworks[frameworkName] = new TestFramework(frameworkName, assemblyName);
  33. }
  34. #endregion
  35. #region ExtensionPoint overrides
  36. protected override bool IsValidExtension(object extension)
  37. {
  38. return extension is TestFramework;
  39. }
  40. #endregion
  41. #region Other Methods
  42. /// <summary>
  43. /// Get a list of known frameworks referenced by an assembly
  44. /// </summary>
  45. /// <param name="assembly">The assembly to be examined</param>
  46. /// <returns>A list of AssemblyNames</returns>
  47. public IList GetReferencedFrameworks(Assembly assembly)
  48. {
  49. ArrayList referencedAssemblies = new ArrayList();
  50. foreach (AssemblyName assemblyRef in assembly.GetReferencedAssemblies())
  51. {
  52. foreach (TestFramework info in testFrameworks.Values)
  53. {
  54. if (assemblyRef.Name == info.AssemblyName)
  55. {
  56. referencedAssemblies.Add(assemblyRef);
  57. break;
  58. }
  59. }
  60. }
  61. return referencedAssemblies;
  62. }
  63. #endregion
  64. }
  65. }