mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Added unit tests for calendar conversion.
This commit is contained in:
@@ -220,25 +220,83 @@ namespace Orchard.Tests.Localization {
|
||||
[Test]
|
||||
[Description("Converting to Gregorian calendar yields a DateTimeParts instance equivalent to the original DateTime.")]
|
||||
public void ConvertToSiteCalendarTest01() {
|
||||
Assert.Inconclusive();
|
||||
var container = TestHelpers.InitializeContainer(null, "GregorianCalendar", TimeZoneInfo.Utc);
|
||||
var dateTimeGregorian = new DateTime(1998, 1, 15, 21, 0, 0, DateTimeKind.Utc);
|
||||
var target = container.Resolve<IDateLocalizationServices>();
|
||||
var result = target.ConvertToSiteCalendar(dateTimeGregorian, TimeSpan.Zero);
|
||||
var expected = new DateTimeParts(1998, 1, 15, 21, 0, 0, 0, DateTimeKind.Utc, TimeSpan.Zero);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("Converting to non-Gregorian calendar yields a DateTimeParts instance with correct values.")]
|
||||
public void ConvertToSiteCalendarTest02() {
|
||||
Assert.Inconclusive();
|
||||
var container = TestHelpers.InitializeContainer(null, "PersianCalendar", TimeZoneInfo.Utc);
|
||||
var dateTimeGregorian = new DateTime(1998, 1, 15, 21, 0, 0, DateTimeKind.Utc);
|
||||
var target = container.Resolve<IDateLocalizationServices>();
|
||||
var result = target.ConvertToSiteCalendar(dateTimeGregorian, TimeSpan.Zero);
|
||||
var expected = new DateTimeParts(1376, 10, 25, 21, 0, 0, 0, DateTimeKind.Utc, TimeSpan.Zero);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("Converting from Gregorian calendar yields a DateTime equivalent to the original DateTimeParts instance.")]
|
||||
public void ConvertFromSiteCalendarTest01() {
|
||||
Assert.Inconclusive();
|
||||
var container = TestHelpers.InitializeContainer(null, "GregorianCalendar", TimeZoneInfo.Utc);
|
||||
var dateTimePartsGregorian = new DateTimeParts(1998, 1, 15, 21, 0, 0, 0, DateTimeKind.Utc, TimeSpan.Zero);
|
||||
var target = container.Resolve<IDateLocalizationServices>();
|
||||
var result = target.ConvertFromSiteCalendar(dateTimePartsGregorian);
|
||||
var expected = new DateTime(1998, 1, 15, 21, 0, 0, DateTimeKind.Utc);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("Converting from non-Gregorian calendar yields a DateTime with correct values.")]
|
||||
public void ConvertFromSiteCalendarTest02() {
|
||||
Assert.Inconclusive();
|
||||
var container = TestHelpers.InitializeContainer(null, "PersianCalendar", TimeZoneInfo.Utc);
|
||||
var dateTimePartsPersian = new DateTimeParts(1376, 10, 25, 21, 0, 0, 0, DateTimeKind.Utc, TimeSpan.Zero);
|
||||
var target = container.Resolve<IDateLocalizationServices>();
|
||||
var result = target.ConvertFromSiteCalendar(dateTimePartsPersian);
|
||||
var expected = new DateTime(1998, 1, 15, 21, 0, 0, DateTimeKind.Utc);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
/*
|
||||
ConvertToLocalizedTimeStringTest
|
||||
Time zone conversion works properly (even though there is no date component).
|
||||
|
||||
ConvertToLocalizedStringTest
|
||||
Non-nullable DateTime.MinValue is converted to NullText.
|
||||
Nullable DateTime.MinValue is converted to date/time string.
|
||||
Nullable null is converted to NullText.
|
||||
Time zone conversion is performed when EnableTimeZoneConversion is true.
|
||||
Time zone conversion is not performed when EnableTimeZoneConversion is false.
|
||||
Calendar conversion is performed when EnableCalendarConversion is true.
|
||||
Calendar conversion is not performed when EnableCalendarConversion is false.
|
||||
Full conversion is performed with default options.
|
||||
|
||||
ConvertFromLocalizedStringCombinedTest
|
||||
Null date/time string is converted to null.
|
||||
Empty date/time string is converted to null.
|
||||
Custom NullText date/time string is converted to null.
|
||||
Time zone conversion is performed when EnableTimeZoneConversion is true.
|
||||
Time zone conversion is not performed when EnableTimeZoneConversion is false.
|
||||
Calendar conversion is performed when EnableCalendarConversion is true.
|
||||
Calendar conversion is not performed when EnableCalendarConversion is false.
|
||||
Full conversion is performed with default options.
|
||||
|
||||
ConvertFromLocalizedStringSeparateTest
|
||||
Null date string and time string is converted to null.
|
||||
Empty date string and time string is converted to null.
|
||||
Custom NullText date string and time string is converted to null.
|
||||
Time zone conversion works properly when date component is omitted.
|
||||
Time zone conversion is never performed when time component is omitted.
|
||||
Time zone conversion is performed when EnableTimeZoneConversion is true.
|
||||
Time zone conversion is not performed when EnableTimeZoneConversion is false.
|
||||
Calendar conversion is never performed when date component is omitted.
|
||||
Calendar conversion is performed when EnableCalendarConversion is true.
|
||||
Calendar conversion is not performed when EnableCalendarConversion is false.
|
||||
Full conversion is performed with default options.
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
@@ -121,7 +121,7 @@ namespace Orchard.Localization.Services {
|
||||
dateValue = ConvertToSiteTimeZone(dateValue);
|
||||
dateValue = new DateTime(DateTime.MinValue.Year, DateTime.MinValue.Month, DateTime.MinValue.Day, dateValue.Hour, dateValue.Minute, dateValue.Second, dateValue.Millisecond, dateValue.Kind);
|
||||
|
||||
offset = CurrentTimeZone.BaseUtcOffset;
|
||||
offset = CurrentTimeZone.GetUtcOffset(date.Value);
|
||||
}
|
||||
|
||||
var parts = DateTimeParts.FromDateTime(dateValue, offset);
|
||||
@@ -155,7 +155,7 @@ namespace Orchard.Localization.Services {
|
||||
|
||||
if (options.EnableTimeZoneConversion) {
|
||||
dateValue = ConvertToSiteTimeZone(dateValue);
|
||||
offset = CurrentTimeZone.BaseUtcOffset;
|
||||
offset = CurrentTimeZone.GetUtcOffset(date.Value);
|
||||
}
|
||||
|
||||
var parts = DateTimeParts.FromDateTime(dateValue, offset);
|
||||
|
@@ -1,7 +1,6 @@
|
||||
TODO:
|
||||
* Test for proper handling of fraction (f) format specifier - suspect it does not work properly in current state
|
||||
* Write unit tests for DefaultDateLocalizationServices
|
||||
* Add support for the different Gregorian calendar types
|
||||
* Write remaining unit tests for DefaultDateLocalizationServices
|
||||
|
||||
BREAKING:
|
||||
* DateTokens "Date.Format:<formatString>" and "Date.Local.Format:<formatString>" only supports custom date/time format strings.
|
Reference in New Issue
Block a user