Skip to content

Commit 390823e

Browse files
committed
Added FastColumnSetter Unit Tests
1 parent 00117c6 commit 390823e

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
using System;
2+
using System.Linq;
3+
#if NETFX_CORE
4+
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
5+
using SetUp = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.TestInitializeAttribute;
6+
using TestFixture = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.TestClassAttribute;
7+
using Test = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.TestMethodAttribute;
8+
#else
9+
using NUnit.Framework;
10+
#endif
11+
12+
namespace SQLite.Tests
13+
{
14+
[TestFixture]
15+
class FastColumnSetterTest
16+
{
17+
public class TestSetter
18+
{
19+
[AutoIncrement, PrimaryKey]
20+
public int Id { get; set; }
21+
22+
public string Data { get; set; }
23+
24+
public DateTime Date { get; set; }
25+
}
26+
27+
public class TestDb : SQLiteConnection
28+
{
29+
public TestDb (String path)
30+
: base (path)
31+
{
32+
CreateTable<TestSetter> ();
33+
}
34+
}
35+
36+
[Test]
37+
public void SetFastColumnSetters_AndReadData()
38+
{
39+
FastColumnSetter.RegisterFastColumnSetter(
40+
typeof(TestSetter),
41+
nameof(TestSetter.Id),
42+
(obj, stmt, index) => { ((TestSetter)obj).Id = SQLite3.ColumnInt(stmt, index); });
43+
44+
FastColumnSetter.RegisterFastColumnSetter (
45+
typeof (TestSetter),
46+
nameof (TestSetter.Data),
47+
(obj, stmt, index) => { ((TestSetter)obj).Data = SQLite3.ColumnString (stmt, index); });
48+
49+
FastColumnSetter.RegisterFastColumnSetter (
50+
typeof (TestSetter),
51+
nameof (TestSetter.Date),
52+
(obj, stmt, index) => { ((TestSetter)obj).Date = new DateTime (SQLite3.ColumnInt64 (stmt, index)); });
53+
54+
var n = 20;
55+
var cq = from i in Enumerable.Range (1, n)
56+
select new TestSetter {
57+
Data = Convert.ToString (i),
58+
Date = new DateTime (2013, 1, i)
59+
};
60+
61+
var db = new TestDb (TestPath.GetTempFileName ());
62+
db.InsertAll (cq);
63+
64+
var results = db.Table<TestSetter> ().Where (o => o.Data.Equals ("10"));
65+
Assert.AreEqual (results.Count (), 1);
66+
Assert.AreEqual (results.FirstOrDefault ().Data, "10");
67+
}
68+
69+
[Test]
70+
public void SetFastColumnSetters_AndReadData_IsCalled()
71+
{
72+
int callCount = 0;
73+
74+
FastColumnSetter.RegisterFastColumnSetter (
75+
typeof (TestSetter),
76+
nameof (TestSetter.Id),
77+
(obj, stmt, index) => {
78+
((TestSetter)obj).Id = SQLite3.ColumnInt (stmt, index);
79+
callCount++;
80+
});
81+
82+
FastColumnSetter.RegisterFastColumnSetter (
83+
typeof (TestSetter),
84+
nameof (TestSetter.Data),
85+
(obj, stmt, index) => {
86+
((TestSetter)obj).Data = SQLite3.ColumnString (stmt, index);
87+
callCount++;
88+
});
89+
90+
FastColumnSetter.RegisterFastColumnSetter (
91+
typeof (TestSetter),
92+
nameof (TestSetter.Date),
93+
(obj, stmt, index) => {
94+
((TestSetter)obj).Date = new DateTime (SQLite3.ColumnInt64 (stmt, index));
95+
callCount++;
96+
});
97+
98+
var n = 20;
99+
var cq = from i in Enumerable.Range (1, n)
100+
select new TestSetter {
101+
Data = Convert.ToString (i),
102+
Date = new DateTime (2013, 1, i)
103+
};
104+
105+
var db = new TestDb (TestPath.GetTempFileName ());
106+
db.InsertAll (cq);
107+
108+
var results = db.Table<TestSetter> ().Where (o => o.Data.Equals ("10"));
109+
Assert.AreEqual (results.Count (), 1);
110+
Assert.AreEqual (results.FirstOrDefault ().Data, "10");
111+
112+
Assert.IsTrue(callCount > 0);
113+
}
114+
}
115+
}
116+
}

0 commit comments

Comments
 (0)