PageRenderTime 46ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/V1/trunk/Source/CAL/Composite.Wpf.Tests/Regions/RegionManagerFixture.cs

#
C# | 180 lines | 127 code | 34 blank | 19 comment | 0 complexity | e5f504efbfdce5c5eeddc16efaf02c93 MD5 | raw file
  1. //===============================================================================
  2. // Microsoft patterns & practices
  3. // Composite Application Guidance for Windows Presentation Foundation
  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.Windows;
  20. using System.Windows.Controls;
  21. using Microsoft.Practices.Composite.Wpf.Tests.Mocks;
  22. using Microsoft.Practices.Composite.Regions;
  23. using Microsoft.Practices.Composite.Wpf.Regions;
  24. using Microsoft.VisualStudio.TestTools.UnitTesting;
  25. namespace Microsoft.Practices.Composite.Wpf.Tests.Regions
  26. {
  27. [TestClass]
  28. public class RegionManagerFixture
  29. {
  30. [TestMethod]
  31. public void CanAddRegion()
  32. {
  33. IRegion region1 = new MockRegion();
  34. RegionManager regionManager = new RegionManager();
  35. regionManager.Regions.Add("MainRegion", region1);
  36. IRegion region2 = regionManager.Regions["MainRegion"];
  37. Assert.AreSame(region1, region2);
  38. }
  39. [TestMethod]
  40. [ExpectedException(typeof(KeyNotFoundException))]
  41. public void ShouldFailIfRegionDoesntExists()
  42. {
  43. RegionManager regionManager = new RegionManager();
  44. IRegion region = regionManager.Regions["nonExistentRegion"];
  45. }
  46. [TestMethod]
  47. public void CanCheckTheExistenceOfARegion()
  48. {
  49. RegionManager regionManager = new RegionManager();
  50. bool result = regionManager.Regions.ContainsKey("noRegion");
  51. Assert.IsFalse(result);
  52. IRegion region = new MockRegion();
  53. regionManager.Regions.Add("noRegion", region);
  54. result = regionManager.Regions.ContainsKey("noRegion");
  55. Assert.IsTrue(result);
  56. }
  57. [TestMethod]
  58. [ExpectedException(typeof(ArgumentException))]
  59. public void AddingMultipleRegionsWithSameNameThrowsArgumentException()
  60. {
  61. var regionManager = new RegionManager();
  62. regionManager.Regions.Add("region name", new MockRegion());
  63. regionManager.Regions.Add("region name", new MockRegion());
  64. }
  65. [TestMethod]
  66. public void AddPassesItselfAsTheRegionManagerOfTheRegion()
  67. {
  68. var regionManager = new RegionManager();
  69. var region = new MockRegion();
  70. regionManager.Regions.Add("region", region);
  71. Assert.AreSame(regionManager, region.RegionManager);
  72. }
  73. [TestMethod]
  74. public void CreateRegionManagerCreatesANewInstance()
  75. {
  76. var regionManager = new RegionManager();
  77. var createdRegionManager = regionManager.CreateRegionManager();
  78. Assert.IsNotNull(createdRegionManager);
  79. Assert.IsInstanceOfType(createdRegionManager, typeof(RegionManager));
  80. Assert.AreNotSame(regionManager, createdRegionManager);
  81. }
  82. [TestMethod]
  83. public void ShouldAttachNewRegionByUsingRegisteredRegionAdapterMappings()
  84. {
  85. var mappings = new RegionAdapterMappings();
  86. var mockRegionAdapter = new MockRegionAdapter();
  87. mappings.RegisterMapping(typeof(DependencyObject), mockRegionAdapter);
  88. var regionManager = new RegionManager(mappings);
  89. var control = new DependencyObject();
  90. regionManager.AttachNewRegion(control, "TestRegionName");
  91. Assert.IsTrue(mockRegionAdapter.InitializeCalled);
  92. Assert.AreEqual(control, mockRegionAdapter.InitializeArgument);
  93. }
  94. [TestMethod]
  95. public void CanRemoveRegion()
  96. {
  97. var regionManager = new RegionManager();
  98. IRegion region = new MockRegion();
  99. regionManager.Regions.Add("TestRegion", region);
  100. regionManager.Regions.Remove("TestRegion");
  101. Assert.IsFalse(regionManager.Regions.ContainsKey("TestRegion"));
  102. }
  103. [TestMethod]
  104. public void ShouldRemoveRegionManagerWhenRemoving()
  105. {
  106. var regionManager = new RegionManager();
  107. var region = new MockRegion();
  108. regionManager.Regions.Add("TestRegion", region);
  109. regionManager.Regions.Remove("TestRegion");
  110. Assert.IsNull(region.RegionManager);
  111. }
  112. [TestMethod]
  113. public void RegionGetsAddedInRegionManagerWhenAddedIntoAScope()
  114. {
  115. var mappings = new RegionAdapterMappings();
  116. mappings.RegisterMapping(typeof(DependencyObject), new MockRegionAdapter());
  117. RegionManager regionManager = new RegionManager(mappings);
  118. var regionScopeControl = new ContentControl();
  119. RegionManager.SetRegionManager(regionScopeControl, regionManager);
  120. var control = new FrameworkElement();
  121. control.SetValue(RegionManager.RegionNameProperty, "TestRegion");
  122. Assert.IsFalse(regionManager.Regions.ContainsKey("TestRegion"));
  123. regionScopeControl.Content = control;
  124. Assert.IsTrue(regionManager.Regions.ContainsKey("TestRegion"));
  125. Assert.IsNotNull(regionManager.Regions["TestRegion"]);
  126. }
  127. [TestMethod]
  128. public void RegionGetsRemovedFromRegionManagerWhenRemovedFromScope()
  129. {
  130. var mappings = new RegionAdapterMappings();
  131. mappings.RegisterMapping(typeof(DependencyObject), new MockRegionAdapter());
  132. RegionManager regionManager = new RegionManager(mappings);
  133. var regionScopeControl = new ContentControl();
  134. RegionManager.SetRegionManager(regionScopeControl, regionManager);
  135. var control = new FrameworkElement();
  136. control.SetValue(RegionManager.RegionNameProperty, "TestRegion");
  137. regionScopeControl.Content = control;
  138. Assert.IsTrue(regionManager.Regions.ContainsKey("TestRegion"));
  139. regionScopeControl.Content = null;
  140. Assert.IsFalse(regionManager.Regions.ContainsKey("TestRegion"));
  141. }
  142. /*
  143. * TODO: AttachNewRegion should throw if mappings is null
  144. */
  145. }
  146. }