PageRenderTime 48ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/V4/PrismLibrary/Desktop/Prism.UnityExtensions.Tests/UnityBootstrapperFixture.cs

#
C# | 285 lines | 221 code | 47 blank | 17 comment | 0 complexity | 392fd4f218d836d9d05ac9cb2d79b1be MD5 | raw file
  1. //===================================================================================
  2. // Microsoft patterns & practices
  3. // Composite Application Guidance for Windows Presentation Foundation and Silverlight
  4. //===================================================================================
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
  7. // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
  8. // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  9. // FITNESS FOR A PARTICULAR PURPOSE.
  10. //===================================================================================
  11. // The example companies, organizations, products, domain names,
  12. // e-mail addresses, logos, people, places, and events depicted
  13. // herein are fictitious. No association with any real company,
  14. // organization, product, domain name, email address, logo, person,
  15. // places, or events is intended or should be inferred.
  16. //===================================================================================
  17. using System.Collections.Generic;
  18. using System.Windows;
  19. using System.Windows.Controls;
  20. using Microsoft.Practices.Prism.UnityExtensions.Tests.Mocks;
  21. using Microsoft.Practices.Prism.Logging;
  22. using Microsoft.Practices.Prism.Modularity;
  23. using Microsoft.Practices.Prism.Regions;
  24. using Microsoft.Practices.Unity;
  25. using Microsoft.VisualStudio.TestTools.UnitTesting;
  26. namespace Microsoft.Practices.Prism.UnityExtensions.Tests
  27. {
  28. [TestClass]
  29. public class UnityBootstrapperFixture: BootstrapperFixtureBase
  30. {
  31. [TestMethod]
  32. public void ContainerDefaultsToNull()
  33. {
  34. var bootstrapper = new DefaultUnityBootstrapper();
  35. var container = bootstrapper.BaseContainer;
  36. Assert.IsNull(container);
  37. }
  38. [TestMethod]
  39. public void CanCreateConcreteBootstrapper()
  40. {
  41. new DefaultUnityBootstrapper();
  42. }
  43. [TestMethod]
  44. public void CreateContainerShouldInitializeContainer()
  45. {
  46. var bootstrapper = new DefaultUnityBootstrapper();
  47. IUnityContainer container = bootstrapper.CallCreateContainer();
  48. Assert.IsNotNull(container);
  49. Assert.IsInstanceOfType(container, typeof(IUnityContainer));
  50. }
  51. [TestMethod]
  52. public void ConfigureContainerAddsModuleCatalogToContainer()
  53. {
  54. var bootstrapper = new DefaultUnityBootstrapper();
  55. bootstrapper.Run();
  56. var returnedCatalog = bootstrapper.BaseContainer.Resolve<IModuleCatalog>();
  57. Assert.IsNotNull(returnedCatalog);
  58. Assert.IsTrue(returnedCatalog is ModuleCatalog);
  59. }
  60. [TestMethod]
  61. public void ConfigureContainerAddsLoggerFacadeToContainer()
  62. {
  63. var bootstrapper = new DefaultUnityBootstrapper();
  64. bootstrapper.Run();
  65. var returnedCatalog = bootstrapper.BaseContainer.Resolve<ILoggerFacade>();
  66. Assert.IsNotNull(returnedCatalog);
  67. }
  68. [TestMethod]
  69. public void ConfigureContainerAddsRegionNavigationJournalEntryToContainer()
  70. {
  71. var bootstrapper = new DefaultUnityBootstrapper();
  72. bootstrapper.Run();
  73. var actual1 = bootstrapper.BaseContainer.Resolve<IRegionNavigationJournalEntry>();
  74. var actual2 = bootstrapper.BaseContainer.Resolve<IRegionNavigationJournalEntry>();
  75. Assert.IsNotNull(actual1);
  76. Assert.IsNotNull(actual2);
  77. Assert.AreNotSame(actual1, actual2);
  78. }
  79. [TestMethod]
  80. public void ConfigureContainerAddsRegionNavigationJournalToContainer()
  81. {
  82. var bootstrapper = new DefaultUnityBootstrapper();
  83. bootstrapper.Run();
  84. var actual1 = bootstrapper.BaseContainer.Resolve<IRegionNavigationJournal>();
  85. var actual2 = bootstrapper.BaseContainer.Resolve<IRegionNavigationJournal>();
  86. Assert.IsNotNull(actual1);
  87. Assert.IsNotNull(actual2);
  88. Assert.AreNotSame(actual1, actual2);
  89. }
  90. [TestMethod]
  91. public void ConfigureContainerAddsRegionNavigationServiceToContainer()
  92. {
  93. var bootstrapper = new DefaultUnityBootstrapper();
  94. bootstrapper.Run();
  95. var actual1 = bootstrapper.BaseContainer.Resolve<IRegionNavigationService>();
  96. var actual2 = bootstrapper.BaseContainer.Resolve<IRegionNavigationService>();
  97. Assert.IsNotNull(actual1);
  98. Assert.IsNotNull(actual2);
  99. Assert.AreNotSame(actual1, actual2);
  100. }
  101. [TestMethod]
  102. public void ConfigureContainerAddsNavigationTargetHandlerToContainer()
  103. {
  104. var bootstrapper = new DefaultUnityBootstrapper();
  105. bootstrapper.Run();
  106. var actual1 = bootstrapper.BaseContainer.Resolve<IRegionNavigationContentLoader>();
  107. var actual2 = bootstrapper.BaseContainer.Resolve<IRegionNavigationContentLoader>();
  108. Assert.IsNotNull(actual1);
  109. Assert.IsNotNull(actual2);
  110. Assert.AreSame(actual1, actual2);
  111. }
  112. [TestMethod]
  113. public void RegisterFrameworkExceptionTypesShouldRegisterActivationException()
  114. {
  115. var bootstrapper = new DefaultUnityBootstrapper();
  116. bootstrapper.CallRegisterFrameworkExceptionTypes();
  117. Assert.IsTrue(ExceptionExtensions.IsFrameworkExceptionRegistered(
  118. typeof(Microsoft.Practices.ServiceLocation.ActivationException)));
  119. }
  120. [TestMethod]
  121. public void RegisterFrameworkExceptionTypesShouldRegisterResolutionFailedException()
  122. {
  123. var bootstrapper = new DefaultUnityBootstrapper();
  124. bootstrapper.CallRegisterFrameworkExceptionTypes();
  125. Assert.IsTrue(ExceptionExtensions.IsFrameworkExceptionRegistered(
  126. typeof(Microsoft.Practices.Unity.ResolutionFailedException)));
  127. }
  128. }
  129. internal class DefaultUnityBootstrapper : UnityBootstrapper
  130. {
  131. public List<string> MethodCalls = new List<string>();
  132. public bool InitializeModulesCalled;
  133. public bool ConfigureRegionAdapterMappingsCalled;
  134. public RegionAdapterMappings DefaultRegionAdapterMappings;
  135. public bool CreateLoggerCalled;
  136. public bool CreateModuleCatalogCalled;
  137. public bool ConfigureContainerCalled;
  138. public bool CreateShellCalled;
  139. public bool CreateContainerCalled;
  140. public bool ConfigureModuleCatalogCalled;
  141. public bool InitializeShellCalled;
  142. public bool ConfigureServiceLocatorCalled;
  143. public bool ConfigureDefaultRegionBehaviorsCalled;
  144. public DependencyObject ShellObject = new UserControl();
  145. public DependencyObject BaseShell
  146. {
  147. get { return base.Shell; }
  148. }
  149. public IUnityContainer BaseContainer
  150. {
  151. get { return base.Container; }
  152. set { base.Container = value; }
  153. }
  154. public MockLoggerAdapter BaseLogger
  155. { get { return base.Logger as MockLoggerAdapter; } }
  156. public IUnityContainer CallCreateContainer()
  157. {
  158. return this.CreateContainer();
  159. }
  160. protected override IUnityContainer CreateContainer()
  161. {
  162. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  163. this.CreateContainerCalled = true;
  164. return base.CreateContainer();
  165. }
  166. protected override void ConfigureContainer()
  167. {
  168. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  169. this.ConfigureContainerCalled = true;
  170. base.ConfigureContainer();
  171. }
  172. protected override ILoggerFacade CreateLogger()
  173. {
  174. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  175. this.CreateLoggerCalled = true;
  176. return new MockLoggerAdapter();
  177. }
  178. protected override DependencyObject CreateShell()
  179. {
  180. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  181. this.CreateShellCalled = true;
  182. return ShellObject;
  183. }
  184. protected override void ConfigureServiceLocator()
  185. {
  186. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  187. this.ConfigureServiceLocatorCalled = true;
  188. base.ConfigureServiceLocator();
  189. }
  190. protected override IModuleCatalog CreateModuleCatalog()
  191. {
  192. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  193. this.CreateModuleCatalogCalled = true;
  194. return base.CreateModuleCatalog();
  195. }
  196. protected override void ConfigureModuleCatalog()
  197. {
  198. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  199. this.ConfigureModuleCatalogCalled = true;
  200. base.ConfigureModuleCatalog();
  201. }
  202. protected override void InitializeShell()
  203. {
  204. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  205. this.InitializeShellCalled = true;
  206. // no op
  207. }
  208. protected override void InitializeModules()
  209. {
  210. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  211. this.InitializeModulesCalled = true;
  212. base.InitializeModules();
  213. }
  214. protected override IRegionBehaviorFactory ConfigureDefaultRegionBehaviors()
  215. {
  216. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  217. this.ConfigureDefaultRegionBehaviorsCalled = true;
  218. return base.ConfigureDefaultRegionBehaviors();
  219. }
  220. protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
  221. {
  222. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  223. ConfigureRegionAdapterMappingsCalled = true;
  224. var regionAdapterMappings = base.ConfigureRegionAdapterMappings();
  225. DefaultRegionAdapterMappings = regionAdapterMappings;
  226. return regionAdapterMappings;
  227. }
  228. protected override void RegisterFrameworkExceptionTypes()
  229. {
  230. this.MethodCalls.Add(System.Reflection.MethodBase.GetCurrentMethod().Name);
  231. base.RegisterFrameworkExceptionTypes();
  232. }
  233. public void CallRegisterFrameworkExceptionTypes()
  234. {
  235. base.RegisterFrameworkExceptionTypes();
  236. }
  237. }
  238. }