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

/LLBL Pro v4.0/AW.Test/LLBLWinformHelperTest.cs

#
C# | 202 lines | 121 code | 20 blank | 61 comment | 4 complexity | c56ed5a53353dd87b4a8fda93ad9d844 MD5 | raw file
Possible License(s): CC-BY-SA-3.0, BSD-3-Clause, MIT, GPL-2.0, Apache-2.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Forms;
  5. using AW.Data;
  6. using AW.Data.EntityClasses;
  7. using AW.Helper;
  8. using AW.Helper.LLBL;
  9. using AW.Winforms.Helpers.LLBL;
  10. using FluentAssertions;
  11. using Microsoft.VisualStudio.TestTools.UnitTesting;
  12. using Northwind.DAL.Linq;
  13. using Northwind.DAL.SqlServer;
  14. using SD.LLBLGen.Pro.LinqSupportClasses;
  15. using SD.LLBLGen.Pro.ORMSupportClasses;
  16. using CustomerEntity = Northwind.DAL.EntityClasses.CustomerEntity;
  17. namespace AW.Tests
  18. {
  19. ///<summary>
  20. /// This is a test class for LLBLWinformHelperTest and is intended
  21. /// to contain all LLBLWinformHelperTest Unit Tests
  22. ///</summary>
  23. [TestClass]
  24. public class LLBLWinformHelperTest : GridDataEditorTestBase
  25. {
  26. private static readonly TreeView EntityTreeView = new TreeView();
  27. public static readonly int NumSchemaObjects = 852;
  28. ///<summary>
  29. /// Gets or sets the test context which provides
  30. /// information about and functionality for the current test run.
  31. ///</summary>
  32. public TestContext TestContext { get; set; }
  33. #region Additional test attributes
  34. //
  35. //You can use the following additional attributes as you write your tests:
  36. //
  37. //Use ClassInitialize to run code before running the first test in the class
  38. //[ClassInitialize()]
  39. //public static void MyClassInitialize(TestContext testContext)
  40. //{
  41. //}
  42. //
  43. //Use ClassCleanup to run code after all tests in a class have run
  44. //[ClassCleanup()]
  45. //public static void MyClassCleanup()
  46. //{
  47. //}
  48. //
  49. //Use TestInitialize to run code before running each test
  50. //[TestInitialize()]
  51. //public void MyTestInitialize()
  52. //{
  53. //}
  54. //
  55. //Use TestCleanup to run code after each test has run
  56. //[TestCleanup()]
  57. //public void MyTestCleanup()
  58. //{
  59. //}
  60. //
  61. #endregion
  62. ///<summary>
  63. /// A test for ShowInGrid
  64. ///</summary>
  65. public void EditInDataGridViewTestHelper<T>(ushort pageSize, int numProperties = -1, int numFieldsToShow = 0) where T : EntityBase
  66. {
  67. ModalFormHandler = Handler;
  68. var enumerable = MetaSingletons.MetaData.GetQueryableForEntity<T>().AsEnumerable();
  69. var expected = enumerable;
  70. numProperties = GetNumberOfColumns<T>(numProperties, ref numFieldsToShow);
  71. var actual = enumerable.ShowSelfServicingInGrid(pageSize);
  72. Assert.AreEqual(expected, actual);
  73. Assert.AreEqual(ExpectedColumnCount, ActualColumnCount);
  74. }
  75. public void EditAdapterInDataGridViewTestHelper<T>(ushort pageSize, int numProperties = -1, int numFieldsToShow = 0) where T : EntityBase2
  76. {
  77. ModalFormHandler = Handler;
  78. var enumerable = NorthwindTest.GetNorthwindLinqMetaData().GetQueryableForEntity<T>().AsEnumerable();
  79. var expected = enumerable;
  80. numProperties = GetNumberOfColumns<T>(numProperties, ref numFieldsToShow);
  81. var actual = enumerable.ShowInGrid(null, pageSize);
  82. Assert.AreEqual(expected, actual);
  83. Assert.AreEqual(ExpectedColumnCount, ActualColumnCount);
  84. }
  85. protected void TestShowSelfServicingInGrid<T>(IEnumerable<T> enumerable, ushort pageSize, int numProperties = -1, int numFieldsToShow = 0) where T : EntityBase
  86. {
  87. ModalFormHandler = Handler;
  88. GetNumberOfColumns<T>(numProperties, ref numFieldsToShow);
  89. var actual = enumerable.ShowSelfServicingInGrid(pageSize);
  90. Assert.AreEqual(enumerable, actual);
  91. Assert.AreEqual(ExpectedColumnCount, ActualColumnCount);
  92. }
  93. protected void TestShowSelfAdapterInGrid<T>(IEnumerable<T> enumerable, ushort pageSize, int numProperties = -1, int numFieldsToShow = 0) where T : EntityBase2
  94. {
  95. ModalFormHandler = Handler;
  96. GetNumberOfColumns<T>(numProperties, ref numFieldsToShow);
  97. var actual = enumerable.ShowInGrid(null, pageSize);
  98. Assert.AreEqual(enumerable, actual);
  99. Assert.AreEqual(ExpectedColumnCount, ActualColumnCount);
  100. }
  101. [TestCategory("Winforms"), TestMethod]
  102. public void ShowSelfServicingInGridTest()
  103. {
  104. EditInDataGridViewTestHelper<AddressEntity>(20);
  105. var addressTypes = from at in MetaSingletons.MetaData.AddressType
  106. orderby at.AddressTypeID
  107. select at;
  108. var addressTypeEntities = addressTypes.ToEntityCollection();
  109. TestShowSelfServicingInGrid(addressTypeEntities, 2);
  110. TestShowSelfServicingInGrid(addressTypeEntities.DefaultView, 3);
  111. TestShowSelfServicingInGrid(addressTypes.AsEnumerable(), 3);
  112. TestShowInGrid(addressTypeEntities.AsQueryable());
  113. }
  114. [TestCategory("Winforms"), TestMethod]
  115. public void ShowAdapterInGridTest()
  116. {
  117. EditAdapterInDataGridViewTestHelper<CustomerEntity>(12);
  118. }
  119. ///<summary>
  120. /// A test for PopulateTreeViewWithSchema
  121. ///</summary>
  122. [TestMethod]
  123. public void PopulateTreeViewWithSchemaTest()
  124. {
  125. TestPopulateTreeViewWithSchema(EntityTreeView, null, null);
  126. }
  127. ///<summary>
  128. /// A test for PopulateTreeViewWithSchema
  129. ///</summary>
  130. [TestMethod]
  131. public void PopulateTreeViewWithSchemaCommonEntityBaseTest()
  132. {
  133. TestPopulateTreeViewWithSchema(EntityTreeView, typeof (CommonEntityBase), null);
  134. }
  135. ///<summary>
  136. /// A test for PopulateTreeViewWithSchema
  137. ///</summary>
  138. [TestMethod]
  139. public void PopulateTreeViewWithSchemaILinqMetaDataTest()
  140. {
  141. TestPopulateTreeViewWithSchema(EntityTreeView, null, MetaSingletons.MetaData);
  142. }
  143. ///<summary>
  144. /// A test for PopulateTreeViewWithSchema
  145. ///</summary>
  146. [TestMethod]
  147. public void PopulateTreeViewWithSchemaDataContextTypeTest()
  148. {
  149. EntityTreeView.Nodes.Clear();
  150. LLBLWinformHelper.PopulateTreeViewWithSchema(EntityTreeView.Nodes, MetaSingletons.MetaData.GetType());
  151. EntityHelperTest.NumberOfEntities.Should().BeLessOrEqualTo(EntityTreeView.Nodes.Count);
  152. var treeNodes = EntityTreeView.Nodes.Cast<TreeNode>().Descendants(tn => tn.Nodes.Cast<TreeNode>()).ToList();
  153. NumSchemaObjects.Should().BeLessOrEqualTo(treeNodes.Count());
  154. }
  155. private static IEnumerable<Type> GetEntitiesTypes(Type baseType, ILinqMetaData linqMetaData)
  156. {
  157. return baseType == null ? (linqMetaData == null ? EntityHelper.GetEntitiesTypes() : EntityHelper.GetEntitiesTypes(linqMetaData.GetType().Assembly)) : MetaDataHelper.GetDescendants(baseType);
  158. }
  159. private static void TestPopulateTreeViewWithSchema(TreeView entityTreeView, Type baseType, ILinqMetaData linqMetaData)
  160. {
  161. TestPopulateTreeViewWithSchema(entityTreeView, GetEntitiesTypes(baseType, linqMetaData));
  162. }
  163. private static void TestPopulateTreeViewWithSchema(TreeView entityTreeView, IEnumerable<Type> entitiesTypes)
  164. {
  165. LLBLWinformHelper.PopulateTreeViewWithSchema(entityTreeView, entitiesTypes, false);
  166. Assert.AreEqual(entitiesTypes.Count(), entityTreeView.Nodes.Count, "entityTreeView.Nodes.Count");
  167. if (entityTreeView.Nodes.Count == EntityHelperTest.NumberOfEntities)
  168. Assert.AreEqual(NumSchemaObjects, entityTreeView.Nodes.Cast<TreeNode>().Descendants(tn => tn.Nodes.Cast<TreeNode>()).Count(), "NumSchemaObjects");
  169. }
  170. /// <summary>
  171. ///A test for PopulateTreeViewWithSchema
  172. ///</summary>
  173. //[TestMethod()]
  174. //public void PopulateTreeViewWithSchemaTest1()
  175. //{
  176. // TreeNodeCollection schemaTreeNodeCollection = null; // TODO: Initialize to an appropriate value
  177. // IEnumerable<Type> entitiesTypes = null; // TODO: Initialize to an appropriate value
  178. // LLBLWinformHelper.PopulateTreeViewWithSchema(schemaTreeNodeCollection, entitiesTypes);
  179. // Assert.Inconclusive("A method that does not return a value cannot be verified.");
  180. //}
  181. }
  182. }