Пример #1
0
 public void setUTCMonth()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57 GMT')");
     Assert.AreEqual(ToJSDate(new DateTime(2010, 12, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCMonth(11)"));
     Assert.AreEqual(ToJSDate(new DateTime(2011, 2, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCMonth(13)"));
     Assert.AreEqual(ToJSDate(new DateTime(2011, 2, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(ToJSDate(new DateTime(2011, 6, 4, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCMonth(5, 4)"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setUTCMonth(NaN)"));
     Assert.AreEqual(2, TestUtils.Evaluate("x.setUTCMonth.length"));
 }
Пример #2
0
 public void setUTCHours()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57 GMT')");
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 11, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCHours(11)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 10, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCHours(34)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 10, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 5, 4, 3, 2, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCHours(5, 4, 3, 2)"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setUTCHours(NaN)"));
     Assert.AreEqual(4, TestUtils.Evaluate("x.setUTCHours.length"));
 }
Пример #3
0
        public void setUTCMinutes()
        {
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 11, 57, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(11)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 5, 57, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(65)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 5, 4, 3, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(5, 4, 3)"));

            // Negative minutes are before the hour.
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 55, 57, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(-5)"));

            // Fractional minutes are ignored.
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 13, 57, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(13.9)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 55, 57, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(-5.9)"));

            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').setUTCMinutes(NaN)"));
            Assert.AreEqual(3, TestUtils.Evaluate("new Date().setUTCMinutes.length"));
        }
Пример #4
0
        public void parse()
        {
            if (TestUtils.Engine != JSEngine.JScript)
            {
                // ECMAScript format - date-only forms.
                Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05')"));

                // ECMAScript format - date and time forms.
                Assert.AreEqual(45240000, TestUtils.Evaluate("Date.parse('1970-01-01T12:34')"));
                Assert.AreEqual(ToJSDate(new DateTime(1970, 1, 1, 12, 34, 56, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56')"));
                Assert.AreEqual(ToJSDate(new DateTime(1970, 1, 1, 12, 34, 56, 123, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56.123')"));
                Assert.AreEqual(45240000, TestUtils.Evaluate("Date.parse('1970-01-01T12:34Z')"));
                Assert.AreEqual(45296000, TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56Z')"));
                Assert.AreEqual(45296123, TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56.123Z')"));
                Assert.AreEqual(77640000, TestUtils.Evaluate("Date.parse('1970-01-01T12:34-09:00')"));
                Assert.AreEqual(77696000, TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56-09:00')"));
                Assert.AreEqual(77696123, TestUtils.Evaluate("Date.parse('1970-01-01T12:34:56.123-09:00')"));
                Assert.AreEqual(ToJSDate(new DateTime(1970, 1, 2, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('1970-01-01T24:00')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 1, 12, 34, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010T12:34')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 1, 12, 34, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02T12:34')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 56, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56Z')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 56, 12, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56.012Z')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 56, 100, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56.1Z')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 56, 120, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56.12Z')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 12, 34, 56, 123, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56.1234567890123456789Z')"));
                Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 5, 3, 34, 56, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('2010-02-05T12:34:56+09:00')"));
            }

            // Unstructured forms.
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('5 Jan 2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('Jan 5 2010')"));
            if (TestUtils.Engine != JSEngine.JScript)
            {
                Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('1 5 2010')"));
            }
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('Tue Jan 5 2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('Wed Jan 5 2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24)), TestUtils.Evaluate("Date.parse('Sat, 24 Apr 2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24)), TestUtils.Evaluate("Date.parse(' Sat , 24  Apr  2010 ')"));
            Assert.AreEqual(ToJSDate(new DateTime(1989, 12, 31)), TestUtils.Evaluate("Date.parse('31 Dec 89')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('2010 Jan 5')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('1/5/2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('1-5-2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("Date.parse('5 January 2010')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 15, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 15:30:01')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 3, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 3:30:01')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 2, 3, 1)), TestUtils.Evaluate("Date.parse('24 Apr 2010 2:3:1')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 15, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 15:30:01')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 12:30:01')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 2, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 2:30:01 am')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 14, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 2:30:01 PM')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 0, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 12:30:01 AM')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 0, 30, 01)), TestUtils.Evaluate("Date.parse('24 Apr 2010 0:30:01 AM')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 30, 0)), TestUtils.Evaluate("Date.parse('24 Apr 2010 12:30  pm')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 UT')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 GMT')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 4, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 EST')")); // -5
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 3, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 EDT')")); // -4
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 5, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 CST')")); // -6
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 4, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 CDT')")); // -5
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 6, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 MST')")); // -7
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 5, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 MDT')")); // -6
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 7, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 PST')")); // -8
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 6, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 PDT')")); // -7
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 Z')"));  // GMT
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 A')"));   // -1
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 11, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 M')"));  // -12
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 N')"));  // +1
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 11, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 Y')"));  // +12
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 +1100')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 +0030')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 00, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 -30')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 +90')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 GMT+1100')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("Date.parse('24 Apr 2010 23:59:59 GMT+1100 (Zone Name)')"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 3)), TestUtils.Evaluate("Date.parse('31 Feb 2010')"));

            // Invalid ECMAScript dates.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('2010-0-2')"));                          // month out of range
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('2010-2-29')"));                         // day out of range
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T24:01')"));                  // 24:00 is the last valid time.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T24:00:01')"));               // 24:00 is the last valid time.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T24:00:00.001')"));           // 24:00 is the last valid time.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T12:60')"));                  // 00-59 minutes.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T12:34:60')"));               // 00-59 seconds.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T12')"));                     // no minutes.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T5:34')"));                   // hours must be 2 digits.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T05:3')"));                   // minutes must be 2 digits.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T05:34:2')"));                // seconds must be 2 digits.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('1970-01-01T05:34:22.')"));              // milliseconds must have at least one digit.

            // Time-only forms should not be supported (see addendum).
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('T12:34Z')"));

            // Invalid unstructured dates.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('5 Jan')"));                         // no year
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('Jan 2010')"));                      // no day
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('5 2010')"));                        // no day
            if (TestUtils.Engine != JSEngine.JScript)
            {
                Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 15 : 30 : 01')"));  // spaces between time components
            }
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 15')"));                // extraneous number
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 15:30:01.123')"));      // milliseconds not supported
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 hello')"));             // extraneous text
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 13:30:01 AM')"));       // 12 hour clock goes from 0-12.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("Date.parse('24 Apr 2010 13:30:01 PM')"));       // 12 hour clock goes from 0-12.
        }
Пример #5
0
 public void setUTCFullYear()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57 GMT')");
     Assert.AreEqual(ToJSDate(new DateTime(2001, 4, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCFullYear(2001)"));
     Assert.AreEqual(ToJSDate(new DateTime(2001, 4, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(ToJSDate(new DateTime(90, 4, 24, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCFullYear(90)"));
     Assert.AreEqual(ToJSDate(new DateTime(2002, 2, 2, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCFullYear(2002, 1, 2)"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setUTCFullYear(NaN)"));
     Assert.AreEqual(3, TestUtils.Evaluate("x.setUTCFullYear.length"));
 }
Пример #6
0
        public void toJSON()
        {
            // Note: the spec says the milliseconds field is optional.  Firefox and Chrome include it but IE doesn't.
            Assert.AreEqual(TestUtils.Engine == JSEngine.JScript ? "1970-01-01T00:00:00Z" : "1970-01-01T00:00:00.012Z", TestUtils.Evaluate("new Date(12).toJSON()"));
            Assert.AreEqual(TestUtils.Engine == JSEngine.JScript ? "2010-04-24T23:59:57Z" : "2010-04-24T23:59:57.000Z", TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').toJSON()"));
            Assert.AreEqual(Jurassic.Null.Value, TestUtils.Evaluate("new Date(NaN).toJSON()"));
            Assert.AreEqual(1, TestUtils.Evaluate("new Date().toJSON.length"));

            // toJSON is generic.
            Assert.AreEqual("abc", TestUtils.Evaluate("x = {toISOString: function() { return 'abc'; }, f: new Date().toJSON }; x.f()"));
        }
Пример #7
0
 public void toTimeString()
 {
     if (TestUtils.Engine != JSEngine.JScript)
     {
         Assert.AreEqual("23:59:57 " + GetTimezoneString(DateTime.Parse("24 Apr 2010 23:59:57")), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').toTimeString()"));
     }
     Assert.AreEqual("Invalid Date", TestUtils.Evaluate("new Date(NaN).toTimeString()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date().toTimeString.length"));
 }
Пример #8
0
 public void getUTCMonth()
 {
     Assert.AreEqual(3, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').getUTCMonth()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getUTCMonth.length"));
 }
Пример #9
0
 public void getUTCSeconds()
 {
     Assert.AreEqual(57, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').getUTCSeconds()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getUTCSeconds.length"));
 }
Пример #10
0
 public void getMinutes()
 {
     Assert.AreEqual(59, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getMinutes()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getMinutes.length"));
 }
Пример #11
0
 public void getUTCFullYear()
 {
     Assert.AreEqual(2010, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').getUTCFullYear()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getUTCFullYear.length"));
 }
Пример #12
0
 public void getHours()
 {
     Assert.AreEqual(23, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getHours()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getHours.length"));
 }
Пример #13
0
        public void UTC()
        {
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0, 5)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0, 5, 12)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0, 5, 12, 32)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 45, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0, 5, 12, 32, 45)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 45, 123, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 0, 5, 12, 32, 45, 123)"));

            // Test overflow.
            Assert.AreEqual(ToJSDate(new DateTime(2009, 12, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, -1)"));
            Assert.AreEqual(ToJSDate(new DateTime(2011, 1, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 12)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 3, 1)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 11, 23, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 2, 12, -1)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 12, 1, 3, 0, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 2, 12, 0, 63)"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 12, 0, 1, 3, DateTimeKind.Utc)), TestUtils.Evaluate("Date.UTC(2010, 2, 12, 0, 0, 63)"));
        }
Пример #14
0
        public void Constructor()
        {
            // Warm up the engine.
            TestUtils.Evaluate("new Date().valueOf()");

            // new Date() returns the current date - this test assumes the running time is less than 30ms.
            Assert.AreEqual((double)ToJSDate(DateTime.Now), (double)TestUtils.Evaluate("new Date().valueOf()"), 30);

            // new Date(milliseconds)
            Assert.AreEqual(0, TestUtils.Evaluate("new Date(0).valueOf()"));
            Assert.AreEqual(100, TestUtils.Evaluate("new Date(100).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(NaN).valueOf()"));
            Assert.AreEqual(1, TestUtils.Evaluate("new Date(true).valueOf()"));
            Assert.AreEqual(6, TestUtils.Evaluate("new Date(6.6).valueOf()"));
            Assert.AreEqual(-6, TestUtils.Evaluate("new Date(-6.6).valueOf()"));

            // new Date(dateStr)
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("new Date('5 Jan 2010').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24)), TestUtils.Evaluate("new Date('Sat, 24 Apr 2010').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24)), TestUtils.Evaluate("new Date(' Sat , 24  Apr  2010 ').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(1989, 12, 31)), TestUtils.Evaluate("new Date('31 Dec 89').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 15, 30, 01)), TestUtils.Evaluate("new Date('24 Apr 2010 15:30:01').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 3, 30, 01)), TestUtils.Evaluate("new Date('24 Apr 2010 3:30:01').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 2, 3, 1)), TestUtils.Evaluate("new Date('24 Apr 2010 2:3:1').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 UT').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 GMT').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 4, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 EST').valueOf()")); // -5
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 3, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 EDT').valueOf()")); // -4
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 5, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 CST').valueOf()")); // -6
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 4, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 CDT').valueOf()")); // -5
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 6, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 MST').valueOf()")); // -7
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 5, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 MDT').valueOf()")); // -6
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 7, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 PST').valueOf()")); // -8
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 6, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 PDT').valueOf()")); // -7
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 Z').valueOf()"));  // GMT
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 A').valueOf()"));   // -1
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 11, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 M').valueOf()"));  // -12
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 N').valueOf()"));  // +1
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 11, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 Y').valueOf()"));  // +12
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 +1100').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 +0030').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 +30').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 22, 29, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 +90').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 GMT+1100').valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 12, 59, 59, DateTimeKind.Utc)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:59 GMT+1100 (Zone Name)').valueOf()"));

            // new Date(year, month, [day], [hour], [minute], [second], [millisecond])
            // Note: month is 0-11 is javascript but 1-12 in .NET.
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 1)), TestUtils.Evaluate("new Date(2010, 0).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5)), TestUtils.Evaluate("new Date(2010, 0, 5).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 0, 0)), TestUtils.Evaluate("new Date(2010, 0, 5, 12).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 0)), TestUtils.Evaluate("new Date(2010, 0, 5, 12, 32).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 45)), TestUtils.Evaluate("new Date(2010, 0, 5, 12, 32, 45).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 1, 5, 12, 32, 45, 123)), TestUtils.Evaluate("new Date(2010, 0, 5, 12, 32, 45, 123).valueOf()"));

            // Test overflow.
            Assert.AreEqual(ToJSDate(new DateTime(2009, 12, 1)), TestUtils.Evaluate("new Date(2010, -1).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2011, 1, 1)), TestUtils.Evaluate("new Date(2010, 12).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 1)), TestUtils.Evaluate("new Date(2010, 3, 1).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 11, 23, 0, 0)), TestUtils.Evaluate("new Date(2010, 2, 12, -1).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 12, 1, 3, 0)), TestUtils.Evaluate("new Date(2010, 2, 12, 0, 63).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 3, 12, 0, 1, 3)), TestUtils.Evaluate("new Date(2010, 2, 12, 0, 0, 63).valueOf()"));

            if (TestUtils.Engine != JSEngine.JScript)
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
                // Date() returns the current date as a string - this test assumes the running time is less than 1s.
                var str          = (string)TestUtils.Evaluate("Date()");
                var formatString = "ddd MMM dd yyyy HH:mm:ss";
                Assert.IsTrue(str.StartsWith(DateTime.Now.ToString(formatString)) || str.StartsWith(DateTime.Now.AddSeconds(1).ToString(formatString)),
                              string.Format("Expected: {0} Was: {1}", DateTime.Now.ToString(formatString), str));

                // Any arguments provided are ignored.
                str = (string)TestUtils.Evaluate("Date(2009)");
                Assert.IsTrue(str.StartsWith(DateTime.Now.ToString("ddd MMM dd yyyy HH:mm:ss")) ||
                              str.StartsWith(DateTime.Now.AddSeconds(1).ToString("ddd MMM dd yyyy HH:mm:ss")));
            }

            // toString and valueOf.
            if (TestUtils.Engine != JSEngine.JScript)
            {
                Assert.AreEqual("function Date() { [native code] }", TestUtils.Evaluate("Date.toString()"));
            }
            Assert.AreEqual(true, TestUtils.Evaluate("Date.valueOf() === Date"));

            // Undefined dates.
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(undefined, 1, 1).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, 2, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, 2, 1, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, 2, 1, 1, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, 2, 1, 1, 1, undefined).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(NaN).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, NaN).valueOf()"));
            Assert.AreEqual(double.NaN, TestUtils.Evaluate("new Date(2010, 1, 2, NaN).valueOf()"));
            Assert.AreEqual(ToJSDate(new DateTime(2010, 2, 2, 1, 1, 1, 1)), TestUtils.Evaluate("new Date(2010, 1, 2, 1, 1, 1, 1, undefined).valueOf()"));

            // length
            Assert.AreEqual(7, TestUtils.Evaluate("Date.length"));
        }
Пример #15
0
 public void setUTCSeconds()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57 GMT')");
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 11, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCSeconds(11)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 0, 5, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCSeconds(65)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 0, 5, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 25, 0, 0, 4, 3, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCSeconds(4, 3)"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setUTCSeconds(NaN)"));
     Assert.AreEqual(2, TestUtils.Evaluate("x.setUTCSeconds.length"));
 }
Пример #16
0
 public void getYear()
 {
     // Note: JScript purposefully disobeys the spec as part of Y2K readiness.
     Assert.AreEqual(TestUtils.Engine == JSEngine.JScript ? 2010 : 110, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getYear()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').getYear.length"));
 }
Пример #17
0
 public void toGMTString()
 {
     Assert.AreEqual("Sat, 24 Apr 2010 23:59:57 GMT", TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57 GMT').toGMTString()"));
     Assert.AreEqual("Invalid Date", TestUtils.Evaluate("new Date(NaN).toGMTString()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date().toGMTString.length"));
 }
Пример #18
0
 public void setTime()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57')");
     Assert.AreEqual((int)ToJSDate(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("x.setTime(0)"));
     Assert.AreEqual((int)ToJSDate(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setTime(NaN)"));
     Assert.AreEqual(1, TestUtils.Evaluate("x.setTime.length"));
 }
Пример #19
0
 public void toLocaleTimeString()
 {
     Assert.AreEqual(new DateTime(2010, 4, 24, 23, 59, 57).ToLongTimeString(), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').toLocaleTimeString()"));
     Assert.AreEqual("Invalid Date", TestUtils.Evaluate("new Date(NaN).toLocaleTimeString()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date().toLocaleTimeString.length"));
 }
Пример #20
0
 public void setUTCDate()
 {
     TestUtils.Evaluate("var x = new Date('24 Apr 2010 23:59:57 GMT')");
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 11, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCDate(11)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 5, 5, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.setUTCDate(35)"));
     Assert.AreEqual(ToJSDate(new DateTime(2010, 5, 5, 23, 59, 57, DateTimeKind.Utc)), TestUtils.Evaluate("x.valueOf()"));
     Assert.AreEqual(double.NaN, TestUtils.Evaluate("x.setUTCDate(NaN)"));
     Assert.AreEqual(1, TestUtils.Evaluate("x.setUTCDate.length"));
 }
Пример #21
0
 public void valueOf()
 {
     Assert.AreEqual(ToJSDate(new DateTime(2010, 4, 24, 23, 59, 57)), TestUtils.Evaluate("new Date('24 Apr 2010 23:59:57').valueOf()"));
     Assert.AreEqual(0, TestUtils.Evaluate("new Date().valueOf.length"));
 }
Пример #22
0
 public void constructor()
 {
     Assert.AreEqual(true, TestUtils.Evaluate("new Date().constructor === Date"));
 }