Skip to content

Commit c70c497

Browse files
committed
Some tricky operations with datetime fractions changed
Only tests affected
1 parent 578b3fa commit c70c497

4 files changed

Lines changed: 18 additions & 14 deletions

File tree

Orm/Xtensive.Orm.Tests.Framework/TestHelper.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ public static DateTime AdjustDateTimeForCurrentProvider(this DateTime origin)
6767
/// <param name="origin">The value to adjust.</param>
6868
/// <param name="providerInfo">Type of provider.</param>
6969
/// <returns>New value with less resolution if the provider requires it, otherwise, untouched <paramref name="origin"/>.</returns>
70-
private static DateTime AdjustDateTimeForProvider(this DateTime origin, StorageProviderInfo providerInfo)
70+
public static DateTime AdjustDateTimeForProvider(this DateTime origin, StorageProviderInfo providerInfo)
7171
{
72-
//long? divider;
7372
var provider = providerInfo.Provider;
7473
switch (provider) {
7574
case StorageProvider.MySql:
@@ -81,7 +80,7 @@ private static DateTime AdjustDateTimeForProvider(this DateTime origin, StorageP
8180
case StorageProvider.PostgreSql:
8281
return AdjustDateTime(origin, 6);
8382
case StorageProvider.Oracle:
84-
return AdjustDateTime(origin, 6, true);
83+
return AdjustDateTime(origin, 7);
8584
default:
8685
return origin;
8786
}
@@ -91,11 +90,11 @@ private static DateTime AdjustDateTimeForProvider(this DateTime origin, StorageP
9190
/// Cuts down fractions of <see cref="DateTime"/> value (nanoseconds, milliseconds, etc) to desired value.
9291
/// </summary>
9392
/// <param name="origin"></param>
94-
/// <param name="desiredFractions">Number of fractional points to keep.</param>
93+
/// <param name="desiredFractions">Number of fractional points to keep (from 0 to 7).</param>
9594
/// <param name="requireRound">Indicates whether value should be rounded after cutting off.</param>
9695
/// <returns>Result value.</returns>
9796
/// <exception cref="ArgumentOutOfRangeException">Valid fractions should be between 0 and 7 (7 included).</exception>
98-
public static DateTime AdjustDateTime(this DateTime origin, byte desiredFractions = 7, bool requireRound = false)
97+
public static DateTime AdjustDateTime(this DateTime origin, byte desiredFractions, bool requireRound = false)
9998
{
10099
if (desiredFractions == 7) {
101100
return origin;

Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/OperationsTest.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,14 @@ public void MinusDateTimeTest()
192192
}
193193

194194
[Test]
195-
public void MysqlMinisDateTimeTest()
195+
public void MysqlMinusDateTimeTest()
196196
{
197197
Require.ProviderIs(StorageProvider.MySql);
198198
ExecuteInsideSession(() => {
199-
var firstDateTime = FirstDateTime.AdjustDateTimeForCurrentProvider();
200-
var firstMillisecondDateTime = FirstMillisecondDateTime.AdjustDateTimeForCurrentProvider();
201-
var secondDateTime = SecondDateTime.AdjustDateTimeForCurrentProvider();
202-
var nullableDateTime = NullableDateTime.AdjustDateTimeForCurrentProvider();
199+
var firstDateTime = FirstDateTime.AdjustDateTime(0);
200+
var firstMillisecondDateTime = FirstMillisecondDateTime.AdjustDateTime(0);
201+
var secondDateTime = SecondDateTime.AdjustDateTime(0);
202+
var nullableDateTime = NullableDateTime.AdjustDateTime(0);
203203

204204
RunTest<SingleDateTimeEntity>(c => c.DateTime - secondDateTime == firstDateTime - secondDateTime);
205205
RunTest<SingleDateTimeEntity>(c => c.MillisecondDateTime - secondDateTime == firstMillisecondDateTime - secondDateTime);

Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTime/PartsExtractionTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void MysqlExtractMillisecondTest()
111111
{
112112
Require.ProviderIs(StorageProvider.MySql);
113113
ExecuteInsideSession((s) => {
114-
var firstMillisecondDateTime = FirstMillisecondDateTime.AdjustDateTimeForCurrentProvider();
114+
var firstMillisecondDateTime = FirstMillisecondDateTime.AdjustDateTime(0);
115115
RunTest<SingleDateTimeEntity>(s, c => c.MillisecondDateTime.Millisecond == firstMillisecondDateTime.Millisecond);
116116
RunWrongTest<SingleDateTimeEntity>(s, c => c.MillisecondDateTime.Second == WrongMillisecondDateTime.Millisecond);
117117
});

Orm/Xtensive.Orm.Tests/Storage/DateTimeStoragePrecisionTest.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,14 @@ public void TimeOnlyTest()
9292
private static TimeOnly GetExpectedValue(in TimeOnly baseTimeOnly) => baseTimeOnly.AdjustTimeOnlyForCurrentProvider();
9393

9494
#endif
95-
private static DateTime GetExpectedValue(in DateTime baseDateTime) =>
96-
StorageProviderInfo.Instance.Provider == StorageProvider.MySql
95+
private static DateTime GetExpectedValue(in DateTime baseDateTime)
96+
{
97+
var provider = StorageProviderInfo.Instance.Provider;
98+
return provider == StorageProvider.MySql
9799
? baseDateTime.AdjustDateTime(0, true)
98-
: baseDateTime.AdjustDateTimeForCurrentProvider();
100+
: provider == StorageProvider.Oracle
101+
? baseDateTime.AdjustDateTime(6, true)
102+
: baseDateTime.AdjustDateTimeForCurrentProvider();
103+
}
99104
}
100105
}

0 commit comments

Comments
 (0)