PageRenderTime 40ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/V2.2/trunk/CAL/Desktop/Composite.Tests/Regions/RegionManagerExtensionsFixture.cs

#
C# | 175 lines | 128 code | 31 blank | 16 comment | 4 complexity | 5fe5cdbbe4d9a27ea7daf4d328a01c44 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;
  18. using System.Collections.Generic;
  19. using System.Collections.Specialized;
  20. using System.ComponentModel;
  21. using System.Linq;
  22. using System.Text;
  23. using Microsoft.Practices.Composite.Regions;
  24. using Microsoft.Practices.Composite.Tests.Mocks;
  25. using Microsoft.Practices.ServiceLocation;
  26. using Microsoft.VisualStudio.TestTools.UnitTesting;
  27. namespace Microsoft.Practices.Composite.Tests.Regions
  28. {
  29. [TestClass]
  30. public class RegionManagerExtensionsFixture
  31. {
  32. [TestMethod]
  33. public void CanAddViewToRegion()
  34. {
  35. var regionManager = new MockRegionManager();
  36. var view1 = new object();
  37. var view2 = new object();
  38. IRegion region = new MockRegion();
  39. region.Name = "RegionName";
  40. regionManager.Regions.Add(region);
  41. regionManager.AddToRegion("RegionName", view1);
  42. regionManager.AddToRegion("RegionName", view2);
  43. Assert.IsTrue(regionManager.Regions["RegionName"].Views.Contains(view1));
  44. Assert.IsTrue(regionManager.Regions["RegionName"].Views.Contains(view2));
  45. }
  46. [TestMethod]
  47. public void CanRegisterViewType()
  48. {
  49. try
  50. {
  51. var mockRegionContentRegistry = new MockRegionContentRegistry();
  52. string regionName = null;
  53. Type viewType = null;
  54. mockRegionContentRegistry.RegisterContentWithViewType = (name, type) =>
  55. {
  56. regionName = name;
  57. viewType = type;
  58. return null;
  59. };
  60. ServiceLocator.SetLocatorProvider(
  61. () => new MockServiceLocator(
  62. () => mockRegionContentRegistry));
  63. var regionManager = new MockRegionManager();
  64. regionManager.RegisterViewWithRegion("Region1", typeof (object));
  65. Assert.AreEqual(regionName, "Region1");
  66. Assert.AreEqual(viewType, typeof(object));
  67. }
  68. finally
  69. {
  70. ServiceLocator.SetLocatorProvider(null);
  71. }
  72. }
  73. [TestMethod]
  74. public void CanRegisterDelegate()
  75. {
  76. try
  77. {
  78. var mockRegionContentRegistry = new MockRegionContentRegistry();
  79. string regionName = null;
  80. Func<object> contentDelegate = null;
  81. Func<object> expectedDelegate = () => true;
  82. mockRegionContentRegistry.RegisterContentWithDelegate = (name, usedDelegate) =>
  83. {
  84. regionName = name;
  85. contentDelegate = usedDelegate;
  86. return null;
  87. };
  88. ServiceLocator.SetLocatorProvider(
  89. () => new MockServiceLocator(
  90. () => mockRegionContentRegistry));
  91. var regionManager = new MockRegionManager();
  92. regionManager.RegisterViewWithRegion("Region1", expectedDelegate);
  93. Assert.AreEqual("Region1", regionName);
  94. Assert.AreEqual(expectedDelegate, contentDelegate);
  95. }
  96. finally
  97. {
  98. ServiceLocator.SetLocatorProvider(null);
  99. }
  100. }
  101. [TestMethod]
  102. public void CanAddRegionToRegionManager()
  103. {
  104. var regionManager = new MockRegionManager();
  105. var region = new MockRegion();
  106. regionManager.Regions.Add("region", region);
  107. Assert.AreEqual(1, regionManager.MockRegionCollection.Count);
  108. Assert.AreEqual("region", region.Name);
  109. }
  110. [TestMethod]
  111. [ExpectedException(typeof(ArgumentException))]
  112. public void ShouldThrowIfRegionNameArgumentIsDifferentToRegionNameProperty()
  113. {
  114. var regionManager = new MockRegionManager();
  115. var region = new MockRegion();
  116. region.Name = "region";
  117. regionManager.Regions.Add("another region", region);
  118. }
  119. }
  120. internal class MockRegionContentRegistry : IRegionViewRegistry
  121. {
  122. public Func<string, Type, object> RegisterContentWithViewType;
  123. public Func<string, Func<object>, object> RegisterContentWithDelegate;
  124. public event EventHandler<ViewRegisteredEventArgs> ContentRegistered;
  125. public IEnumerable<object> GetContents(string regionName)
  126. {
  127. return null;
  128. }
  129. void IRegionViewRegistry.RegisterViewWithRegion(string regionName, Type viewType)
  130. {
  131. if (RegisterContentWithViewType != null)
  132. {
  133. RegisterContentWithViewType(regionName, viewType);
  134. }
  135. }
  136. void IRegionViewRegistry.RegisterViewWithRegion(string regionName, Func<object> getContentDelegate)
  137. {
  138. if (RegisterContentWithDelegate != null)
  139. {
  140. RegisterContentWithDelegate(regionName, getContentDelegate);
  141. }
  142. }
  143. }
  144. }