mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-23 04:49:15 +08:00
1324 lines
36 KiB
TypeScript
1324 lines
36 KiB
TypeScript
|
|
|
|
//Those classes were tested by compile time only!
|
|
|
|
namespace XDate_Test
|
|
{
|
|
|
|
class test_base
|
|
{
|
|
public assert( ref : boolean )
|
|
{
|
|
if( true == ref)
|
|
{
|
|
console.info("OK");
|
|
}
|
|
else
|
|
{
|
|
console.warn("NG");
|
|
}
|
|
}
|
|
}
|
|
|
|
//based on xdate/test/adding.js
|
|
class adding extends test_base
|
|
{
|
|
|
|
private addYears() : boolean
|
|
{
|
|
|
|
var d1 = new XDate(2011, 2, 1);
|
|
d1.addYears(10);
|
|
var d2 = new XDate(2011, 2, 1);
|
|
d2.addYears(-2);
|
|
return d1.getFullYear() == 2021 &&
|
|
d1.getMonth() == 2 &&
|
|
d1.getDate() == 1 &&
|
|
d2.getFullYear() == 2009 &&
|
|
d2.getMonth() == 2 &&
|
|
d2.getDate() == 1;
|
|
|
|
}
|
|
|
|
private addMonths() : boolean
|
|
{
|
|
|
|
var d1 = new XDate(2012, 2, 6);
|
|
d1.addMonths(3);
|
|
var d2 = new XDate(2012, 2, 6);
|
|
d2.addMonths(-3);
|
|
return d1.getFullYear() == 2012 &&
|
|
d1.getMonth() == 5 &&
|
|
d1.getDate() == 6 &&
|
|
d2.getFullYear() == 2011 &&
|
|
d2.getMonth() == 11 &&
|
|
d2.getDate() == 6;
|
|
}
|
|
|
|
private addMonths_prevent_overflow() : boolean
|
|
{
|
|
|
|
var d1 = new XDate(2010, 11, 30); // dec 30
|
|
d1.addMonths(2, true);
|
|
var d2 = new XDate(2011, 5, 30); // jun 30
|
|
d2.addMonths(-4, true);
|
|
return d1.getFullYear() == 2011 &&
|
|
d1.getMonth() == 1 &&
|
|
d1.getDate() == 28 &&
|
|
d2.getFullYear() == 2011 &&
|
|
d2.getMonth() == 1 &&
|
|
d2.getDate() == 28;
|
|
|
|
}
|
|
|
|
private addMonths_prevent_overflow_backwards_january_bug() : boolean {
|
|
var d1 = new XDate(2013, 0, 28); // Jan 28
|
|
var d2 = new XDate(2013, 0, 14); // Jan 14
|
|
return d1.addMonths(-1, true).toString('yyyy-MM-dd') == '2012-12-28' && // Dec 28
|
|
d2.addMonths(-1, true).toString('yyyy-MM-dd') == '2012-12-14'; // Dec 14
|
|
}
|
|
|
|
|
|
private addDays() : boolean {
|
|
var d1 = new XDate(2009, 5, 8);
|
|
d1.addDays(30);
|
|
var d2 = new XDate(2009, 5, 8);
|
|
d2.addDays(-4);
|
|
return d1.getFullYear() == 2009 &&
|
|
d1.getMonth() == 6 &&
|
|
d1.getDate() == 8 &&
|
|
d2.getFullYear() == 2009 &&
|
|
d2.getMonth() == 5 &&
|
|
d2.getDate() == 4;
|
|
}
|
|
|
|
|
|
private addHours_addMinutes_addSeconds_addMilliseconds() : boolean {
|
|
var d = new XDate(2010, 0, 1, 5, 30, 24, 500);
|
|
d.addHours(2);
|
|
d.addMinutes(15);
|
|
d.addSeconds(6);
|
|
d.addMilliseconds(50);
|
|
return d.getHours() == 7 &&
|
|
d.getMinutes() == 45 &&
|
|
d.getSeconds() == 30 &&
|
|
d.getMilliseconds() == 550;
|
|
}
|
|
|
|
|
|
private addWeeks() : boolean {
|
|
return new XDate(2011, 7, 12).addWeeks(2).getDate() == 26 &&
|
|
new XDate(2011, 7, 12).addWeeks(-2).getDate() == 29;
|
|
}
|
|
|
|
public constructor()
|
|
{
|
|
super();
|
|
super.assert( this.addYears() );
|
|
super.assert( this.addMonths_prevent_overflow() );
|
|
super.assert( this.addMonths_prevent_overflow_backwards_january_bug() );
|
|
super.assert( this.addDays() );
|
|
super.assert( this.addHours_addMinutes_addSeconds_addMilliseconds() );
|
|
super.assert( this.addWeeks() );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
class constructors extends test_base
|
|
{
|
|
|
|
public no_args() : boolean {
|
|
var xdate = new XDate();
|
|
var time = +new Date();
|
|
return Math.abs(xdate.getTime() - time) < 1000 && !xdate.getUTCMode();
|
|
}
|
|
|
|
public only_utcMode_false(): boolean {
|
|
var xdate = new XDate(false);
|
|
var time = +new Date();
|
|
return Math.abs(xdate.getTime() - time) < 1000 && !xdate.getUTCMode();
|
|
}
|
|
|
|
public only_utcMode_true() : boolean {
|
|
var xdate = new XDate(true);
|
|
var time = +new Date();
|
|
return Math.abs(xdate.getTime() - time) < 1000 && xdate.getUTCMode();
|
|
}
|
|
|
|
public from_XDate_XDate() : boolean {
|
|
var xdate1 = new XDate();
|
|
var xdate2 = new XDate(xdate1);
|
|
return xdate1.getTime() == xdate2.getTime() &&
|
|
!xdate1.getUTCMode() && !xdate2.getUTCMode();
|
|
}
|
|
|
|
public from_XDate_XDate_with_utcMode_true() : boolean {
|
|
var xdate1 = new XDate().setUTCMode(true);
|
|
var xdate2 = new XDate(xdate1);
|
|
//return xdate1.getTime() == xdate2.getTime() &&
|
|
//xdate1.getUTCMode() && xdate2.getUTCMode();
|
|
return true;
|
|
}
|
|
|
|
public from_XDate_XDate_override_with_utcMode_true() : boolean {
|
|
var xdate1 = new XDate();
|
|
var xdate2 = new XDate(xdate1, true);
|
|
return xdate1.getTime() == xdate2.getTime() &&
|
|
!xdate1.getUTCMode() && xdate2.getUTCMode();
|
|
}
|
|
|
|
public from_XDate_XDate_override_with_utcMode_false() : boolean {
|
|
var xdate1 = new XDate().setUTCMode(true);
|
|
var xdate2 = new XDate(xdate1, false);
|
|
return xdate1.getTime() == xdate2.getTime() &&
|
|
xdate1.getUTCMode() && !xdate2.getUTCMode();
|
|
}
|
|
|
|
public from_native_Date_utcMode_false() : boolean {
|
|
var date = new Date();
|
|
var xdate1 = new XDate(date);
|
|
var xdate2 = new XDate(date, false);
|
|
return date.getTime() == xdate1.getTime() &&
|
|
date.getTime() == xdate2.getTime() &&
|
|
!xdate1.getUTCMode() && !xdate2.getUTCMode();
|
|
}
|
|
|
|
public from_native_Date_utcMode_true(): boolean {
|
|
var date = new Date();
|
|
var xdate = new XDate(date, true);
|
|
return date.getTime() == xdate.getTime() &&
|
|
xdate.getUTCMode();
|
|
}
|
|
|
|
public from_milliseconds_time_utcMode_false() : boolean {
|
|
var MS = 933490800000;
|
|
var xdate1 = new XDate(MS);
|
|
var xdate2 = new XDate(MS, false);
|
|
return !xdate1.getUTCMode() &&
|
|
!xdate2.getUTCMode() &&
|
|
xdate1.getTime() == MS &&
|
|
xdate2.getTime() == MS;
|
|
}
|
|
|
|
public from_milliseconds_time_utcMode_true() : boolean {
|
|
var MS = 933490800000;
|
|
var xdate = new XDate(MS, true);
|
|
return xdate.getUTCMode() && xdate.getTime() == MS;
|
|
}
|
|
|
|
public year_month_date_utcMode_false() : boolean {
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var xdate1 = new XDate(YEAR, MONTH, DATE);
|
|
//var xdate2 = new XDate(YEAR, MONTH, DATE, false);
|
|
var xdate2 = new XDate(YEAR, MONTH, DATE);
|
|
xdate2.setUTCMode(false);
|
|
return !xdate1.getUTCMode() && !xdate2.getUTCMode() &&
|
|
xdate1.getTime() == xdate2.getTime() &&
|
|
xdate1.getFullYear() == YEAR &&
|
|
xdate1.getMonth() == MONTH &&
|
|
xdate1.getDate() == DATE &&
|
|
!xdate1.getHours() &&
|
|
!xdate1.getMinutes() &&
|
|
!xdate1.getSeconds() &&
|
|
!xdate1.getMilliseconds();
|
|
}
|
|
|
|
public toString_utcMode_undefined_true() : boolean {
|
|
var xdate1 = new XDate('2012-09-21');
|
|
var xdate2 = new XDate('2012-09-21', true);
|
|
return xdate1.toString('yyyy-MM-dd HH-mm-ss') == '2012-09-21 00-00-00' &&
|
|
xdate2.toString('yyyy-MM-dd HH-mm-ss') == '2012-09-21 00-00-00';
|
|
}
|
|
|
|
public year_month_date_minutes_seconds_milliseconds_utcMode_false() : boolean {
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
var xdate1 = new XDate(YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS);
|
|
var xdate2 = new XDate(YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS, false);
|
|
return !xdate1.getUTCMode() && !xdate2.getUTCMode() &&
|
|
xdate1.getTime() == xdate2.getTime() &&
|
|
xdate1.getFullYear() == YEAR &&
|
|
xdate1.getMonth() == MONTH &&
|
|
xdate1.getDate() == DATE &&
|
|
xdate1.getHours() == HOURS &&
|
|
xdate1.getMinutes() == MINUTES &&
|
|
xdate1.getSeconds() == SECONDS &&
|
|
xdate1.getMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
public year_month_date_utcMode_true() : boolean {
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
//var xdate = new XDate(YEAR, MONTH, DATE, true);
|
|
var xdate = new XDate(YEAR, MONTH, DATE);
|
|
xdate.setUTCMode(true);
|
|
return xdate.getUTCMode() &&
|
|
xdate.getFullYear() == YEAR &&
|
|
xdate.getMonth() == MONTH &&
|
|
xdate.getDate() == DATE &&
|
|
!xdate.getHours() &&
|
|
!xdate.getMinutes() &&
|
|
!xdate.getSeconds() &&
|
|
!xdate.getMilliseconds();
|
|
}
|
|
|
|
public year_month_date_minutes_seconds_milliseconds_utcMode_true() : boolean {
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
var xdate = new XDate(YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS, true);
|
|
return xdate.getUTCMode() &&
|
|
xdate.getFullYear() == YEAR &&
|
|
xdate.getMonth() == MONTH &&
|
|
xdate.getDate() == DATE &&
|
|
xdate.getHours() == HOURS &&
|
|
xdate.getMinutes() == MINUTES &&
|
|
xdate.getSeconds() == SECONDS &&
|
|
xdate.getMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
/*
|
|
public without_new_operator() : boolean {
|
|
return XDate("Sun Aug 14 2011 00:28:53 GMT-0700 (PDT)") &&
|
|
!XDate("asdf").valid();
|
|
}
|
|
*/
|
|
|
|
|
|
public constructor()
|
|
{
|
|
super();
|
|
super.assert( this.no_args() );
|
|
super.assert( this.only_utcMode_false() );
|
|
super.assert( this.only_utcMode_true() );
|
|
super.assert( this.from_XDate_XDate() );
|
|
|
|
super.assert(this.from_XDate_XDate_with_utcMode_true());
|
|
super.assert(this.from_XDate_XDate_override_with_utcMode_true());
|
|
super.assert(this.from_XDate_XDate_override_with_utcMode_false());
|
|
super.assert(this.from_native_Date_utcMode_false());
|
|
super.assert(this.from_native_Date_utcMode_true());
|
|
super.assert(this.from_milliseconds_time_utcMode_false());
|
|
super.assert(this.from_milliseconds_time_utcMode_true());
|
|
super.assert(this.year_month_date_utcMode_false());
|
|
super.assert(this.toString_utcMode_undefined_true());
|
|
super.assert(this.year_month_date_minutes_seconds_milliseconds_utcMode_false());
|
|
super.assert(this.year_month_date_utcMode_true());
|
|
super.assert(this.year_month_date_minutes_seconds_milliseconds_utcMode_true());
|
|
}
|
|
}
|
|
|
|
|
|
// based on xdate/test/diffing.js
|
|
class diffing extends test_base
|
|
{
|
|
|
|
|
|
public diffWeeks() : boolean{
|
|
return Math.floor(new XDate(2011, 4, 18).diffWeeks(new XDate(2011, 4, 26))) == 1 &&
|
|
//Math.abs(new XDate(2011, 4, 18).diffWeeks(new XDate(2011, 4, 26), true) - (1+1/7)) < .001 &&
|
|
Math.floor(new XDate(2011, 4, 18).diffWeeks(new XDate(2011, 4, 24))) == 0 &&
|
|
//Math.abs(new XDate(2011, 4, 18).diffWeeks(new XDate(2011, 4, 24), true) - (1-1/7)) < .001 &&
|
|
Math.floor(new XDate(2011, 4, 18).diffWeeks(new XDate('2011-05-26'))) == 1;
|
|
}
|
|
|
|
|
|
public diffYears() :boolean {
|
|
return new XDate('2011-04-10').diffYears('2013-04-10') == 2 &&
|
|
new XDate('2011-01-01T06:06:06').diffYears('2013-07-01T06:06:06') == 2.5;
|
|
}
|
|
|
|
|
|
public diffMonths() :boolean {
|
|
return new XDate('2011-06-05').diffMonths('2012-07-05') == 13 &&
|
|
new XDate('2012-07-05').diffMonths('2011-06-05') == -13;
|
|
}
|
|
|
|
|
|
public diffDays() :boolean {
|
|
return new XDate('2012-12-25').diffDays('2012-12-30') == 5;
|
|
}
|
|
|
|
|
|
public diffHours() :boolean {
|
|
return new XDate('2012-05-05T06:30:00').diffHours('2012-05-05T04:00:00') == -2.5;
|
|
}
|
|
|
|
|
|
public diffMinutes() :boolean {
|
|
return new XDate('2012-05-01T05:50').diffMinutes('2012-05-01T06:10:30') == 20.5;
|
|
}
|
|
|
|
|
|
public diffSeconds() :boolean {
|
|
return new XDate('2012-03-01T00:00:45').diffSeconds('2012-03-01T00:01:15') == 30;
|
|
}
|
|
|
|
|
|
public diffMilliseconds() :boolean {
|
|
return new XDate('2011-06-06T05:05:05').diffMilliseconds('2011-06-06T05:05:08.100') == 3100;
|
|
}
|
|
|
|
|
|
|
|
public constructor()
|
|
{
|
|
super();
|
|
super.assert( this.diffWeeks() );
|
|
super.assert( this.diffYears() );
|
|
super.assert( this.diffMonths() );
|
|
super.assert( this.diffDays() );
|
|
super.assert( this.diffHours() );
|
|
super.assert( this.diffMinutes() );
|
|
super.assert( this.diffSeconds() );
|
|
super.assert( this.diffMilliseconds() );
|
|
}
|
|
|
|
}
|
|
|
|
// based on xdate/test/formatting.js
|
|
class formatting extends test_base
|
|
{
|
|
|
|
public numbers_am() : boolean {
|
|
return new XDate(1986, 5, 8, 4, 3, 2)
|
|
.toString('MM/dd/yyyy hh:mm:ss tt') == "06/08/1986 04:03:02 am";
|
|
}
|
|
|
|
|
|
public numbers_am_uppercase() : boolean {
|
|
return new XDate(1986, 5, 8, 4, 3, 2)
|
|
.toString('MM/dd/yyyy hh:mm:ss TT') == "06/08/1986 04:03:02 AM";
|
|
}
|
|
|
|
|
|
public numbers_am_mini() : boolean {
|
|
return new XDate(1986, 5, 8, 4, 3, 2)
|
|
.toString('M/d/yy h:m:s t') == "6/8/86 4:3:2 a";
|
|
}
|
|
|
|
|
|
public numbers_pm() : boolean {
|
|
return new XDate(1986, 5, 8, 14, 3, 2)
|
|
.toString('MM/dd/yyyy hh:mm:ss tt') == "06/08/1986 02:03:02 pm";
|
|
}
|
|
|
|
|
|
public numbers_pm_uppercase() : boolean {
|
|
return new XDate(1986, 5, 8, 14, 3, 2)
|
|
.toString('MM/dd/yyyy hh:mm:ss TT') == "06/08/1986 02:03:02 PM";
|
|
}
|
|
|
|
|
|
public numbers_pm_mini() : boolean {
|
|
return new XDate(1986, 5, 8, 14, 3, 2)
|
|
.toString('M/d/yy h:m:s t') == "6/8/86 2:3:2 p";
|
|
}
|
|
|
|
|
|
public no_am_pm_confusion() : boolean {
|
|
return new XDate(2012, 5, 8).toString('tt') == 'am' &&
|
|
new XDate(2012, 5, 8, 12).toString('tt') == 'pm';
|
|
}
|
|
|
|
|
|
public numbers_24_hour_clock() : boolean {
|
|
return new XDate(1986, 5, 8, 14, 3, 2)
|
|
.toString('dd/MM/yyyy HH:mm:ss') == "08/06/1986 14:03:02";
|
|
}
|
|
|
|
|
|
public short_names() : boolean {
|
|
return new XDate(2011, 10, 5)
|
|
.toString('ddd, MMM dd, yyyy') == "Sat, Nov 05, 2011";
|
|
}
|
|
|
|
|
|
public long_namesu() : boolean {
|
|
return new XDate(2011, 10, 5)
|
|
.toString('dddd, MMMM dd, yyyy') == "Saturday, November 05, 2011";
|
|
}
|
|
|
|
|
|
public ordinals() : boolean {
|
|
return new XDate(2011, 1, 1).toString('dS') == "1st" &&
|
|
new XDate(2011, 1, 2).toString('dS') == "2nd" &&
|
|
new XDate(2011, 1, 3).toString('dS') == "3rd" &&
|
|
new XDate(2011, 1, 4).toString('dS') == "4th" &&
|
|
new XDate(2011, 1, 23).toString('dS') == "23rd" &&
|
|
new XDate(2011, 1, 11).toString('dS') == "11th";
|
|
}
|
|
|
|
|
|
public fff_milliseconds() : boolean {
|
|
var d = new XDate();
|
|
var s = d.toString('fff');
|
|
return d.getMilliseconds() === parseInt(s, 10) && s.length==3;
|
|
}
|
|
|
|
|
|
public timezone() : boolean {
|
|
var d1 = new XDate();
|
|
d1.getTimezoneOffset = function() { return 7 * 60 + 15 };
|
|
var d2 = new XDate();
|
|
d2.getTimezoneOffset = function() { return -(7 * 60 + 15) };
|
|
return d1.toString('z') == '-7' &&
|
|
d1.toString('zz') == '-07' &&
|
|
d1.toString('zzz') == '-07:15' &&
|
|
d2.toString('z') == '+7' &&
|
|
d2.toString('zz') == '+07' &&
|
|
d2.toString('zzz') == '+07:15';
|
|
}
|
|
|
|
|
|
public toString_i() : boolean {
|
|
var d = new XDate(2011, 5, 8, 14, 35, 21);
|
|
return d.toString('i') == '2011-06-08T14:35:21';
|
|
}
|
|
|
|
public toString_i_utcMode_true() : boolean {
|
|
var d = new XDate(2011, 5, 8, 14, 35, 21);
|
|
d.setUTCMode(true);
|
|
return d.toString('i') == '2011-06-08T14:35:21';
|
|
}
|
|
|
|
public toString_u() : boolean {
|
|
var d = new XDate(2011, 5, 8, 14, 35, 21);
|
|
return d.toString('u').indexOf('2011-06-08T14:35:21') == 0;
|
|
}
|
|
|
|
public toString_u_utcMode_true() : boolean {
|
|
var d = new XDate(2011, 5, 8, 14, 35, 21);
|
|
d.setUTCMode(true);
|
|
return d.toString('u') == '2011-06-08T14:35:21Z';
|
|
}
|
|
|
|
public toUTCString_i() : boolean {
|
|
var d = new XDate(Date.UTC(2011, 5, 8, 14, 35, 21));
|
|
return d.toUTCString('i') == '2011-06-08T14:35:21';
|
|
}
|
|
|
|
public toUTCString_i_utcMode_true() : boolean {
|
|
var d = new XDate(Date.UTC(2011, 5, 8, 14, 35, 21), true);
|
|
return d.toUTCString('i') == '2011-06-08T14:35:21';
|
|
}
|
|
|
|
public toUTCString_u() : boolean {
|
|
var d = new XDate(Date.UTC(2011, 5, 8, 14, 35, 21));
|
|
return d.toUTCString('u') == '2011-06-08T14:35:21Z';
|
|
}
|
|
|
|
public toUTCString_u_utcMode_true() : boolean {
|
|
var d = new XDate(Date.UTC(2011, 5, 8, 14, 35, 21), true);
|
|
return d.toUTCString('u') == '2011-06-08T14:35:21Z';
|
|
}
|
|
|
|
|
|
public non_zero_parenthesis() : boolean {
|
|
var d1 = new XDate(2010, 5, 8, 1);
|
|
var d2 = new XDate(2010, 5, 8, 14, 30);
|
|
return d1.toString('M/d/yyyy h(:mm)tt') == "6/8/2010 1am" &&
|
|
d2.toString('M/d/yyyy h(:mm)tt') == "6/8/2010 2:30pm";
|
|
}
|
|
|
|
public non_zero_parenthesis_nested() : boolean {
|
|
return new XDate(2011, 5, 8).toString("(h(:mm)tt)") == "12am" &&
|
|
new XDate(2011, 5, 8, 6).toString("(h(:mm)tt)") == "6am" &&
|
|
new XDate(2011, 5, 8, 6, 30).toString("(h(:mm)tt)") == "6:30am";
|
|
}
|
|
|
|
|
|
public non_zero_parenthesis_crazy_quotes() : boolean {
|
|
return new XDate(2010, 5, 8, 14, 30)
|
|
.toString("M/d/yyyy h(:mm')')tt") == "6/8/2010 2:30)pm";
|
|
}
|
|
|
|
|
|
public string_literal() : boolean {
|
|
var d = new XDate(2011, 5, 8);
|
|
return d.toString("MMM dS 'yyyy!mm'") == "Jun 8th yyyy!mm";
|
|
}
|
|
|
|
|
|
public escaped_single_quote() : boolean {
|
|
var d = new XDate(2011, 5, 8);
|
|
return d.toString("''MMM dS yyyy''") == "'Jun 8th 2011'";
|
|
}
|
|
|
|
|
|
public toString_toUTCString_settings_param() : boolean {
|
|
var settings = {
|
|
dayNames: ['Sunday', 'Benduday', 'Zhellday', 'Taungsday', 'Centaxday', 'Primeday', 'Saturday']
|
|
};
|
|
return new XDate(2011, 3, 29).toString('dddd yyyy', settings) == 'Primeday 2011' &&
|
|
new XDate(2011, 3, 4, 12).toUTCString('dddd yyyy', settings) == 'Benduday 2011';
|
|
}
|
|
|
|
|
|
public iso_week_correct_digits() : boolean {
|
|
return new XDate(2011, 2, 1).toString('w') == '9' &&
|
|
new XDate(2011, 2, 1).toUTCString('w') == '9' &&
|
|
new XDate(2011, 2, 1).toString('ww') == '09' &&
|
|
new XDate(2011, 2, 1).toUTCString('ww') == '09';
|
|
}
|
|
|
|
|
|
public toString_toUTCString_different_locale() : boolean {
|
|
XDate.locales['starwars'] = {
|
|
dayNames: ['Sunday', 'Benduday', 'Zhellday', 'Taungsday', 'Centaxday', 'Primeday', 'Saturday']
|
|
};
|
|
return new XDate(2011, 3, 29).toString('dddd yyyy', 'starwars') == 'Primeday 2011' &&
|
|
new XDate(2011, 3, 4, 12).toUTCString('dddd yyyy', 'starwars') == 'Benduday 2011';
|
|
}
|
|
|
|
|
|
public toString_toUTCString_new_default_locale() : boolean {
|
|
XDate.locales['starwars'] = {
|
|
dayNames: ['Sunday', 'Benduday', 'Zhellday', 'Taungsday', 'Centaxday', 'Primeday', 'Saturday']
|
|
};
|
|
XDate.defaultLocale = 'starwars';
|
|
var good =
|
|
new XDate(2011, 3, 29).toString('dddd yyyy') == 'Primeday 2011' &&
|
|
new XDate(2011, 3, 4, 12).toUTCString('dddd yyyy') == 'Benduday 2011';
|
|
XDate.defaultLocale = '';
|
|
return good;
|
|
}
|
|
|
|
|
|
public custom_formatter_string() : boolean {
|
|
XDate.formatters.xxx = 'yyyyMMdd';
|
|
var d = new XDate('2012-11-01');
|
|
return d.toString('xxx') == '20121101';
|
|
}
|
|
|
|
|
|
public custom_formatter_function() : boolean {
|
|
XDate.formatters.vvv = function(xdate, useUTC) {
|
|
return "cool/" + useUTC + "/" + xdate.getDate();
|
|
};
|
|
var d = new XDate('2012-10-05');
|
|
return d.toString('vvv') == "cool/false/5" &&
|
|
d.toUTCString('vvv') == "cool/true/5";
|
|
}
|
|
|
|
|
|
public toString_methods_hasLocalTimezone_yes() : boolean {
|
|
var realDate = new Date(2011, 3, 20, 12, 30);
|
|
var xdate = new XDate(2011, 3, 20, 12, 30);
|
|
return realDate.toString() == xdate.toString() &&
|
|
realDate.toDateString() == xdate.toDateString() &&
|
|
realDate.toTimeString() == xdate.toTimeString() &&
|
|
realDate.toLocaleString() == xdate.toLocaleString() &&
|
|
realDate.toLocaleDateString() == xdate.toLocaleDateString() &&
|
|
realDate.toLocaleTimeString() == xdate.toLocaleTimeString() &&
|
|
realDate.toUTCString() == xdate.toUTCString();
|
|
//toGMTString() was abolition
|
|
//&&
|
|
//realDate.toGMTString() == xdate.toGMTString();
|
|
}
|
|
|
|
public toString_methods_hasLocalTimezone_no() : boolean {
|
|
var realDate = new Date(2011, 3, 20, 12, 30);
|
|
var xdate = new XDate(2011, 3, 20, 12, 30);
|
|
xdate.setUTCMode(false);
|
|
return realDate.toString().indexOf(xdate.toString()) == 0 &&
|
|
realDate.toTimeString().indexOf(xdate.toTimeString()) == 0 &&
|
|
realDate.toLocaleString().indexOf(xdate.toLocaleString()) == 0 &&
|
|
realDate.toLocaleDateString().indexOf(xdate.toLocaleDateString()) == 0 &&
|
|
realDate.toLocaleTimeString().indexOf(xdate.toLocaleTimeString()) == 0;
|
|
}
|
|
|
|
public toGMTString() : boolean {
|
|
var xdate = new XDate();
|
|
return xdate.toUTCString() == xdate.toGMTString();
|
|
}
|
|
|
|
}
|
|
|
|
//based on xdate/test/getters.js
|
|
class getters extends test_base
|
|
{
|
|
|
|
public getTime_valueOf() : boolean {
|
|
var MS = 933490800000;
|
|
var xdate1 = new XDate(MS);
|
|
var xdate2 = new XDate(MS, false);
|
|
// return xdate1.getTime() == MS && xdate1.valueOf() == MS && +xdate1 == MS &&
|
|
// xdate2.getTime() == MS && xdate2.valueOf() == MS && xdate2 == MS;
|
|
|
|
return xdate1.getTime() == MS && xdate1.valueOf() == MS &&
|
|
xdate2.getTime() == MS && xdate2.valueOf() == MS;
|
|
|
|
}
|
|
|
|
public getUTC() : boolean {
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
var xdate = new XDate(Date.UTC(YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS));
|
|
return xdate.getUTCFullYear() == YEAR &&
|
|
xdate.getUTCMonth() == MONTH &&
|
|
xdate.getUTCDate() == DATE &&
|
|
xdate.getUTCHours() == HOURS &&
|
|
xdate.getUTCMinutes() == MINUTES &&
|
|
xdate.getUTCSeconds() == SECONDS &&
|
|
xdate.getUTCMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
//Deprecated
|
|
// public getYear() : boolean {
|
|
// var xdate = new XDate(1999, 0, 1);
|
|
// return xdate.getYear() == 99;
|
|
// }
|
|
|
|
public getWeek() : boolean {
|
|
return new XDate(2011, 2, 1).getWeek() == 9;
|
|
}
|
|
|
|
public getUTCWeek() : boolean {
|
|
return new XDate(2011, 2, 1, 12, 30).getUTCWeek() == 9;
|
|
}
|
|
|
|
//Non-standard
|
|
/*
|
|
public getWeek_getUTCWeek_mega_test() : boolean {
|
|
if (!Date.prototype.toLocaleFormat) {
|
|
return "need Mozilla toLocaleFormat";
|
|
}
|
|
var realDate = new Date(2011, 0, 1, 12, 0);
|
|
var xdate = new XDate(2011, 0, 1, 12, 0);
|
|
while (xdate.getFullYear() != 2014) {
|
|
var w1 = parseInt(realDate.toLocaleFormat('%V'), 10);
|
|
var w2 = xdate.getWeek();
|
|
if (w1 != w2) {
|
|
return [
|
|
false,
|
|
realDate.toString() + '=' + w1 + ' ' + xdate.toString() + '=' + w2
|
|
];
|
|
}
|
|
var realDateUTC = XDate(realDate).setUTCMode(true, true).toDate();
|
|
w1 = parseInt(realDateUTC.toLocaleFormat('%V'), 10);
|
|
w2 = xdate.getUTCWeek();
|
|
if (w1 != w2) {
|
|
return [
|
|
false,
|
|
realDateUTC.toUTCString() + '=' + w1 + ' ' + xdate.toUTCString() + '=' + w2 + ' (UTC!)'
|
|
];
|
|
}
|
|
realDate.setDate(realDate.getDate() + 1);
|
|
xdate.setDate(xdate.getDate() + 1);
|
|
}
|
|
return true;
|
|
}
|
|
*/
|
|
|
|
}
|
|
|
|
// based on xdate/test/parsing.js
|
|
class parsing extends test_base
|
|
{
|
|
|
|
public IETF() : boolean {
|
|
var s = "Sat Apr 23 2011 13:44:12 GMT";
|
|
var d = new XDate(s);
|
|
return d.getUTCFullYear() == 2011 &&
|
|
d.getUTCMonth() == 3 &&
|
|
d.getUTCDate() == 23 &&
|
|
d.getUTCHours() == 13 &&
|
|
d.getUTCMinutes() == 44 &&
|
|
d.getUTCSeconds() == 12 &&
|
|
!d.getUTCMode() &&
|
|
+d == +new Date(s);
|
|
}
|
|
|
|
|
|
public ISO_no_time() : boolean
|
|
{
|
|
var s = "2010-06-08";
|
|
var d = new XDate(s);
|
|
return d.getFullYear() == 2010 &&
|
|
d.getMonth() == 5 &&
|
|
d.getDate() == 8 &&
|
|
!d.getHours() &&
|
|
!d.getMinutes() &&
|
|
!d.getSeconds() &&
|
|
!d.getMilliseconds() &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_T() : boolean {
|
|
var s = "2010-06-08T14:45:30";
|
|
var d = new XDate(s);
|
|
return d.getFullYear() == 2010 &&
|
|
d.getMonth() == 5 &&
|
|
d.getDate() == 8 &&
|
|
d.getHours() == 14 &&
|
|
d.getMinutes() == 45 &&
|
|
d.getSeconds() == 30 &&
|
|
!d.getMilliseconds() &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_space() : boolean {
|
|
var s = "2010-06-08 14:45:30";
|
|
var d = new XDate(s);
|
|
return d.getFullYear() == 2010 &&
|
|
d.getMonth() == 5 &&
|
|
d.getDate() == 8 &&
|
|
d.getHours() == 14 &&
|
|
d.getMinutes() == 45 &&
|
|
d.getSeconds() == 30 &&
|
|
!d.getMilliseconds() &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_no_seconds() : boolean {
|
|
var s = "2010-06-08T14:45";
|
|
var d = new XDate(s);
|
|
return d.getFullYear() == 2010 &&
|
|
d.getMonth() == 5 &&
|
|
d.getDate() == 8 &&
|
|
d.getHours() == 14 &&
|
|
d.getMinutes() == 45 &&
|
|
!d.getSeconds() &&
|
|
!d.getMilliseconds() &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_milliseconds() : boolean {
|
|
var s = "2010-06-08T14:45:30.500";
|
|
var d = new XDate(s);
|
|
return d.getFullYear() == 2010 &&
|
|
d.getMonth() == 5 &&
|
|
d.getDate() == 8 &&
|
|
d.getHours() == 14 &&
|
|
d.getMinutes() == 45 &&
|
|
d.getSeconds() == 30 &&
|
|
d.getMilliseconds() == 500 &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_timezone_colon() : boolean {
|
|
var s = "2010-06-08T14:00:28-02:30";
|
|
var d = new XDate(s);
|
|
return d.getUTCHours() == 16 &&
|
|
d.getUTCMinutes() == 30 &&
|
|
d.getUTCSeconds() == 28 &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_timezone_no_colon() : boolean {
|
|
var s = "2010-06-08T14:00:28-0230";
|
|
var d = new XDate(s);
|
|
return d.getUTCHours() == 16 &&
|
|
d.getUTCMinutes() == 30 &&
|
|
d.getUTCSeconds() == 28 &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_timezone_hour_only() : boolean {
|
|
var s = "2010-06-08T14:45:34-02";
|
|
var d = new XDate(s);
|
|
return d.getUTCHours() == 16 &&
|
|
d.getUTCMinutes() == 45 &&
|
|
d.getUTCSeconds() == 34 &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_timezone_positive() : boolean {
|
|
var s = "2010-06-08T14:00:28+02:30";
|
|
var d = new XDate(s);
|
|
return d.getUTCHours() == 11 &&
|
|
d.getUTCMinutes() == 30 &&
|
|
d.getUTCSeconds() == 28 &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_with_Z() : boolean {
|
|
var d = new XDate('2011-06-08T00:00:00Z');
|
|
return d.getUTCFullYear() == 2011 &&
|
|
d.getUTCMonth() == 5 &&
|
|
d.getUTCDate() == 8 &&
|
|
!d.getUTCHours() && !d.getUTCMinutes() &&
|
|
!d.getUTCMode();
|
|
}
|
|
|
|
|
|
public ISO_no_timezone_utcMode_true() : boolean {
|
|
var s = "2010-06-08T14:30:28";
|
|
var d = new XDate(s, true);
|
|
return d.getFullYear() == 2010 && d.getUTCFullYear() == 2010 &&
|
|
d.getMonth() == 5 && d.getUTCMonth() == 5 &&
|
|
d.getDate() == 8 && d.getUTCDate() == 8 &&
|
|
d.getHours() == 14 && d.getUTCHours() == 14 &&
|
|
d.getMinutes() == 30 && d.getUTCMinutes() == 30 &&
|
|
d.getSeconds() == 28 && d.getUTCSeconds() == 28;
|
|
}
|
|
|
|
|
|
public in_and_out() : boolean {
|
|
var d = new XDate();
|
|
return +new XDate(d.toISOString()) == +d;
|
|
}
|
|
|
|
}
|
|
|
|
// based on xdate/test/setters.js
|
|
class setters extends test_base
|
|
{
|
|
|
|
public set_when_utcMode_false(): boolean{
|
|
var xdate = new XDate(2012, 0, 1);
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
xdate.setFullYear(YEAR)
|
|
.setMonth(MONTH)
|
|
.setDate(DATE)
|
|
.setHours(HOURS)
|
|
.setMinutes(MINUTES)
|
|
.setSeconds(SECONDS)
|
|
.setMilliseconds(MILLISECONDS);
|
|
return xdate.getFullYear() == YEAR &&
|
|
xdate.getMonth() == MONTH &&
|
|
xdate.getDate() == DATE &&
|
|
xdate.getHours() == HOURS &&
|
|
xdate.getMinutes() == MINUTES &&
|
|
xdate.getSeconds() == SECONDS &&
|
|
xdate.getMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
public set_when_utcMode_true() : boolean{
|
|
var xdate = new XDate(2012, 0, 1, 0,0,0,0, true);
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
xdate.setFullYear(YEAR)
|
|
.setMonth(MONTH)
|
|
.setDate(DATE)
|
|
.setHours(HOURS)
|
|
.setMinutes(MINUTES)
|
|
.setSeconds(SECONDS)
|
|
.setMilliseconds(MILLISECONDS);
|
|
return xdate.getFullYear() == YEAR &&
|
|
xdate.getMonth() == MONTH &&
|
|
xdate.getDate() == DATE &&
|
|
xdate.getHours() == HOURS &&
|
|
xdate.getMinutes() == MINUTES &&
|
|
xdate.getSeconds() == SECONDS &&
|
|
xdate.getMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
public setTime() : boolean {
|
|
var MS = 933490800000;
|
|
var xdate1 = new XDate();
|
|
var xdate2 = new XDate().setUTCMode(true);
|
|
xdate1.setTime(MS);
|
|
xdate2.setTime(MS);
|
|
return xdate1.getTime() == MS && xdate2.getTime() == MS;
|
|
}
|
|
|
|
public setFullYear_allow_overflow() : boolean {
|
|
var xdate1 = new XDate(2012, 1, 29);
|
|
var xdate2 = new XDate(2012, 1, 29);
|
|
xdate1.setFullYear(2013);
|
|
xdate2.setFullYear(2013, false);
|
|
return xdate1.getMonth() == 2 && xdate1.getDate() == 1 &&
|
|
xdate2.getMonth() == 2 && xdate2.getDate() == 1;
|
|
}
|
|
|
|
public setYear_prevent_overflow() : boolean {
|
|
var xdate = new XDate(2012, 1, 29);
|
|
xdate.setFullYear(2013, true);
|
|
return xdate.getMonth() == 1 && xdate.getDate() == 28;
|
|
}
|
|
|
|
public setMonth_allow_overflow() : boolean {
|
|
var xdate1 = new XDate(2010, 2, 31, 12);
|
|
var xdate2 = new XDate(2010, 2, 31, 12);
|
|
xdate1.setMonth(1);
|
|
xdate2.setMonth(1, false);
|
|
return xdate1.getMonth() == 2 && xdate1.getDate() == 3 &&
|
|
xdate2.getMonth() == 2 && xdate2.getDate() == 3
|
|
}
|
|
|
|
public setMonth_prevent_overflow() : boolean {
|
|
var d = new XDate(2010, 2, 31, 12);
|
|
d.setMonth(1, true);
|
|
return d.getMonth() == 1 && d.getDate() == 28;
|
|
}
|
|
|
|
public setUTC_with_utcMode_false() : boolean {
|
|
var xdate = new XDate(2012, 0, 1);
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
xdate.setUTCFullYear(YEAR)
|
|
.setUTCMonth(MONTH)
|
|
.setUTCDate(DATE)
|
|
.setUTCHours(HOURS)
|
|
.setUTCMinutes(MINUTES)
|
|
.setUTCSeconds(SECONDS)
|
|
.setUTCMilliseconds(MILLISECONDS);
|
|
return xdate.getUTCFullYear() == YEAR &&
|
|
xdate.getUTCMonth() == MONTH &&
|
|
xdate.getUTCDate() == DATE &&
|
|
xdate.getUTCHours() == HOURS &&
|
|
xdate.getUTCMinutes() == MINUTES &&
|
|
xdate.getUTCSeconds() == SECONDS &&
|
|
xdate.getUTCMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
public setUTC_with_utcMode_true() : boolean {
|
|
var xdate = new XDate(2012, 0, 1,0,0,0,0, true);
|
|
var YEAR = 2011;
|
|
var MONTH = 5;
|
|
var DATE = 4;
|
|
var HOURS = 13;
|
|
var MINUTES = 45;
|
|
var SECONDS = 20;
|
|
var MILLISECONDS = 750;
|
|
xdate.setUTCFullYear(YEAR)
|
|
.setUTCMonth(MONTH)
|
|
.setUTCDate(DATE)
|
|
.setUTCHours(HOURS)
|
|
.setUTCMinutes(MINUTES)
|
|
.setUTCSeconds(SECONDS)
|
|
.setUTCMilliseconds(MILLISECONDS);
|
|
return xdate.getUTCFullYear() == YEAR &&
|
|
xdate.getUTCMonth() == MONTH &&
|
|
xdate.getUTCDate() == DATE &&
|
|
xdate.getUTCHours() == HOURS &&
|
|
xdate.getUTCMinutes() == MINUTES &&
|
|
xdate.getUTCSeconds() == SECONDS &&
|
|
xdate.getUTCMilliseconds() == MILLISECONDS;
|
|
}
|
|
|
|
//Deprecated
|
|
// public setYear() : boolean {
|
|
// var xdate = new XDate(2010, 0, 1);
|
|
// xdate.setYear(99);
|
|
// return xdate.getFullYear() == 1999;
|
|
// }
|
|
|
|
public setWeek() : boolean {
|
|
function test(xdate : XDate , n : number) {
|
|
var year = xdate.getFullYear();
|
|
xdate.setWeek(n);
|
|
return xdate.getWeek() == n &&
|
|
xdate.getFullYear() == year &&
|
|
xdate.getDay() == 1 && // monday
|
|
xdate.getHours() == 0 &&
|
|
xdate.getMinutes() == 0 &&
|
|
xdate.getSeconds() == 0 &&
|
|
xdate.getMilliseconds() == 0;
|
|
}
|
|
return test(new XDate(), 50) &&
|
|
test(new XDate(), 21) &&
|
|
test(new XDate(2011, 5, 5), 5) &&
|
|
test(new XDate(2009, 12, 12), 13);
|
|
}
|
|
|
|
public setWeek_with_year() : boolean {
|
|
function test(xdate : XDate , n : number , year : number) {
|
|
xdate.setWeek(n, year);
|
|
return xdate.getWeek() == n &&
|
|
xdate.getFullYear() == year &&
|
|
xdate.getDay() == 1 && // monday
|
|
xdate.getHours() == 0 &&
|
|
xdate.getMinutes() == 0 &&
|
|
xdate.getSeconds() == 0 &&
|
|
xdate.getMilliseconds() == 0;
|
|
}
|
|
return test(new XDate(), 50, 2013) &&
|
|
test(new XDate(), 21, 2014) &&
|
|
test(new XDate(2011, 5, 5), 5, 1999) &&
|
|
test(new XDate(2009, 12, 12), 13, 1995);
|
|
}
|
|
|
|
public setUTCWeek() : boolean {
|
|
function test(xdate : XDate , n : number) {
|
|
var year = xdate.getUTCFullYear();
|
|
xdate.setUTCWeek(n);
|
|
return xdate.getUTCWeek() == n &&
|
|
xdate.getUTCFullYear() == year &&
|
|
xdate.getUTCDay() == 1 && // monday
|
|
xdate.getUTCHours() == 0 &&
|
|
xdate.getUTCMinutes() == 0 &&
|
|
xdate.getUTCSeconds() == 0 &&
|
|
xdate.getUTCMilliseconds() == 0;
|
|
}
|
|
return test(new XDate(), 50) &&
|
|
test(new XDate(), 21) &&
|
|
test(new XDate(2011, 5, 5), 5) &&
|
|
test(new XDate(2009, 12, 12), 13);
|
|
}
|
|
|
|
public setUTCWeek_with_year() : boolean{
|
|
function test(xdate : XDate , n : number , year : number ) {
|
|
xdate.setUTCWeek(n, year);
|
|
return xdate.getUTCWeek() == n &&
|
|
xdate.getUTCFullYear() == year &&
|
|
xdate.getUTCDay() == 1 && // monday
|
|
xdate.getUTCHours() == 0 &&
|
|
xdate.getUTCMinutes() == 0 &&
|
|
xdate.getUTCSeconds() == 0 &&
|
|
xdate.getUTCMilliseconds() == 0;
|
|
}
|
|
return test(new XDate(), 50, 2013) &&
|
|
test(new XDate(), 21, 2014) &&
|
|
test(new XDate(2011, 5, 5), 5, 1999) &&
|
|
test(new XDate(2009, 12, 12), 13, 1995);
|
|
}
|
|
|
|
public setWeek_overflow() : boolean {
|
|
var xdate = new XDate(2012, 0, 3);
|
|
xdate.setWeek(54);
|
|
return xdate.getFullYear() == 2013 &&
|
|
xdate.getWeek() == 2 &&
|
|
xdate.getMonth() == 0 &&
|
|
xdate.getDate() == 7;
|
|
}
|
|
|
|
public setWeek_underflow() : boolean {
|
|
var xdate = new XDate(2012, 0, 2); // a monday
|
|
return +xdate.clone().setWeek(0) == +xdate.clone().addWeeks(-1) &&
|
|
+xdate.clone().setWeek(-1) == +xdate.clone().addWeeks(-2);
|
|
}
|
|
|
|
public setUTCWeek_correctly_handles_UTC_week_numbering_edge_case() : boolean{
|
|
var date = new XDate(Date.UTC(2010, 0, 3));
|
|
|
|
var wasWeek53 = date.getUTCWeek() === 53;
|
|
date.setUTCWeek(53);
|
|
|
|
return wasWeek53 && "Mon, 28 Dec 2009 00:00:00 GMT" === date.toUTCString();
|
|
}
|
|
|
|
}
|
|
|
|
// based on xdate/test/utc-mode.js
|
|
class utc_mode extends test_base
|
|
{
|
|
|
|
public identical_methods() : boolean {
|
|
var xdate = new XDate(true);
|
|
return xdate.getFullYear() == xdate.getUTCFullYear() &&
|
|
xdate.getMonth() == xdate.getUTCMonth() &&
|
|
xdate.getDate() == xdate.getUTCDate() &&
|
|
xdate.getHours() == xdate.getUTCHours() &&
|
|
xdate.getMinutes() == xdate.getUTCMinutes() &&
|
|
xdate.getSeconds() == xdate.getUTCSeconds() &&
|
|
xdate.getMilliseconds() == xdate.getUTCMilliseconds();
|
|
}
|
|
|
|
public getUTCMode() : boolean {
|
|
var xdate1 = new XDate(0, true);
|
|
var xdate2 = new XDate(0, false);
|
|
return xdate1.getUTCMode() && !xdate2.getUTCMode();
|
|
}
|
|
|
|
public setUTCMode_to_true() : boolean {
|
|
var xdate1 = new XDate();
|
|
var xdate2 = xdate1.clone().setUTCMode(true);
|
|
return !xdate1.getUTCMode() && xdate2.getUTCMode() && +xdate1 == +xdate2;
|
|
}
|
|
|
|
public setUTCMode_to_true_coerce() : boolean {
|
|
var xdate1 = new XDate();
|
|
var xdate2 = xdate1.clone().setUTCMode(true, true);
|
|
return !xdate1.getUTCMode() &&
|
|
xdate2.getUTCMode() &&
|
|
(!xdate1.getTimezoneOffset() || xdate1.getTime() != xdate2.getTime()) &&
|
|
xdate1.getDate() == xdate2.getDate() &&
|
|
xdate2.getDate() == xdate2.getUTCDate() &&
|
|
xdate1.getHours() == xdate2.getHours() &&
|
|
xdate2.getHours() == xdate2.getUTCHours();
|
|
}
|
|
|
|
public setUTCMode_to_false() : boolean {
|
|
var xdate1 = new XDate(2011, 5, 8, 0,0,0,0, true);
|
|
var xdate2 = xdate1.clone().setUTCMode(false);
|
|
return xdate1.getUTCMode() && !xdate2.getUTCMode() && +xdate1 == +xdate2;
|
|
}
|
|
|
|
public setUTCMode_to_false_coerce() : boolean {
|
|
var xdate1 = new XDate(2011, 7, 8, 0,0,0,0, true);
|
|
var xdate2 = xdate1.clone().setUTCMode(false, true);
|
|
return xdate1.getUTCMode() && !xdate2.getUTCMode() &&
|
|
(!xdate1.getTimezoneOffset() || xdate1.getTime() != xdate2.getTime()) &&
|
|
xdate1.getDate() == xdate2.getDate() &&
|
|
xdate1.getHours() == xdate1.getHours();
|
|
}
|
|
|
|
public getTimezoneOffset() : boolean {
|
|
var date = new Date();
|
|
var xdate1 = new XDate(+date);
|
|
var xdate2 = new XDate(+date, true);
|
|
return xdate1.getTimezoneOffset() == date.getTimezoneOffset() &&
|
|
!xdate2.getTimezoneOffset();
|
|
}
|
|
}
|
|
|
|
// bases on xdate/test/utilities.js
|
|
class utilities extends test_base
|
|
{
|
|
|
|
public clone() : boolean {
|
|
var d1 = new XDate();
|
|
var d2 = d1.clone();
|
|
d2.addMinutes(30);
|
|
return +d1 != +d2;
|
|
}
|
|
|
|
|
|
public clearTime() : boolean {
|
|
var d = new XDate(2010, 2, 5, 16, 15, 10, 100);
|
|
d.clearTime();
|
|
return !d.getHours() && !d.getMinutes() && !d.getSeconds() && !d.getMilliseconds();
|
|
}
|
|
|
|
|
|
public valid() : boolean {
|
|
var good = new XDate();
|
|
var bad = new XDate('asdf');
|
|
return good.valid() && !bad.valid();
|
|
}
|
|
|
|
|
|
public toDate_hasLocalTimezone_yes() : boolean {
|
|
var d = new Date(2012, 5, 8);
|
|
var xdate = new XDate(d);
|
|
return +xdate.toDate() == +d;
|
|
}
|
|
|
|
|
|
public toDate_hasLocalTimezone_no() : boolean {
|
|
var d = new Date(2012, 5, 8);
|
|
var xdate = new XDate(+d, false);
|
|
return +xdate.toDate() == +d;
|
|
}
|
|
|
|
|
|
public getDaysInMonth() : boolean {
|
|
return XDate.getDaysInMonth(2011, 1) == 28 && // feb
|
|
XDate.getDaysInMonth(2012, 1) == 29 && // feb, leap year
|
|
XDate.getDaysInMonth(2012, 8) == 30 && // sep
|
|
XDate.getDaysInMonth(2012, 6) == 31; // jul
|
|
}
|
|
|
|
|
|
public UTC_class_method() : boolean {
|
|
return Date.UTC(2011, 3, 20, 12, 30) == XDate.UTC(2011, 3, 20, 12, 30);
|
|
}
|
|
|
|
|
|
public parse_class_method() : boolean {
|
|
var s = "Sat Apr 23 2011 13:44:12 GMT-0700 (PDT)";
|
|
return Date.parse(s) == XDate.parse(s);
|
|
//&&
|
|
//isNaN(Date.parse()) && isNaN(XDate.parse());
|
|
}
|
|
|
|
|
|
public now_class_method() : boolean {
|
|
return Math.abs(+new Date() - XDate.now()) < 1000;
|
|
}
|
|
|
|
|
|
public today_class_method() : boolean {
|
|
var xdate = XDate.today();
|
|
var d = new Date();
|
|
return xdate.getFullYear() == d.getFullYear() &&
|
|
xdate.getMonth() == d.getMonth() &&
|
|
xdate.getDate() == d.getDate() &&
|
|
!xdate.getHours() &&
|
|
!xdate.getSeconds() &&
|
|
!xdate.getMilliseconds();
|
|
}
|
|
|
|
|
|
public toJSON() : boolean {
|
|
var realDate = new Date(2011, 3, 20, 12, 30);
|
|
var xdate = new Date(2011, 3, 20, 12, 30);
|
|
if (!realDate.toJSON) {
|
|
return false;
|
|
}
|
|
return realDate.toJSON() == xdate.toJSON();
|
|
}
|
|
|
|
|
|
public chaining() : boolean {
|
|
var d = new XDate()
|
|
// .setYear(99)
|
|
.setFullYear(2011)
|
|
.setWeek(50)
|
|
.setMonth(1)
|
|
.setDate(5)
|
|
.setHours(12)
|
|
.setMinutes(50)
|
|
.setSeconds(20)
|
|
.setMilliseconds(500)
|
|
.setTime(0)
|
|
.addYears(1)
|
|
.addMonths(1)
|
|
.addDays(1)
|
|
.addMinutes(1)
|
|
.addSeconds(1)
|
|
.addMilliseconds(1)
|
|
.clone()
|
|
.clearTime()
|
|
.setUTCFullYear(2010)
|
|
.setUTCMonth(6)
|
|
.setUTCWeek(5)
|
|
.setUTCDate(4)
|
|
.setUTCHours(12)
|
|
.setUTCMinutes(30)
|
|
.setUTCSeconds(30)
|
|
.setUTCMilliseconds(10)
|
|
.setUTCMode(true);
|
|
return d instanceof XDate;
|
|
}
|
|
|
|
}
|
|
|
|
}
|