PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

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

https://bitbucket.org/mbrenn/entityconnector
C# | 415 lines | 326 code | 77 blank | 12 comment | 10 complexity | f55985a3346f4afcaa0bfae448c135fb MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using BurnSystems.Interfaces;
  6. using System.Xml.Linq;
  7. using System.Globalization;
  8. using NUnit.Framework;
  9. using BurnSystems.Collections;
  10. namespace BurnSystems.UnitTests.Collections
  11. {
  12. /// <summary>
  13. /// Stores all tests that have been created for the xmllist
  14. /// </summary>
  15. [TestFixture]
  16. public class XmlListTests
  17. {
  18. /// <summary>
  19. /// Stores the testentity
  20. /// </summary>
  21. public class Entity
  22. {
  23. public string Name
  24. {
  25. get;
  26. set;
  27. }
  28. public string Prename
  29. {
  30. get;
  31. set;
  32. }
  33. public int Age
  34. {
  35. get;
  36. set;
  37. }
  38. public override bool Equals(object obj)
  39. {
  40. var entity = obj as Entity;
  41. if (entity == null)
  42. {
  43. return false;
  44. }
  45. return entity.Name == this.Name
  46. && entity.Prename == this.Prename
  47. && entity.Age == this.Age;
  48. }
  49. public override int GetHashCode()
  50. {
  51. return
  52. this.Name.GetHashCode() ^
  53. this.Prename.GetHashCode() ^
  54. this.Age.GetHashCode();
  55. }
  56. }
  57. public class EntityConverter : IXElementConverter<Entity>
  58. {
  59. public Entity Convert(System.Xml.Linq.XElement element)
  60. {
  61. var entity = new Entity()
  62. {
  63. Name = element.Element("name").Value,
  64. Prename = element.Element("prename").Value,
  65. Age = System.Convert.ToInt32(element.Element("age").Value, CultureInfo.InvariantCulture)
  66. };
  67. return entity;
  68. }
  69. public System.Xml.Linq.XElement Convert(Entity entity)
  70. {
  71. return
  72. new XElement(
  73. "entity",
  74. new XElement("name", entity.Name),
  75. new XElement("prename", entity.Prename),
  76. new XElement("age", entity.Age.ToString(CultureInfo.InvariantCulture)));
  77. }
  78. }
  79. public static XmlList<Entity> EmptyRootElement
  80. {
  81. get
  82. {
  83. var document = new XDocument(
  84. new XElement("elements"));
  85. return new XmlList<Entity>(
  86. document.Element("elements"),
  87. new EntityConverter());
  88. }
  89. }
  90. public static XElement AttributeListDocument
  91. {
  92. get
  93. {
  94. var document = new XDocument(
  95. new XElement("elements",
  96. new XElement(
  97. "item",
  98. new XAttribute("value", 12)),
  99. new XElement(
  100. "item",
  101. new XAttribute("value", 25)),
  102. new XElement(
  103. "item",
  104. new XAttribute("value", 68))));
  105. return document.Element("elements");
  106. }
  107. }
  108. public static XElement ElementListDocument
  109. {
  110. get
  111. {
  112. var document = new XDocument(
  113. new XElement("elements",
  114. new XElement(
  115. "item",
  116. 12),
  117. new XElement(
  118. "item",
  119. 25),
  120. new XElement(
  121. "item",
  122. 68)));
  123. return document.Element("elements");
  124. }
  125. }
  126. public Entity Person1
  127. {
  128. get
  129. {
  130. return new Entity()
  131. {
  132. Name = "John",
  133. Prename = "Miller",
  134. Age = 23
  135. };
  136. }
  137. }
  138. public Entity Person2
  139. {
  140. get
  141. {
  142. return new Entity()
  143. {
  144. Name = "Mike",
  145. Prename = "Wayne",
  146. Age = 25
  147. };
  148. }
  149. }
  150. public Entity Person3
  151. {
  152. get
  153. {
  154. return new Entity()
  155. {
  156. Name = "Barack",
  157. Prename = "Bush",
  158. Age = 50
  159. };
  160. }
  161. }
  162. [Test]
  163. public void CreateEmptyList()
  164. {
  165. var list = EmptyRootElement;
  166. Assert.That(list.Count, Is.EqualTo(0));
  167. }
  168. [Test]
  169. public void AddAndRetrieveItems()
  170. {
  171. var list = EmptyRootElement;
  172. list.Add(this.Person1);
  173. list.Add(this.Person2);
  174. Assert.That(list.Count, Is.EqualTo(2));
  175. Assert.That(list[0], Is.EqualTo(Person1));
  176. Assert.That(list[1], Is.EqualTo(Person2));
  177. list.Add(this.Person3);
  178. Assert.That(list.Count, Is.EqualTo(3));
  179. }
  180. [Test]
  181. public void AddAndRemoveItems()
  182. {
  183. var list = EmptyRootElement;
  184. list.Add(this.Person1);
  185. list.Add(this.Person2);
  186. list.Add(this.Person3);
  187. Assert.That(list.Count, Is.EqualTo(3));
  188. list.RemoveAt(1);
  189. Assert.That(list.Count, Is.EqualTo(2));
  190. Assert.That(list[0], Is.EqualTo(Person1));
  191. Assert.That(list[1], Is.EqualTo(Person3));
  192. }
  193. [Test]
  194. public void InsertItems()
  195. {
  196. var list = EmptyRootElement;
  197. list.Add(this.Person1);
  198. list.Add(this.Person3);
  199. list.Insert(1, this.Person2);
  200. Assert.That(list.Count, Is.EqualTo(3));
  201. Assert.That(list[0], Is.EqualTo(Person1));
  202. Assert.That(list[1], Is.EqualTo(Person2));
  203. Assert.That(list[2], Is.EqualTo(Person3));
  204. }
  205. [Test]
  206. public void Remove()
  207. {
  208. var list = EmptyRootElement;
  209. list.Add(this.Person1);
  210. list.Add(this.Person2);
  211. list.Add(this.Person3);
  212. Assert.That(list.Remove(this.Person2), Is.True);
  213. Assert.That(list.Count, Is.EqualTo(2));
  214. Assert.That(list[0], Is.EqualTo(Person1));
  215. Assert.That(list[1], Is.EqualTo(Person3));
  216. list.Remove(this.Person1);
  217. list.Remove(this.Person3);
  218. Assert.That(list.Count, Is.EqualTo(0));
  219. Assert.That(list.Remove(this.Person2), Is.False);
  220. }
  221. [Test]
  222. public void IndexOf()
  223. {
  224. var list = EmptyRootElement;
  225. list.Add(this.Person1);
  226. list.Add(this.Person2);
  227. list.Add(this.Person3);
  228. Assert.That(list.Count, Is.EqualTo(3));
  229. Assert.That(list.IndexOf(this.Person1), Is.EqualTo(0));
  230. Assert.That(list.IndexOf(this.Person2), Is.EqualTo(1));
  231. Assert.That(list.IndexOf(this.Person3), Is.EqualTo(2));
  232. list.Remove(this.Person2);
  233. Assert.That(list.IndexOf(this.Person2), Is.EqualTo(-1));
  234. }
  235. [Test]
  236. public void Setter()
  237. {
  238. var list = EmptyRootElement;
  239. list.Add(this.Person1);
  240. list.Add(this.Person2);
  241. Assert.That(list.Count, Is.EqualTo(2));
  242. Assert.That(list.IndexOf(this.Person1), Is.EqualTo(0));
  243. Assert.That(list.IndexOf(this.Person2), Is.EqualTo(1));
  244. list[1] = this.Person3;
  245. Assert.That(list.Count, Is.EqualTo(2));
  246. Assert.That(list[1], Is.EqualTo(Person3));
  247. }
  248. [Test]
  249. public void Clear()
  250. {
  251. var list = EmptyRootElement;
  252. list.Add(this.Person1);
  253. list.Add(this.Person2);
  254. Assert.That(list.Count, Is.EqualTo(2));
  255. list.Clear();
  256. Assert.That(list.Count, Is.EqualTo(0));
  257. Assert.That(list.IndexOf(this.Person2), Is.EqualTo(-1));
  258. }
  259. [Test]
  260. public void IsReadOnly()
  261. {
  262. var list = EmptyRootElement;
  263. Assert.That(list.IsReadOnly, Is.False);
  264. }
  265. [Test]
  266. public void Enumerator()
  267. {
  268. var list = EmptyRootElement;
  269. list.Add(this.Person1);
  270. list.Add(this.Person2);
  271. var count = 0;
  272. foreach (var element in list)
  273. {
  274. count++;
  275. Assert.That(element.Equals(this.Person1) || element.Equals(this.Person2), Is.True);
  276. Assert.That(element.Equals(this.Person3), Is.False);
  277. }
  278. Assert.That(count, Is.EqualTo(2));
  279. }
  280. [Test]
  281. public void LinqTests()
  282. {
  283. var list = EmptyRootElement;
  284. list.Add(this.Person1);
  285. list.Add(this.Person2);
  286. list.Add(this.Person3);
  287. Assert.That(list.Any(x => x.Age == 25), Is.True);
  288. Assert.That(list.Any(x => x.Age == 99), Is.False);
  289. Assert.That(list.All(x => x.Age > 10), Is.True);
  290. Assert.That(list.Select(x => x.Name + " " + x.Prename).Count(), Is.EqualTo(3));
  291. }
  292. [Test]
  293. public void CopyToTests()
  294. {
  295. var list = EmptyRootElement;
  296. list.Add(this.Person1);
  297. list.Add(this.Person2);
  298. list.Add(this.Person3);
  299. var array = new Entity[10];
  300. list.CopyTo(array, 1);
  301. Assert.That(array[1], Is.EqualTo(this.Person1));
  302. Assert.That(array[2], Is.EqualTo(this.Person2));
  303. Assert.That(array[3], Is.EqualTo(this.Person3));
  304. list.CopyTo(array, 3);
  305. Assert.That(array[3], Is.EqualTo(this.Person1));
  306. Assert.That(array[4], Is.EqualTo(this.Person2));
  307. Assert.That(array[5], Is.EqualTo(this.Person3));
  308. }
  309. /// <summary>
  310. /// Tests whether the list for attributes is working
  311. /// </summary>
  312. [Test]
  313. public void TestListForAttributes()
  314. {
  315. var element = AttributeListDocument;
  316. var values = XmlList<int>.GetListForAttributes(element, "item", "value");
  317. Assert.That(values.Sum(), Is.EqualTo(105));
  318. Assert.That(values.Count, Is.EqualTo(3));
  319. values.Add(10);
  320. Assert.That(values.Sum(), Is.EqualTo(115));
  321. Assert.That(values.Count, Is.EqualTo(4));
  322. }
  323. /// <summary>
  324. /// Tests whether the list for attributes is working
  325. /// </summary>
  326. [Test]
  327. public void TestListForElements()
  328. {
  329. var element = ElementListDocument;
  330. var values = XmlList<int>.GetListForElements(element, "item");
  331. Assert.That(values.Sum(), Is.EqualTo(105));
  332. Assert.That(values.Count, Is.EqualTo(3));
  333. values.Add(10);
  334. Assert.That(values.Sum(), Is.EqualTo(115));
  335. Assert.That(values.Count, Is.EqualTo(4));
  336. }
  337. }
  338. }