/src/BurnSystems/tests/BurnSystems.UnitTests/Collections/NotificationListViewTests.cs

https://bitbucket.org/mbrenn/entityconnector · C# · 191 lines · 11 code · 1 blank · 179 comment · 0 complexity · a4b9ce0beb88860cb599f717570a63bb MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using NUnit.Framework;
  6. using BurnSystems.Collections;
  7. using System.ComponentModel;
  8. using System.Collections.Specialized;
  9. namespace BurnSystems.UnitTests.Collections
  10. {
  11. /*
  12. /// <summary>
  13. /// This class contains some tests for the NotificationListView class
  14. /// </summary>
  15. [TestFixture]
  16. public class NotificationListViewTests
  17. {
  18. [Test]
  19. public void TestBasicFunctions()
  20. {
  21. var list = new NotificationListView<string>();
  22. list.Add("A");
  23. Assert.That(list.Contains("A"), Is.True);
  24. list.Add("B");
  25. list.Add("C");
  26. Assert.That(list.IndexOf("C"), Is.EqualTo(2));
  27. list.Remove("B");
  28. Assert.That(list.Contains("B"), Is.False);
  29. Assert.That(list.IndexOf("C"), Is.EqualTo(1));
  30. list.RemoveAt(1);
  31. Assert.That(list.Count, Is.EqualTo(1));
  32. list.Add("D");
  33. list.Add("E");
  34. list.Insert(1, "B");
  35. Assert.That(list.Count, Is.EqualTo(4));
  36. var array = new string[4];
  37. list.CopyTo(array, 0);
  38. Assert.That(array[0], Is.EqualTo("A"));
  39. Assert.That(array[1], Is.EqualTo("B"));
  40. Assert.That(array[2], Is.EqualTo("D"));
  41. Assert.That(array[3], Is.EqualTo("E"));
  42. }
  43. [Test]
  44. public void TestPropertyChanges()
  45. {
  46. var list = new NotificationListView<string>();
  47. var last = new LastPropertyChanges();
  48. list.PropertyChanged += (x, y) => last.PropertyNames.Add(y.PropertyName);
  49. list.Add("A");
  50. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  51. Assert.That(last.PropertyNames, Contains.Item("Count"));
  52. last.PropertyNames.Clear();
  53. Assert.That(list.Count, Is.EqualTo(1));
  54. Assert.That(last.PropertyNames.Count, Is.EqualTo(0));
  55. list.Add("B");
  56. last.PropertyNames.Clear();
  57. list.Remove("B");
  58. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  59. Assert.That(last.PropertyNames, Contains.Item("Count"));
  60. last.PropertyNames.Clear();
  61. list[0] = "C";
  62. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  63. Assert.That(last.PropertyNames.Contains("Count"), Is.False);
  64. list.Add("D");
  65. last.PropertyNames.Clear();
  66. list.Insert(1, "C");
  67. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  68. Assert.That(last.PropertyNames, Contains.Item("Count"));
  69. last.PropertyNames.Clear();
  70. list.RemoveAt(0);
  71. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  72. Assert.That(last.PropertyNames, Contains.Item("Count"));
  73. last.PropertyNames.Clear();
  74. list.Clear();
  75. Assert.That(last.PropertyNames, Contains.Item("Item[]"));
  76. Assert.That(last.PropertyNames, Contains.Item("Count"));
  77. last.PropertyNames.Clear();
  78. }
  79. [Test]
  80. public void TestCollectionChanges()
  81. {
  82. var list = new NotificationListView<string>();
  83. var last = new LastCollectionChanges();
  84. list.CollectionChanged += (x, y) => last.Arguments.Add(y);
  85. list.Add("A");
  86. var added = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Add).FirstOrDefault();
  87. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  88. Assert.That(added, Is.Not.Null);
  89. Assert.That(added.Action == NotifyCollectionChangedAction.Add, Is.True);
  90. Assert.That(added.NewStartingIndex == 0, Is.True);
  91. Assert.That(added.NewItems.Count, Is.EqualTo(1));
  92. Assert.That(added.NewItems[0], Is.EqualTo("A"));
  93. last.Arguments.Clear();
  94. Assert.That(list.Count, Is.EqualTo(1));
  95. Assert.That(last.Arguments.Count, Is.EqualTo(0));
  96. list.Add("B");
  97. last.Arguments.Clear();
  98. list.Remove("B");
  99. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  100. var deleted = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Remove).FirstOrDefault();
  101. Assert.That(deleted, Is.Not.Null);
  102. Assert.That(deleted.OldStartingIndex == 1, Is.True);
  103. Assert.That(deleted.OldItems[0], Is.EqualTo("B"));
  104. list.Add("B");
  105. last.Arguments.Clear();
  106. list[1] = "C";
  107. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  108. var replaced = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Replace).FirstOrDefault();
  109. Assert.That(replaced.NewStartingIndex == 1, Is.True );
  110. Assert.That(replaced.OldStartingIndex == 1, Is.True);
  111. Assert.That(replaced.OldItems[0], Is.EqualTo("B"));
  112. Assert.That(replaced.NewItems[0], Is.EqualTo("C"));
  113. list.Add("D");
  114. last.Arguments.Clear();
  115. list.Insert(1, "E");
  116. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  117. var inserted = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Add).FirstOrDefault();
  118. Assert.That(inserted.Action == NotifyCollectionChangedAction.Add, Is.True);
  119. Assert.That(inserted.NewStartingIndex == 1, Is.True);
  120. Assert.That(inserted.NewItems.Count, Is.EqualTo(1));
  121. Assert.That(inserted.NewItems[0], Is.EqualTo("E"));
  122. last.Arguments.Clear();
  123. list.RemoveAt(1);
  124. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  125. deleted = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Remove).FirstOrDefault();
  126. Assert.That(deleted, Is.Not.Null);
  127. Assert.That(deleted.OldStartingIndex == 1, Is.True);
  128. Assert.That(deleted.OldItems[0], Is.EqualTo("E"));
  129. last.Arguments.Clear();
  130. list.Clear();
  131. Assert.That(last.Arguments.Count, Is.EqualTo(1));
  132. var resetted = last.Arguments.Where(z => z.Action == NotifyCollectionChangedAction.Reset).FirstOrDefault();
  133. Assert.That(resetted, Is.Not.Null);
  134. last.Arguments.Clear();
  135. }
  136. /// <summary>
  137. /// Stores the last call
  138. /// </summary>
  139. private class LastPropertyChanges
  140. {
  141. /// <summary>
  142. /// Gets or sets the name of the property
  143. /// </summary>
  144. public List<string> PropertyNames = new List<string>();
  145. }
  146. /*
  147. /// <summary>
  148. /// Stores the last information about collection changes
  149. /// </summary>
  150. private class LastCollectionChanges
  151. {
  152. /// <summary>
  153. /// Gets or sets the arguments
  154. /// </summary>
  155. public List<NotifyCollectionChangedEventArgs> Arguments = new List<NotifyCollectionChangedEventArgs>();
  156. }
  157. }*/
  158. }