/EffiProz-h18/EffiProzDBTest/TestHelper.cs

# · C# · 339 lines · 249 code · 76 blank · 14 comment · 40 complexity · 71e988f66cb8c1df2468f67ee5021699 MD5 · raw file

  1. //
  2. // (C) Copyright 2009 Irantha Suwandarathna (irantha@gmail.com)
  3. // All rights reserved.
  4. //
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using EffiProzDB;
  10. using EffiProzDB.Lib;
  11. using Microsoft.VisualStudio.TestTools.UnitTesting;
  12. namespace EffiProzDBTest
  13. {
  14. public static class TestHelper
  15. {
  16. static int tableCounter = 0;
  17. public static string GetNewTableName()
  18. {
  19. lock (typeof(TestHelper))
  20. {
  21. return "Table" + tableCounter++;
  22. }
  23. }
  24. public static Result ExecuteUpdateSQL_Success(SessionInterface sessionProxy, string sql)
  25. {
  26. Result resultOut = new Result(ResultConstants.SQLEXECDIRECT);
  27. resultOut.setMainString(sql);
  28. resultOut.setMaxRows(1000);
  29. Result resultIn = sessionProxy.execute(resultOut);
  30. Assert.IsNotNull(resultIn, resultIn.getMainString());
  31. if(resultIn.isError())
  32. Assert.Fail( resultIn.getMainString() +" "+resultIn.getException().Message+" "+resultIn.getException().StackTrace);
  33. Assert.IsFalse(resultIn.isData(),resultIn.getMainString());
  34. return resultIn;
  35. }
  36. public static Result ExecutePrepareStatement(SessionInterface sessionProxy, string sql, object[] parameters)
  37. {
  38. Result resultOut = new Result(ResultConstants.SQLPREPARE);
  39. resultOut.setMainString(sql);
  40. resultOut.setMaxRows(1000);
  41. Result resultIn = sessionProxy.execute(resultOut);
  42. Assert.IsNotNull(resultIn, resultIn.getMainString());
  43. Assert.IsFalse(resultIn.isError(), resultIn.getMainString());
  44. Assert.AreEqual(resultIn.getSize(), 3, resultIn.getMainString());
  45. Iterator it = resultIn.iterator();
  46. object[] row = (object[])it.next();
  47. int statementID = ((Result)row[0]).getStatementID();
  48. row = (object[])it.next();
  49. Result rsmdDescriptor = (Result)row[0];
  50. row = (object[])it.next();
  51. Result pmdDescriptor = (Result)row[0];
  52. int[] parameterTypes = pmdDescriptor.metaData.getParameterTypes();
  53. resultOut = new Result(ResultConstants.SQLEXECUTE, parameterTypes,
  54. statementID);
  55. resultOut.setMaxRows(1000);
  56. resultOut.setParameterData(parameters);
  57. resultIn = sessionProxy.execute(resultOut);
  58. Assert.IsNotNull(resultIn, resultIn.getMainString());
  59. Assert.IsFalse(resultIn.isError(), resultIn.getMainString());
  60. return resultIn;
  61. }
  62. public static Result GetPrepareStatement(SessionInterface sessionProxy, string sql)
  63. {
  64. Result resultOut = new Result(ResultConstants.SQLPREPARE);
  65. resultOut.setMainString(sql);
  66. resultOut.setMaxRows(1000);
  67. Result resultIn = sessionProxy.execute(resultOut);
  68. Assert.IsNotNull(resultIn, resultIn.getMainString());
  69. Assert.IsFalse(resultIn.isError(), resultIn.getMainString());
  70. Assert.AreEqual(resultIn.getSize(), 3, resultIn.getMainString());
  71. Iterator it = resultIn.iterator();
  72. object[] row = (object[])it.next();
  73. int statementID = ((Result)row[0]).getStatementID();
  74. row = (object[])it.next();
  75. Result rsmdDescriptor = (Result)row[0];
  76. row = (object[])it.next();
  77. Result pmdDescriptor = (Result)row[0];
  78. int[] parameterTypes = pmdDescriptor.metaData.getParameterTypes();
  79. resultOut = new Result(ResultConstants.SQLEXECUTE, parameterTypes,
  80. statementID);
  81. resultOut.setMaxRows(1000);
  82. return resultOut;
  83. }
  84. public static Result ExecuteGetPrepareStatement(SessionInterface sessionProxy, Result resultOut, object[] parameters)
  85. {
  86. resultOut.setParameterData(parameters);
  87. Result resultIn = sessionProxy.execute(resultOut);
  88. Assert.IsNotNull(resultIn, resultIn.getMainString());
  89. Assert.IsFalse(resultIn.isError(), resultIn.getMainString());
  90. return resultIn;
  91. }
  92. public static Result ExecuteUpdateSQL_Failure(SessionInterface sessionProxy, string sql)
  93. {
  94. Result resultOut = new Result(ResultConstants.SQLEXECDIRECT);
  95. resultOut.setMainString(sql);
  96. resultOut.setMaxRows(1000);
  97. Result resultIn = sessionProxy.execute(resultOut);
  98. Assert.IsNotNull(resultIn, resultIn.getMainString());
  99. Assert.IsTrue(resultIn.isError(), resultIn.getMainString());
  100. Assert.IsFalse(resultIn.isData(), resultIn.getMainString());
  101. return resultIn;
  102. }
  103. public static Result ExecuteSelectSQL(SessionInterface sessionProxy, string sql,int? count)
  104. {
  105. Result resultOut = new Result(ResultConstants.SQLEXECDIRECT);
  106. resultOut.setMainString(sql);
  107. resultOut.setMaxRows(1000);
  108. Result resultIn = sessionProxy.execute(resultOut);
  109. Assert.IsNotNull(resultIn, resultIn.getMainString());
  110. Assert.IsFalse(resultIn.isError(), resultIn.getMainString());
  111. Assert.IsTrue(resultIn.isData(), resultIn.getMainString());
  112. if(count != null)
  113. Assert.AreEqual(count, resultIn.getSize(), resultIn.getMainString());
  114. return resultIn;
  115. }
  116. public static void ExecuteSelectSQL_Failure(SessionInterface sessionProxy, string sql)
  117. {
  118. Result resultOut = new Result(ResultConstants.SQLEXECDIRECT);
  119. resultOut.setMainString(sql);
  120. resultOut.setMaxRows(1000);
  121. Result resultIn = sessionProxy.execute(resultOut);
  122. Assert.IsNotNull(resultIn, resultIn.getMainString());
  123. Assert.IsTrue(resultIn.isError(), resultIn.getMainString());
  124. }
  125. public static string CreateStdSelect(string table, int colCount)
  126. {
  127. string sql = "SELECT ";
  128. for (int i = 0; i < colCount; i++)
  129. {
  130. sql += "col" + (i+1);
  131. if (i != colCount - 1)
  132. sql += " , ";
  133. }
  134. return sql + " FROM " + table+ " ; ";
  135. }
  136. public static string CreateStdInsert(string table, int colCount, params object[] vals)
  137. {
  138. string sql = "INSERT INTO " + table + " (";
  139. for (int i = 0; i < colCount; i++)
  140. {
  141. sql += "col" + (i + 1);
  142. if (i != colCount - 1)
  143. sql += " , ";
  144. }
  145. sql += " ) VALUES ( ";
  146. for (int i = 0; i < colCount; i++)
  147. {
  148. if (vals[i] == null)
  149. {
  150. sql += " NULL ";
  151. }
  152. else if(vals[i] is DateTime)
  153. sql += "'"+ ((DateTime)vals[i]).ToString("o");
  154. else if (vals[i] is String)
  155. sql += "'" + vals[i];
  156. else
  157. sql += vals[i];
  158. if (vals[i] is String || vals[i] is DateTime)
  159. sql += "'";
  160. if (i != colCount - 1)
  161. sql += " , ";
  162. }
  163. return sql + " ); ";
  164. }
  165. public static string CreateStdUpdate(string table, string colName, object colVal)
  166. {
  167. string sql = "UPDATE " + table + " SET ";
  168. sql += colName + " = ";
  169. if (colVal is DateTime)
  170. sql += "'" + ((DateTime)colVal).ToString("o");
  171. else if (colVal is String)
  172. sql += "'" + colVal;
  173. else
  174. sql += colVal;
  175. if (colVal is String || colVal is DateTime)
  176. sql += "'";
  177. return sql + " ; ";
  178. }
  179. public static void MatchSingleResult(Result resultIn, params object[] vals)
  180. {
  181. //Type rtype;
  182. Iterator it = resultIn.iterator();
  183. object[] row = (object[])it.next();
  184. for (int j = 0; j < vals.Length; j++)
  185. {
  186. if( (vals[j]) is DateTime)
  187. Assert.IsTrue((vals[j]).Equals(row[j]));
  188. else
  189. Assert.AreEqual(vals[j], row[j]);
  190. }
  191. }
  192. public static void MatchSingleResultRow2(Result resultIn, int rowNumber, params object[] vals)
  193. {
  194. //Type rtype;
  195. Iterator it = resultIn.iterator();
  196. object[] row = (object[])it.next();
  197. for (int z = 0; z < rowNumber; z++)
  198. row = (object[])it.next();
  199. for (int j = 0; j < vals.Length; j++)
  200. {
  201. //rtype = (vals[j]).GetType();
  202. if ((vals[j]) is DateTime)
  203. Assert.IsTrue((vals[j]).Equals(row[j]));
  204. else
  205. Assert.AreEqual(Convert.ChangeType(vals[j], (row[j]).GetType()), row[j]);
  206. }
  207. }
  208. public static void MatchSingleResults(Result resultIn1, Result resultIn2, int colCount)
  209. {
  210. //Type rtype;
  211. Iterator it1 = resultIn1.iterator();
  212. Iterator it2 = resultIn2.iterator();
  213. while (it1.hasNext() && it2.hasNext())
  214. {
  215. object[] row1 = (object[])it1.next();
  216. object[] row2 = (object[])it2.next();
  217. for (int j = 0; j < colCount; j++)
  218. {
  219. //rtype = (vals[j]).GetType();
  220. if ((row1[j]) is DateTime)
  221. Assert.IsTrue((row1[j]).Equals(row2[j]));
  222. else
  223. Assert.AreEqual(row1[j], row2[j]);
  224. }
  225. }
  226. }
  227. public static void MatchSingleResultRow(Result resultIn, int rowNumber, params object[] vals)
  228. {
  229. //Type rtype;
  230. Iterator it = resultIn.iterator();
  231. object[] row = (object[])it.next();
  232. for (int z=0; z<rowNumber; z++)
  233. row = (object[])it.next();
  234. for (int j = 0; j < vals.Length; j++)
  235. {
  236. //rtype = (vals[j]).GetType();
  237. if ((vals[j]) is DateTime)
  238. Assert.IsTrue((vals[j]).Equals(row[j]));
  239. else
  240. Assert.AreEqual(vals[j], row[j]);
  241. }
  242. }
  243. public static void MatchMultiResult(Result resultIn,object[,] vals)
  244. {
  245. Iterator it = resultIn.iterator();
  246. //object[] row = null;
  247. int i = 0;
  248. foreach (var row in resultIn)
  249. {
  250. //row = (object[])it.next();
  251. for (int j = 0; j < resultIn.getColumnCount(); j++)
  252. {
  253. //rtype = (vals[j]).GetType();
  254. if ((row[j]) is DateTime)
  255. Assert.IsTrue((row[j]).Equals(vals[i,j]));
  256. else
  257. Assert.AreEqual(vals[i,j], row[j]);
  258. }
  259. i++;
  260. }
  261. }
  262. }
  263. }