1 $(document).ready( function () {
3 module( "Date Time Picker");
5 var datetime = $("#datetime")[0];
6 var date = $("#date")[0];
7 var time = $("#time")[0];
8 var custom = $("#custom")[0];
11 $( "#page-1" ).page();
13 var objDatetime = $(datetime).data( "datetimepicker" );
14 var objDate = $(date).data( "datetimepicker" );
15 var objTime = $(time).data( "datetimepicker" );
16 var objCustom = $(custom).data( "datetimepicker" );
18 asyncTest( "Auto-initialization", function () {
19 ok( objDatetime, "should Date/Time instace created" );
20 ok( objDate, "should Date instance created" );
21 ok( objTime, "should Time instance created" );
22 ok( objCustom, "should Custom format instance created" );
27 asyncTest( "Options", function () {
28 equal( objDatetime.options.type, "datetime", "should 'datetime' type created." );
29 equal( objDate.options.type, "date", "should 'date' type created." );
30 equal( objTime.options.type, "time", "should 'time' type created." );
31 equal( objCustom.options.type, "datetime", "should custom format created as 'datetime' type." );
32 equal( objCustom.options.format, "MMM dd yyyy hh:mm tt", "should accept custom format string." );
33 equal( objCustom.options.date.toString(), new Date("Jun 30 00:00:00 UTC+0000 2012").toString(), "should accept preset date." );
38 asyncTest( "Private Methods", function () {
45 for ( year = 1; year < 2100; year++ ) {
46 expect = new Date( year, 1, 29 ).getDate() == 29;
47 actual = objDatetime._isLeapYear( year );
48 if ( expect != actual ) {
49 throw "" + year + " is wrong";
52 } catch ( exception ) {
53 console.log( exception );
57 }()), "should be able to check leap year" );
59 var updateFieldTest = function ( format, value, expect ) {
60 var target = $('<div data-pat=' + format + '></div>');
61 objTime._updateField( target, value );
66 updateFieldTest( "h", 0 ),
67 updateFieldTest( "hh", 1 ),
68 updateFieldTest( "H", 13 ),
69 updateFieldTest( "HH", 9 ),
70 updateFieldTest( "m", 9 ),
71 updateFieldTest( "mm", 9 ),
72 updateFieldTest( "MMM", 3 ),
73 updateFieldTest( "MMMM", 3 ),
74 updateFieldTest( "yy", 1995 ),
75 updateFieldTest( "yyyy", 1995 )
78 "12", "01", "13", "09", "9", "09", Globalize.culture().calendar.months.namesAbbr[2], Globalize.culture().calendar.months.names[2], "95", "1995"
79 ], "should update field to given value with format" );
82 var beforeNoon = objTime.options.date.getHours() < 12;
83 objTime._switchAmPm();
84 return beforeNoon != objTime.options.date.getHours() < 12;
85 }()), "should change AM/PM by AMPM button" );
87 deepEqual( [ "MMMM", " ", "dd", " ", "yyyy", " ", "hh", ":", "mm", " ", "dummy space" ],
88 objTime._parsePattern( "MMMM dd yyyy hh:mm 'dummy space'" ), "should parse DTF string as array" );
90 objDatetime.options.date = new Date( "May 2 18:30:00 2012" );
92 var months = Globalize.culture().calendar.months.namesAbbr.slice();
93 if ( months.length > 12 ) {
99 values : [ "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" ],
100 data : [ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12 ],
105 values : range( 0, 23 ),
106 data : range( 0, 23 ),
112 data : range( 1, 12 ),
118 objDatetime._populateDataSelector( "hour", "hh", objDatetime ),
119 objDatetime._populateDataSelector( "hour", "H", objDatetime ),
120 objDatetime._populateDataSelector( "month", "MMM", objDatetime )
121 ], "should populate data selector by given field and pattern" );
126 asyncTest( "Public Methods", function () {
127 objDatetime.value.call( objDatetime, "Jan 1 09:00:00 2012" );
128 equal( "2012-01-01T09:00:00", objDatetime.value(), "should set and get value by API" );
129 var format = "yyyy MM dd hh mm";
130 objDatetime._setFormat( format );
131 equal( objDatetime.option("format"), format, "should set type and format" );
135 asyncTest( "Events", function () {
136 var str = "May 2 18:00:00 2012";
138 $(datetime).bind("date-changed", function(e, date) {
139 equal( objDatetime.value(), "2012-05-02T18:00:00", "Should invoke event when date changed" );
143 objDatetime.value( str );