Skip to content

Commit f8d8838

Browse files
authored
Merge pull request #878 from perfectco/custom-datetime
Actually set StoreTimeSpanAsTicks flag
2 parents 72effbe + 3d900ae commit f8d8838

File tree

3 files changed

+44
-19
lines changed

3 files changed

+44
-19
lines changed

src/SQLite.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ public SQLiteConnection (SQLiteConnectionString connectionString)
314314
_open = true;
315315

316316
StoreDateTimeAsTicks = connectionString.StoreDateTimeAsTicks;
317+
StoreTimeSpanAsTicks = connectionString.StoreTimeSpanAsTicks;
317318
DateTimeStringFormat = connectionString.DateTimeStringFormat;
318319
DateTimeStyle = connectionString.DateTimeStyle;
319320

tests/DateTimeTest.cs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ namespace SQLite.Tests
1515
[TestFixture]
1616
public class DateTimeTest
1717
{
18+
const string DefaultSQLiteDateTimeString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff";
19+
1820
class TestObj
1921
{
2022
[PrimaryKey, AutoIncrement]
@@ -28,50 +30,56 @@ class TestObj
2830
[Test]
2931
public void AsTicks ()
3032
{
33+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
3134
var db = new TestDb (storeDateTimeAsTicks: true);
32-
TestDateTime (db);
35+
TestDateTime (db, dateTime, dateTime.Ticks.ToString ());
3336
}
3437

3538
[Test]
3639
public void AsStrings ()
3740
{
41+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
3842
var db = new TestDb (storeDateTimeAsTicks: false);
39-
TestDateTime (db);
43+
TestDateTime (db, dateTime, dateTime.ToString (DefaultSQLiteDateTimeString));
4044
}
4145

4246
[TestCase ("o")]
4347
[TestCase ("MMM'-'dd'-'yyyy' 'HH':'mm':'ss'.'fffffff")]
4448
public void AsCustomStrings (string format)
4549
{
50+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
4651
var db = new TestDb (CustomDateTimeString (format));
47-
TestDateTime (db);
52+
TestDateTime (db, dateTime, dateTime.ToString (format));
4853
}
4954

5055
[Test]
5156
public void AsyncAsTicks ()
5257
{
58+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
5359
var db = new SQLiteAsyncConnection (TestPath.GetTempFileName (), true);
54-
TestAsyncDateTime (db);
60+
TestAsyncDateTime (db, dateTime, dateTime.Ticks.ToString ());
5561
}
5662

5763
[Test]
5864
public void AsyncAsString ()
5965
{
66+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
6067
var db = new SQLiteAsyncConnection (TestPath.GetTempFileName (), false);
61-
TestAsyncDateTime (db);
68+
TestAsyncDateTime (db, dateTime, dateTime.ToString (DefaultSQLiteDateTimeString));
6269
}
6370

6471
[TestCase ("o")]
6572
[TestCase ("MMM'-'dd'-'yyyy' 'HH':'mm':'ss'.'fffffff")]
6673
public void AsyncAsCustomStrings (string format)
6774
{
75+
var dateTime = new DateTime (2012, 1, 14, 3, 2, 1, 234);
6876
var db = new SQLiteAsyncConnection (CustomDateTimeString (format));
69-
TestAsyncDateTime (db);
77+
TestAsyncDateTime (db, dateTime, dateTime.ToString (format));
7078
}
7179

72-
SQLiteConnectionString CustomDateTimeString (string dateTimeFormat) => new SQLiteConnectionString (TestPath.GetTempFileName (), false, dateTimeFormat);
80+
SQLiteConnectionString CustomDateTimeString (string dateTimeFormat) => new SQLiteConnectionString (TestPath.GetTempFileName (), SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite, false, dateTimeStringFormat: dateTimeFormat);
7381

74-
void TestAsyncDateTime (SQLiteAsyncConnection db)
82+
void TestAsyncDateTime (SQLiteAsyncConnection db, DateTime dateTime, string expected)
7583
{
7684
db.CreateTableAsync<TestObj> ().Wait ();
7785

@@ -81,14 +89,17 @@ void TestAsyncDateTime (SQLiteAsyncConnection db)
8189
// Ticks
8290
//
8391
o = new TestObj {
84-
ModifiedTime = new DateTime (2012, 1, 14, 3, 2, 1, 234),
92+
ModifiedTime = dateTime,
8593
};
8694
db.InsertAsync (o).Wait ();
8795
o2 = db.GetAsync<TestObj> (o.Id).Result;
8896
Assert.AreEqual (o.ModifiedTime, o2.ModifiedTime);
97+
98+
var stored = db.ExecuteScalarAsync<string> ("SELECT ModifiedTime FROM TestObj;").Result;
99+
Assert.AreEqual (expected, stored);
89100
}
90101

91-
void TestDateTime (TestDb db)
102+
void TestDateTime (TestDb db, DateTime dateTime, string expected)
92103
{
93104
db.CreateTable<TestObj> ();
94105

@@ -98,11 +109,14 @@ void TestDateTime (TestDb db)
98109
// Ticks
99110
//
100111
o = new TestObj {
101-
ModifiedTime = new DateTime (2012, 1, 14, 3, 2, 1, 234),
112+
ModifiedTime = dateTime,
102113
};
103114
db.Insert (o);
104115
o2 = db.Get<TestObj> (o.Id);
105116
Assert.AreEqual (o.ModifiedTime, o2.ModifiedTime);
117+
118+
var stored = db.ExecuteScalar<string> ("SELECT ModifiedTime FROM TestObj;");
119+
Assert.AreEqual (expected, stored);
106120
}
107121

108122
class NullableDateObj

tests/TimeSpanTest.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,58 +28,68 @@ class TestObj
2828
public void AsTicks ()
2929
{
3030
var db = new TestDb (TimeSpanAsTicks (true));
31-
TestTimeSpan (db);
31+
var span = new TimeSpan (42, 12, 33, 20, 501);
32+
TestTimeSpan (db, span, span.Ticks.ToString ());
3233
}
3334

3435
[Test]
3536
public void AsStrings ()
3637
{
3738
var db = new TestDb (TimeSpanAsTicks (false));
38-
TestTimeSpan (db);
39+
var span = new TimeSpan (42, 12, 33, 20, 501);
40+
TestTimeSpan (db, span, span.ToString ());
3941
}
4042

4143
[Test]
4244
public void AsyncAsTicks ()
4345
{
4446
var db = new SQLiteAsyncConnection (TimeSpanAsTicks (true));
45-
TestAsyncTimeSpan (db);
47+
var span = new TimeSpan (42, 12, 33, 20, 501);
48+
TestAsyncTimeSpan (db, span, span.Ticks.ToString ());
4649
}
4750

4851
[Test]
4952
public void AsyncAsStrings ()
5053
{
5154
var db = new SQLiteAsyncConnection (TimeSpanAsTicks (false));
52-
TestAsyncTimeSpan (db);
55+
var span = new TimeSpan (42, 12, 33, 20, 501);
56+
TestAsyncTimeSpan (db, span, span.ToString ());
5357
}
5458

5559
SQLiteConnectionString TimeSpanAsTicks (bool asTicks = true) => new SQLiteConnectionString (TestPath.GetTempFileName (), SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite, true, storeTimeSpanAsTicks: asTicks);
5660

57-
void TestAsyncTimeSpan (SQLiteAsyncConnection db)
61+
void TestAsyncTimeSpan (SQLiteAsyncConnection db, TimeSpan duration, string expected)
5862
{
5963
db.CreateTableAsync<TestObj> ().Wait ();
6064

6165
TestObj o, o2;
6266

6367
o = new TestObj {
64-
Duration = new TimeSpan (42, 12, 33, 20, 501),
68+
Duration = duration,
6569
};
6670
db.InsertAsync (o).Wait ();
6771
o2 = db.GetAsync<TestObj> (o.Id).Result;
6872
Assert.AreEqual (o.Duration, o2.Duration);
73+
74+
var stored = db.ExecuteScalarAsync<string> ("SELECT Duration FROM TestObj;").Result;
75+
Assert.AreEqual (expected, stored);
6976
}
7077

71-
void TestTimeSpan (TestDb db)
78+
void TestTimeSpan (TestDb db, TimeSpan duration, string expected)
7279
{
7380
db.CreateTable<TestObj> ();
7481

7582
TestObj o, o2;
7683

7784
o = new TestObj {
78-
Duration = new TimeSpan (42, 12, 33, 20, 501),
85+
Duration = duration,
7986
};
8087
db.Insert (o);
8188
o2 = db.Get<TestObj> (o.Id);
8289
Assert.AreEqual (o.Duration, o2.Duration);
90+
91+
var stored = db.ExecuteScalar<string> ("SELECT Duration FROM TestObj;");
92+
Assert.AreEqual (expected, stored);
8393
}
8494
}
8595
}

0 commit comments

Comments
 (0)