123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- namespace Jint.Tests.Runtime;
- public class DateTests
- {
- private readonly Engine _engine;
- public DateTests()
- {
- _engine = new Engine()
- .SetValue("log", new Action<object>(Console.WriteLine))
- .SetValue("assert", new Action<bool>(Assert.True))
- .SetValue("equal", new Action<object, object>(Assert.Equal));
- }
- [Fact]
- public void NaNToString()
- {
- var value = _engine.Evaluate("new Date(NaN).toString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void NaNToDateString()
- {
- var value = _engine.Evaluate("new Date(NaN).toDateString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void NaNToTimeString()
- {
- var value = _engine.Evaluate("new Date(NaN).toTimeString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void NaNToLocaleString()
- {
- var value = _engine.Evaluate("new Date(NaN).toLocaleString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void NaNToLocaleDateString()
- {
- var value = _engine.Evaluate("new Date(NaN).toLocaleDateString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void NaNToLocaleTimeString()
- {
- var value = _engine.Evaluate("new Date(NaN).toLocaleTimeString();").AsString();
- Assert.Equal("Invalid Date", value);
- }
- [Fact]
- public void ToJsonFromNaNObject()
- {
- var result = _engine.Evaluate("JSON.stringify({ date: new Date(NaN) });");
- Assert.Equal("{\"date\":null}", result.ToString());
- }
- [Fact]
- public void ValuePrecisionIsIntegral()
- {
- var number = _engine.Evaluate("new Date() / 1").AsNumber();
- Assert.Equal((long) number, number);
- var dateInstance = _engine.Realm.Intrinsics.Date.Construct(123.456d);
- Assert.Equal((long) dateInstance.DateValue, dateInstance.DateValue);
- }
- [Fact]
- public void ToStringFollowsJavaScriptFormat()
- {
- var engine = new Engine(
- conf =>
- {
- conf.LocalTimeZone(TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));
- });
- Assert.Equal("Tue Feb 01 2022 00:00:00 GMT+0800 (China Standard Time)", engine.Evaluate("new Date(2022,1,1).toString()"));
- Assert.Equal("Tue Feb 01 2022 00:00:00 GMT+0800 (China Standard Time)", engine.Evaluate("new Date(2022,1,1)").ToString());
- }
- [Theory]
- [InlineData("Thu, 30 Jan 2020 08:00:00 PST", 1580400000000)]
- [InlineData("Thursday January 01 1970 00:00:25 UTC", 25000)]
- [InlineData("Wednesday 31 December 1969 18:01:26 MDT", 86000)]
- [InlineData("Wednesday 31 December 1969 19:00:08 EST", 8000)]
- [InlineData("Wednesday 31 December 1969 17:01:59 PDT", 119000)]
- [InlineData("December 31 1969 17:01:14 MST", 74000)]
- [InlineData("January 01 1970 01:46:06 +0145", 66000)]
- [InlineData("December 31 1969 17:00:50 PDT", 50000)]
- public void CanParseLocaleString(string input, long expected)
- {
- Assert.Equal(expected, _engine.Evaluate($"new Date('{input}') * 1").AsNumber());
- }
- }
|