PageRenderTime 51ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/src/BurnSystems/tests/BurnSystems.UnitTests/Database/Objects/ConverterTests.cs

https://bitbucket.org/mbrenn/entityconnector
C# | 187 lines | 156 code | 21 blank | 10 comment | 0 complexity | f6c0ca9c3b382e2e4f29407c730c4426 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.Database.Objects;
  7. namespace BurnSystems.UnitTests.Database.Objects
  8. {
  9. /// <summary>
  10. /// These tests check if the Mapper class is correctly working.
  11. /// These tests don't need database access
  12. /// </summary>
  13. [TestFixture]
  14. public class ConverterTests
  15. {
  16. [Test]
  17. public void TestNoDatabaseClassAttribute()
  18. {
  19. Assert.Throws<TypeInitializationException>(() => new Converter<NoDatabaseClassAttribute>());
  20. }
  21. [Test]
  22. public void TestMultipleDatabaseKeyAttributes()
  23. {
  24. Assert.Throws<TypeInitializationException>(() => new Converter<MultipleDatabaseKeyAttributes>());
  25. }
  26. [Test]
  27. public void TestNoDatabaseKeyAttributes()
  28. {
  29. Assert.Throws<TypeInitializationException>(() => new Converter<NoDatabaseKeyAttributes>());
  30. }
  31. [Test]
  32. public void TestInvalidDatabaseKeyType()
  33. {
  34. Assert.Throws<TypeInitializationException>(() => new Converter<InvalidDatabaseKeyType>());
  35. }
  36. [Test]
  37. public void TestNoPublicSetMethod()
  38. {
  39. Assert.Throws<TypeInitializationException>(() => new Converter<NoPublicSetMethod>());
  40. }
  41. [Test]
  42. public void TestValidClassMapperCreation()
  43. {
  44. var mapper = new Converter<Person>();
  45. Assert.That(mapper, Is.Not.Null);
  46. }
  47. [Test]
  48. public void TestConversionToInstance()
  49. {
  50. var data = new Dictionary<string, object>();
  51. data["Id"] = 12;
  52. data["Prename"] = "Karl";
  53. data["Name"] = "Heinz";
  54. data["Age"] = 54;
  55. data["Weight"] = 76.54;
  56. data["Sex"] = "Male";
  57. data["Marriage"] = new DateTime(1998, 9, 11, 3, 4, 5);
  58. var mapper = new Converter<Person>();
  59. var person = mapper.ConvertToInstance(data);
  60. Assert.That(person.Id, Is.EqualTo(12));
  61. Assert.That(person.Prename, Is.EqualTo("Karl"));
  62. Assert.That(person.Name, Is.EqualTo("Heinz"));
  63. Assert.That(person.Age_Temp, Is.EqualTo(54));
  64. Assert.That(person.Weight, Is.EqualTo(76.54));
  65. Assert.That(person.Sex, Is.EqualTo(Sex.Male));
  66. Assert.That(person.Obsolete, Is.Null);
  67. }
  68. [Test]
  69. public void TestConversionToDatabaseObject()
  70. {
  71. var person = new Person();
  72. person.Id = 12;
  73. person.Prename = "Karl";
  74. person.Name = "Heinz";
  75. person.Age_Temp = 54;
  76. person.Weight = 76.54;
  77. person.Sex = Sex.Male;
  78. person.Obsolete = "ABC";
  79. var mapper = new Converter<Person>();
  80. var data = mapper.ConvertToDatabaseObject(person, true);
  81. Assert.That(data["Id"], Is.EqualTo(12));
  82. Assert.That(data["Prename"], Is.EqualTo("Karl"));
  83. Assert.That(data["Name"], Is.EqualTo("Heinz"));
  84. Assert.That(data["Age"], Is.EqualTo(54));
  85. Assert.That(data["Weight"], Is.EqualTo(76.54));
  86. Assert.That(data["Sex"], Is.EqualTo("Male"));
  87. Assert.That(data.ContainsKey("Obsolete"), Is.False);
  88. }
  89. public class NoDatabaseClassAttribute
  90. {
  91. public string Name
  92. {
  93. get;
  94. set;
  95. }
  96. }
  97. [DatabaseClass]
  98. public class MultipleDatabaseKeyAttributes
  99. {
  100. [DatabaseKey("Id1")]
  101. public int Id
  102. {
  103. get;
  104. set;
  105. }
  106. [DatabaseKey("Id2")]
  107. public int Id2
  108. {
  109. get;
  110. set;
  111. }
  112. }
  113. [DatabaseClass]
  114. public class NoDatabaseKeyAttributes
  115. {
  116. public int Id
  117. {
  118. get;
  119. set;
  120. }
  121. public int Id2
  122. {
  123. get;
  124. set;
  125. }
  126. }
  127. [DatabaseClass]
  128. public class InvalidDatabaseKeyType
  129. {
  130. [DatabaseKey("Id")]
  131. public string Id
  132. {
  133. get;
  134. set;
  135. }
  136. /// <summary>
  137. ///
  138. /// </summary>
  139. [DatabaseProperty("Prename")]
  140. public string Prename
  141. {
  142. get;
  143. set;
  144. }
  145. }
  146. [DatabaseClass]
  147. public class NoPublicSetMethod
  148. {
  149. [DatabaseKey("Id")]
  150. public int Id
  151. {
  152. get;
  153. set;
  154. }
  155. /// <summary>
  156. ///
  157. /// </summary>
  158. [DatabaseProperty("Prename")]
  159. public string Prename
  160. {
  161. get;
  162. internal set;
  163. }
  164. }
  165. }
  166. }