|
@@ -761,65 +761,82 @@ namespace Jint.Tests.Runtime
|
|
|
var result = engine.Execute("Date.UTC(1970,0,1)").GetCompletionValue().AsNumber();
|
|
|
Assert.Equal(0, result);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
[Fact]
|
|
|
public void ShouldUseLocalTimeZoneOverride()
|
|
|
{
|
|
|
- //var all = TimeZoneInfo.GetSystemTimeZones();
|
|
|
- //var skip = new[]
|
|
|
- //{
|
|
|
- // "Dateline Standard Time",
|
|
|
- // "UTC-11",
|
|
|
- // "Hawaiian Standard Time"
|
|
|
- //};
|
|
|
- //foreach (var localTimeZone in all)
|
|
|
- //{
|
|
|
-
|
|
|
- // if (skip.Contains(localTimeZone.Id))
|
|
|
- // {
|
|
|
- // continue;
|
|
|
- // }
|
|
|
-
|
|
|
- // //var localTimeZone = TimeZoneInfo.Local;
|
|
|
-
|
|
|
- // var customHoursOffsetFromLocal = 1;
|
|
|
- // var expectedToStringValue = "Mon Feb 02 1990 15:00:00 GMT";
|
|
|
- // var expectedGetHoursValue = 15d;
|
|
|
- // if (localTimeZone.BaseUtcOffset.Hours > 11)
|
|
|
- // {
|
|
|
- // customHoursOffsetFromLocal = -1;
|
|
|
- // expectedToStringValue = "Mon Feb 02 1990 13:00:00 GMT";
|
|
|
- // expectedGetHoursValue = 13d;
|
|
|
- // }
|
|
|
-
|
|
|
- const string customName = "Custom Time";
|
|
|
- //var customUtcOffset = localTimeZone.BaseUtcOffset.Add(new TimeSpan(customHoursOffsetFromLocal, 0, 0));
|
|
|
- var customTimeZone = TimeZoneInfo.CreateCustomTimeZone(customName, new TimeSpan(0, 11, 0), customName,
|
|
|
- customName, customName, null, false);
|
|
|
-
|
|
|
- //var d = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Unspecified);
|
|
|
-
|
|
|
- //var u = TimeZoneInfo.ConvertTime(d, localTimeZone, TimeZoneInfo.Utc);
|
|
|
- //var l = TimeZoneInfo.ConvertTime(u, customTimeZone);
|
|
|
+ const string customName = "Custom Time";
|
|
|
+ var customTimeZone = TimeZoneInfo.CreateCustomTimeZone(customName, new TimeSpan(0, 11, 0), customName, customName, customName, null, false);
|
|
|
|
|
|
- var engine = new Engine(cfg => cfg.LocalTimeZone(customTimeZone));
|
|
|
+ var engine = new Engine(cfg => cfg.LocalTimeZone(customTimeZone));
|
|
|
|
|
|
+ var epochGetLocalMinutes = engine.Execute("var d = new Date(0); d.getMinutes();").GetCompletionValue().AsNumber();
|
|
|
+ Assert.Equal(11, epochGetLocalMinutes);
|
|
|
|
|
|
- var d1 = engine.Execute("var d = new Date(0); d.getTime();").GetCompletionValue().AsNumber();
|
|
|
- var d2 = engine.Execute("var d = new Date(Date.UTC(1970,0,1)); d.getTime();").GetCompletionValue().AsNumber();
|
|
|
+ var localEpochGetUtcMinutes = engine.Execute("var d = new Date(1970,0,1); d.getUTCMinutes();").GetCompletionValue().AsNumber();
|
|
|
+ Assert.Equal(-11, localEpochGetUtcMinutes);
|
|
|
|
|
|
+ var parseLocalEpoch = engine.Execute("Date.parse('January 1, 1970');").GetCompletionValue().AsNumber();
|
|
|
+ Assert.Equal(-11 * 60 * 1000, parseLocalEpoch);
|
|
|
|
|
|
- var result = engine.Execute("var d1 = new Date(0); var d2 = new Date(Date.UTC(1970,0,1)); d1.getTime() === d2.getTime();").GetCompletionValue().AsBoolean();
|
|
|
- Assert.Equal(true, result);
|
|
|
-
|
|
|
- var toStringResult = engine.Execute("var d = new Date(946684800000); d.toString();").GetCompletionValue().AsString();
|
|
|
- Assert.Equal("Sat Jan 01 2000 00:11:00 GMT", toStringResult);
|
|
|
+ var epochToLocalString = engine.Execute("var d = new Date(0); d.toString();").GetCompletionValue().AsString();
|
|
|
+ Assert.Equal("Thu Jan 01 1970 00:11:00 GMT", epochToLocalString);
|
|
|
+ }
|
|
|
|
|
|
- var getMinutesResult = engine.Execute("var d = new Date(946684800000); d.getMinutes();").GetCompletionValue().AsNumber();
|
|
|
- Assert.Equal(11, getMinutesResult);
|
|
|
+ [Theory]
|
|
|
+ [InlineData("1970")]
|
|
|
+ [InlineData("1970-01")]
|
|
|
+ [InlineData("1970-01-01")]
|
|
|
+ [InlineData("1970-01-01T00:00")]
|
|
|
+ [InlineData("1970-01-01T00:00:00")]
|
|
|
+ [InlineData("1970-01-01T00:00:00.000")]
|
|
|
+ [InlineData("1970Z")]
|
|
|
+ [InlineData("1970-1Z")]
|
|
|
+ [InlineData("1970-1-1Z")]
|
|
|
+ [InlineData("1970-1-1T0:0Z")]
|
|
|
+ [InlineData("1970-1-1T0:0:0Z")]
|
|
|
+ [InlineData("1970-1-1T0:0:0.0Z")]
|
|
|
+ [InlineData("1970/1Z")]
|
|
|
+ [InlineData("1970/1/1Z")]
|
|
|
+ [InlineData("1970/1/1 0:0Z")]
|
|
|
+ [InlineData("1970/1/1 0:0:0Z")]
|
|
|
+ [InlineData("1970/1/1 0:0:0.0Z")]
|
|
|
+ [InlineData("January 1, 1970 GMT")]
|
|
|
+ [InlineData("1970-01-01T00:00:00.000-00:00")]
|
|
|
+ public void ShouldParseAsUtc(string date)
|
|
|
+ {
|
|
|
+ var engine = new Engine().SetValue("d", date);
|
|
|
+ var result = engine.Execute("Date.parse(d);").GetCompletionValue().AsNumber();
|
|
|
|
|
|
- //}
|
|
|
+ Assert.Equal(0, result);
|
|
|
+ }
|
|
|
|
|
|
+ [Theory]
|
|
|
+ [InlineData("1970/01")]
|
|
|
+ [InlineData("1970/01/01")]
|
|
|
+ [InlineData("1970/01/01T00:00")]
|
|
|
+ [InlineData("1970/01/01 00:00")]
|
|
|
+ [InlineData("1970-1")]
|
|
|
+ [InlineData("1970-1-1")]
|
|
|
+ [InlineData("1970-1-1T0:0")]
|
|
|
+ [InlineData("1970-1-1 0:0")]
|
|
|
+ [InlineData("1970/1")]
|
|
|
+ [InlineData("1970/1/1")]
|
|
|
+ [InlineData("1970/1/1T0:0")]
|
|
|
+ [InlineData("1970/1/1 0:0")]
|
|
|
+ [InlineData("01-1970")]
|
|
|
+ [InlineData("01-01-1970")]
|
|
|
+ [InlineData("January 1, 1970")]
|
|
|
+ [InlineData("1970-01-01T00:00:00.000+00:11")]
|
|
|
+ public void ShouldParseAsLocalTime(string date)
|
|
|
+ {
|
|
|
+ const string customName = "Custom Time";
|
|
|
+ var customTimeZone = TimeZoneInfo.CreateCustomTimeZone(customName, new TimeSpan(0, 11, 0), customName, customName, customName, null, false);
|
|
|
+ var engine = new Engine(cfg => cfg.LocalTimeZone(customTimeZone)).SetValue("d", date);
|
|
|
+
|
|
|
+ var result = engine.Execute("Date.parse(d);").GetCompletionValue().AsNumber();
|
|
|
+
|
|
|
+ Assert.Equal(-11 * 60 * 1000, result);
|
|
|
}
|
|
|
|
|
|
}
|