PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/test/Glue.Data.Test/DataMappingTest.cs

http://glue.googlecode.com/
C# | 182 lines | 163 code | 19 blank | 0 comment | 2 complexity | 63eb4fb0703d3b26e1073a46e3931c42 MD5 | raw file
Possible License(s): LGPL-3.0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Reflection;
  5. using NUnit.Framework;
  6. using Glue.Lib;
  7. using Glue.Data;
  8. using Glue.Data.Mapping;
  9. namespace Glue.Data.Test
  10. {
  11. public abstract class DataMappingTest
  12. {
  13. public IDataProvider Provider;
  14. public virtual void Setup()
  15. {
  16. Provider.ExecuteNonQuery("insert into Category(CategoryName) values ('Food')");
  17. Provider.ExecuteNonQuery("insert into Category(CategoryName) values ('Drinks')");
  18. Provider.ExecuteNonQuery("insert into Category(CategoryName) values ('Sports')");
  19. Provider.ExecuteNonQuery("insert into Language(Code,Name) values ('en','English')");
  20. Provider.ExecuteNonQuery("insert into Language(Code,Name) values ('nl','Nederlands')");
  21. Provider.ExecuteNonQuery("insert into Language(Code,Name) values ('de','Deutsch')");
  22. Provider.ExecuteNonQuery("insert into Country(Code,Name) values ('US','United States')");
  23. Provider.ExecuteNonQuery("insert into Country(Code,Name) values ('UK','United Kingdom')");
  24. Provider.ExecuteNonQuery("insert into Country(Code,Name) values ('NL','Netherlands')");
  25. Provider.ExecuteNonQuery("insert into Country(Code,Name) values ('DE','Germany')");
  26. Provider.ExecuteNonQuery("insert into Country(Code,Name) values ('CH','Switzerland')");
  27. }
  28. [Test]
  29. public void TestPrimitives()
  30. {
  31. string s = "id desc";
  32. Order o = s;
  33. Log.Info("Order: " + o);
  34. Log.Info("Order Contains Id: " + o.Contains("Id"));
  35. Filter f = "Id=1";
  36. Log.Info("Filter: " + f);
  37. f = Filter.And(f, "ClientId=2");
  38. Log.Info("Filter: " + f);
  39. f = Filter.Create(
  40. "Name=@0 AND BirthDate=@1 AND UniqId=@2 AND IsActive=@3 AND Int=@4 AND Float=@5 AND Char=@6",
  41. "'s Gravesande",
  42. DateTime.Now,
  43. Guid.NewGuid(),
  44. false,
  45. 32768,
  46. 3.141592,
  47. '\'');
  48. f = Filter.And(f, "BirthDate > " + Filter.ToSql(DateTime.Now));
  49. f = Filter.Or(f, "UniqId=" + Filter.ToSql(Guid.NewGuid()));
  50. Log.Info("Filter: " + f);
  51. Limit l = Limit.Range(300, 350);
  52. Log.Info("Limit: " + l);
  53. }
  54. [Test]
  55. public void TestEntities()
  56. {
  57. Contact c = new Contact();
  58. c.FirstName = "Bob";
  59. c.LastName = "Builder";
  60. c.Email = "bob@builder";
  61. c.Language = Language.Find("en");
  62. c.Address.City = "London";
  63. c.Address.Street = "1 Hyde Park";
  64. c.Address.ZipCode = "11111";
  65. c.Address.Country = Country.Find("UK");
  66. Provider.Insert(c);
  67. c.FirstName = "Rita";
  68. c.LastName = "Metermaid";
  69. c.Email = "rita@metermaid";
  70. c.Language = Language.Find("en");
  71. c.Address.City = "Miami";
  72. c.Address.Street = "Daytona Beach";
  73. c.Address.ZipCode = "29384";
  74. c.Address.Country = Country.Find("US");
  75. Provider.Insert(c);
  76. c = Contact.Find(1);
  77. Log.Info("Contact: " + c.Id + "=" + c.DisplayName);
  78. c = (Contact)Provider.FindByFilter(typeof(Contact), (Filter)"ContactId=1");
  79. Log.Info("Contact Language: " + c.Language.Code + "[" + c.Language.Name + "]");
  80. Log.Info("Contact Country: " + c.Address.Country.Code + "[" + c.Address.Country.Name + "]");
  81. c.Language = "nl";
  82. c.Address.Country = "UK";
  83. Log.Info("Contact Country: " + c.Address.Country.Code + "[" + c.Address.Country.Name + "]");
  84. foreach (Category cat in c.CategoryList())
  85. Log.Info(" Cat: " + cat.CategoryName);
  86. c = Contact.Find(2);
  87. Log.Info("Contact: " + c.Id + "=" + c.DisplayName);
  88. foreach (Category cat in c.CategoryList())
  89. Log.Info(" Cat: " + cat.CategoryName);
  90. c.CategoryAdd(1);
  91. c.CategoryAdd(2);
  92. c.CategoryAdd(3);
  93. foreach (Category cat in c.CategoryList())
  94. Log.Info(" Cat: " + cat.CategoryName);
  95. foreach (Category cat in c.CategoryList(1,1))
  96. Log.Info(" Cat: " + cat.CategoryName);
  97. c.CategoryDelete(1);
  98. c.CategoryDelete(2);
  99. c.CategoryDelete(3);
  100. foreach (Category cat in c.CategoryList())
  101. Log.Info(" Cat: " + cat.CategoryName);
  102. using (IDataProvider session = Provider.Open(System.Data.IsolationLevel.ReadCommitted))
  103. {
  104. for (int i = 1; i <= 100; i++)
  105. {
  106. Category cat = new Category();
  107. cat.CategoryName = "Cat" + i;
  108. session.Insert(cat);
  109. }
  110. for (int i = 1; i <= 100; i++)
  111. {
  112. session.ExecuteNonQuery("delete from Category where CategoryName=@Name", "Name", "Cat" + i);
  113. }
  114. }
  115. c.LastName = "Wok888";
  116. c.Insert();
  117. Log.Info("Contact: " + c.Id + "=" + c.DisplayName);
  118. c.LastName = "Wok888-Updated";
  119. c.Update();
  120. Log.Info("Contact: " + c.Id + "=" + c.DisplayName);
  121. int id = c.Id;
  122. c.Delete();
  123. c = Contact.Find(id);
  124. Log.Info("Contact: '" + c + "' should be empty");
  125. }
  126. }
  127. [TestFixture]
  128. public class SqlDataMappingTest : DataMappingTest
  129. {
  130. [SetUp]
  131. public override void Setup()
  132. {
  133. Context.Current = (Context)Configuration.Get("context-sql");
  134. Context.Current.CreateDatabase();
  135. Provider = Context.Current.Provider;
  136. base.Setup();
  137. }
  138. }
  139. [TestFixture]
  140. public class MySqlDataMappingTest : DataMappingTest
  141. {
  142. [SetUp]
  143. public override void Setup()
  144. {
  145. Context.Current = (Context)Configuration.Get("context-mysql");
  146. Context.Current.CreateDatabase();
  147. Provider = Context.Current.Provider;
  148. base.Setup();
  149. }
  150. }
  151. [TestFixture]
  152. public class SQLiteDataMappingTest : DataMappingTest
  153. {
  154. [SetUp]
  155. public override void Setup()
  156. {
  157. Context.Current = (Context)Configuration.Get("context-sqlite");
  158. Context.Current.CreateDatabase();
  159. Provider = Context.Current.Provider;
  160. base.Setup();
  161. }
  162. }
  163. }