Skip to content

Commit 376d78a

Browse files
committed
Tests for default values and type compatibility
1 parent 312f8d0 commit 376d78a

2 files changed

Lines changed: 63 additions & 6 deletions

File tree

Orm/Xtensive.Orm.Tests/Storage/FieldDefaultValueTest.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2008-2021 Xtensive LLC.
1+
// Copyright (C) 2008-2023 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Dmitri Maximov
@@ -146,6 +146,14 @@ public class X : Entity
146146
[Field(DefaultValue = "2012.12.12")]
147147
public DateTime FDateTime { get; set; }
148148

149+
#if NET6_0_OR_GREATER //DO_DATEONLY
150+
[Field(DefaultValue = "2012.12.12")]
151+
public DateOnly FDateOnly { get; set; }
152+
153+
[Field(DefaultValue = "00:35:53.35")]
154+
public TimeOnly FTimeOnly { get; set; }
155+
156+
#endif
149157
[Field(DefaultValue = 1000)]
150158
public TimeSpan FTimeSpan { get; set; }
151159

@@ -223,6 +231,14 @@ public class X : Entity
223231
[Field(DefaultValue = "2012.12.12")]
224232
public DateTime? FNDateTime { get; set; }
225233

234+
#if NET6_0_OR_GREATER //DO_DATEONLY
235+
[Field(DefaultValue = "2012.12.12")]
236+
public DateOnly? FNDateOnly { get; set; }
237+
238+
[Field(DefaultValue = "00:35:53.35")]
239+
public TimeOnly? FNTimeOnly { get; set; }
240+
241+
#endif
226242
[Field(DefaultValue = 1000)]
227243
public TimeSpan? FNTimeSpan { get; set; }
228244

@@ -331,6 +347,12 @@ public void DefaultValuesTest()
331347
Assert.AreEqual(true, x.FBool);
332348
Assert.AreEqual(byte.MaxValue, x.FByte);
333349
Assert.AreEqual(DateTime.Parse("2012.12.12"), x.FDateTime);
350+
351+
#if NET6_0_OR_GREATER //DO_DATEONLY
352+
Assert.AreEqual(DateOnly.Parse("2012.12.12"), x.FDateOnly);
353+
Assert.AreEqual(TimeOnly.Parse("00:35:53.35"), x.FTimeOnly);
354+
#endif
355+
334356
Assert.AreEqual(12.12M, x.FDecimal);
335357
Assert.AreEqual(float.MaxValue, x.FDouble);
336358
Assert.AreEqual(EByte.Max, x.FEByte);
@@ -357,6 +379,10 @@ public void DefaultValuesTest()
357379
Assert.AreEqual(true, x.FNBool);
358380
Assert.AreEqual(byte.MaxValue, x.FNByte);
359381
Assert.AreEqual(DateTime.Parse("2012.12.12"), x.FNDateTime);
382+
#if NET6_0_OR_GREATER //DO_DATEONLY
383+
Assert.AreEqual(DateOnly.Parse("2012.12.12"), x.FNDateOnly);
384+
Assert.AreEqual(TimeOnly.Parse("00:35:53.35"), x.FNTimeOnly);
385+
#endif
360386
Assert.AreEqual(12.12M, x.FNDecimal);
361387
Assert.AreEqual(float.MaxValue, x.FNDouble);
362388
Assert.AreEqual(EByte.Max, x.FNEByte);

Orm/Xtensive.Orm.Tests/Storage/TypeCompatibilityTest.cs

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2008-2021 Xtensive LLC.
1+
// Copyright (C) 2008-2023 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Dmitri Maximov
@@ -113,6 +113,14 @@ public class X : Entity
113113
[Field]
114114
public DateTime FDateTime { get; set; }
115115

116+
#if NET6_0_OR_GREATER //DO_DATEONLY
117+
[Field]
118+
public DateOnly FDateOnly { get; set; }
119+
120+
[Field]
121+
public TimeOnly FTimeOnly { get; set; }
122+
123+
#endif
116124
[Field]
117125
public TimeSpan FTimeSpan { get; set; }
118126

@@ -198,6 +206,14 @@ public class X : Entity
198206
[Field]
199207
public DateTime? FNDateTime { get; set; }
200208

209+
#if NET6_0_OR_GREATER //DO_DATEONLY
210+
[Field]
211+
public DateOnly? FNDateOnly { get; set; }
212+
213+
[Field]
214+
public TimeOnly? FNTimeOnly { get; set; }
215+
216+
#endif
201217
[Field]
202218
public TimeSpan? FNTimeSpan { get; set; }
203219

@@ -274,17 +290,28 @@ public void DefaultValuesTest()
274290
t.Complete();
275291
}
276292

277-
var field = typeof (StorageDriver).GetField("underlyingDriver", BindingFlags.Instance | BindingFlags.NonPublic);
278-
var sqlDriver = (SqlDriver) field.GetValue(Domain.Handlers.StorageDriver);
293+
var sqlDriver = TestSqlDriver.Create(session.Domain.Configuration.ConnectionInfo);
279294
var dataTypeInfo = sqlDriver.ServerInfo.DataTypes.DateTime;
280-
var minValue = ((ValueRange<DateTime>) dataTypeInfo.ValueRange).MinValue;
295+
var dateTimeMinValue = ((ValueRange<DateTime>) dataTypeInfo.ValueRange).MinValue;
296+
297+
#if NET6_0_OR_GREATER //DO_DATEONLY
298+
dataTypeInfo = sqlDriver.ServerInfo.DataTypes.DateOnly;
299+
var dateOnlyMinValue = ((ValueRange<DateOnly>) dataTypeInfo.ValueRange).MinValue;
300+
301+
dataTypeInfo = sqlDriver.ServerInfo.DataTypes.TimeOnly;
302+
var timeOnlyMinValue = ((ValueRange<TimeOnly>) dataTypeInfo.ValueRange).MinValue;
281303

304+
#endif
282305
using (var t = session.OpenTransaction()) {
283306
X x = session.Query.SingleOrDefault<X>(key);
284307
Assert.AreEqual(false, x.FBool);
285308
Assert.AreEqual(0, x.FByte);
286309
Assert.AreEqual(null, x.FByteArray);
287-
Assert.AreEqual(minValue, x.FDateTime);
310+
Assert.AreEqual(dateTimeMinValue, x.FDateTime);
311+
#if NET6_0_OR_GREATER //DO_DATEONLY
312+
Assert.AreEqual(dateOnlyMinValue, x.FDateOnly);
313+
Assert.AreEqual(timeOnlyMinValue, x.FTimeOnly);
314+
#endif
288315
Assert.AreEqual(0, x.FDecimal);
289316
Assert.AreEqual(0, x.FDouble);
290317
Assert.AreEqual(EByte.Default, x.FEByte);
@@ -312,6 +339,10 @@ public void DefaultValuesTest()
312339
Assert.AreEqual(null, x.FNBool);
313340
Assert.AreEqual(null, x.FNByte);
314341
Assert.AreEqual(null, x.FNDateTime);
342+
#if NET6_0_OR_GREATER //DO_DATEONLY
343+
Assert.AreEqual(null, x.FNDateOnly);
344+
Assert.AreEqual(null, x.FNTimeOnly);
345+
#endif
315346
Assert.AreEqual(null, x.FNDecimal);
316347
Assert.AreEqual(null, x.FNDouble);
317348
Assert.AreEqual(null, x.FNEByte);

0 commit comments

Comments
 (0)