1 // SqliteDataAdapterUnitTests.cs - NUnit Test Cases for Mono.Data.Sqlite.SqliteDataAdapter
3 // Author(s): Thomas Zoechling <thomas.zoechling@gmx.at>
10 using Mono.Data.Sqlite;
11 using NUnit.Framework;
13 namespace MonoTests.Mono.Data.Sqlite
16 public class SqliteDataAdapterUnitTests
18 readonly static string _uri = "SqliteTest.db";
19 readonly static string _connectionString = "URI=file://" + _uri + ", version=3";
20 static SqliteConnection _conn = new SqliteConnection (_connectionString);
22 static SqliteDataAdapter PrepareDataAdapter()
24 SqliteCommand select = new SqliteCommand("SELECT t, f, i, b FROM t1",_conn);
25 SqliteCommand update = new SqliteCommand("UPDATE t1 SET t = :textP, f = :floatP, i = :integerP, n=:blobP WHERE t = :textP ");
26 update.Connection=_conn;
27 SqliteCommand delete = new SqliteCommand("DELETE FROM t1 WHERE t = :textP");
28 delete.Connection=_conn;
29 SqliteCommand insert = new SqliteCommand("INSERT INTO t1 (t, f, i, b ) VALUES(:textP,:floatP,:integerP,:blobP)");
30 insert.Connection=_conn;
31 SqliteDataAdapter custDA = new SqliteDataAdapter(select);
33 SqliteParameter textP = new SqliteParameter();
34 textP.ParameterName = "textP";
35 textP.SourceColumn = "t";
37 SqliteParameter floatP = new SqliteParameter();
38 floatP.ParameterName = "floatP";
39 floatP.SourceColumn = "f";
41 SqliteParameter integerP = new SqliteParameter();
42 integerP.ParameterName ="integerP";
43 integerP.SourceColumn = "i";
45 SqliteParameter blobP = new SqliteParameter();
46 blobP.ParameterName = "blobP";
47 blobP.SourceColumn = "b";
49 update.Parameters.Add(textP);
50 update.Parameters.Add(floatP);
51 update.Parameters.Add(integerP);
52 update.Parameters.Add(blobP);
54 delete.Parameters.Add(textP);
56 insert.Parameters.Add(textP);
57 insert.Parameters.Add(floatP);
58 insert.Parameters.Add(integerP);
59 insert.Parameters.Add(blobP);
61 custDA.UpdateCommand = update;
62 custDA.DeleteCommand = delete;
63 custDA.InsertCommand = insert;
69 [Category ("NotWorking")]
70 public void GetSchemaTable()
72 _conn.ConnectionString = _connectionString;
73 SqliteDataReader reader = null;
77 SqliteCommand cmd = (SqliteCommand) _conn.CreateCommand ();
78 cmd.CommandText = "select * from t1";
79 reader = cmd.ExecuteReader ();
82 DataTable dt = reader.GetSchemaTable ();
83 Assert.IsNotNull (dt, "#GS1 should return valid table");
84 Assert.IsTrue (dt.Rows.Count > 0, "#GS2 should return with rows ;-)");
88 if (reader != null && !reader.IsClosed)
96 [Category ("NotWorking")]
97 public void DataAdapterRandomValues()
99 SqliteDataAdapter da = PrepareDataAdapter();
100 DataSet ds = new DataSet();
102 Random random = new Random();
109 DataRow dr = ds.Tables[0].NewRow();
111 foreach(DataColumn dc in ds.Tables[0].Columns)
113 switch(dc.DataType.Name)
126 StringBuilder builder = new StringBuilder(ml);
127 for (int k=0; k < random.Next(ml); k++)
129 builder.Append((char)random.Next(65536));
132 string curs = builder.ToString();
139 dr[dc]=random.Next(65536);
145 dr[dc]=Convert.ToInt64(random.Next(65536));
150 ds.Tables[0].Rows.Add(dr);
152 int res = da.Update(ds);
153 Assert.AreEqual(i,res);