Skip to content

Commit d787f15

Browse files
committed
Time zone and literal tests, as well as some additional cases for the timezoneOffsetString() tests based on the timezone work. Changed the default timezone to null and eliminated double quotes from the regexp for literals.
1 parent 83c55c3 commit d787f15

File tree

2 files changed

+48
-10
lines changed

2 files changed

+48
-10
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,7 +1267,7 @@
12671267
second: 0,
12681268
millisec: 0,
12691269
microsec: 0,
1270-
timezone: 0
1270+
timezone: null
12711271
}, time);
12721272

12731273
var tmptime = format,
@@ -1278,7 +1278,7 @@
12781278
ampmName = options.pmNames[0];
12791279
}
12801280

1281-
tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|('.*?'|".*?"))/g, function(match) {
1281+
tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function(match) {
12821282
switch (match) {
12831283
case 'HH':
12841284
return ('0' + hour).slice(-2);

test/jquery-ui-timepicker-addon_spec.js

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,14 @@ describe('datetimepicker', function() {
379379
expect($.timepicker.timezoneOffsetString(-720, true)).toBe('-12:00');
380380
expect($.timepicker.timezoneOffsetString(840, true)).toBe('+14:00');
381381
});
382+
383+
it('handles abnormal values reasonably', function() {
384+
expect($.timepicker.timezoneOffsetString(null, false)).toBe('+0000');
385+
expect($.timepicker.timezoneOffsetString(null, true)).toBe('Z');
386+
387+
expect($.timepicker.timezoneOffsetString(undefined, false)).toBeUndefined();
388+
expect($.timepicker.timezoneOffsetString(undefined, true)).toBeUndefined();
389+
});
382390
});
383391

384392
describe('timezoneAdjust', function() {
@@ -557,7 +565,31 @@ describe('datetimepicker', function() {
557565
});
558566

559567
describe('timezone', function() {
560-
// TODO: Finish
568+
var nullTimezoneTime = {timezone: null},
569+
noTimezoneTime = emptyTime,
570+
timezoneTime = {timezone: -240},
571+
noTimezoneOptions = {},
572+
timezoneOptions = {timezone: 600};
573+
574+
it('handles z correctly', function() {
575+
expect($.datepicker.formatTime('z', timezoneTime, noTimezoneOptions)).toBe('-0400');
576+
expect($.datepicker.formatTime('z', timezoneTime, timezoneOptions)).toBe('-0400');
577+
578+
expect($.datepicker.formatTime('z', nullTimezoneTime, timezoneOptions)).toBe('+1000');
579+
expect($.datepicker.formatTime('z', noTimezoneTime, timezoneOptions)).toBe('+1000');
580+
expect($.datepicker.formatTime('z', nullTimezoneTime, noTimezoneOptions)).toBe('+0000');
581+
expect($.datepicker.formatTime('z', noTimezoneTime, noTimezoneOptions)).toBe('+0000');
582+
});
583+
584+
it('handles Z correctly', function() {
585+
expect($.datepicker.formatTime('Z', timezoneTime, noTimezoneOptions)).toBe('-04:00');
586+
expect($.datepicker.formatTime('Z', timezoneTime, timezoneOptions)).toBe('-04:00');
587+
588+
expect($.datepicker.formatTime('Z', nullTimezoneTime, timezoneOptions)).toBe('+10:00');
589+
expect($.datepicker.formatTime('Z', noTimezoneTime, timezoneOptions)).toBe('+10:00');
590+
expect($.datepicker.formatTime('Z', nullTimezoneTime, noTimezoneOptions)).toBe('Z');
591+
expect($.datepicker.formatTime('Z', noTimezoneTime, noTimezoneOptions)).toBe('Z');
592+
});
561593
});
562594

563595
describe('am/pm', function() {
@@ -589,13 +621,19 @@ describe('datetimepicker', function() {
589621
});
590622
});
591623

592-
describe('other', function() {
593-
expect($.datepicker.formatTime('')).toBe('');
594-
expect($.datepicker.formatTime("'abc'")).toBe('abc');
595-
expect($.datepicker.formatTime('"abc"')).toBe('"abc"');
596-
expect($.datepicker.formatTime("'")).toBe("'");
597-
expect($.datepicker.formatTime("''")).toBe("");
598-
expect($.datepicker.formatTime("'abc' h 'def'")).toBe('abc 12 def');
624+
describe('literals', function() {
625+
it('handles literals correctly', function() {
626+
expect($.datepicker.formatTime('', emptyTime)).toBe('');
627+
expect($.datepicker.formatTime("'abc'", emptyTime)).toBe('abc');
628+
expect($.datepicker.formatTime("'", emptyTime)).toBe("'");
629+
expect($.datepicker.formatTime("''", emptyTime)).toBe("");
630+
expect($.datepicker.formatTime("'abc' h 'def'", emptyTime)).toBe('abc 12 def');
631+
});
632+
633+
it('does not treat double quotes as literals', function() {
634+
expect($.datepicker.formatTime('"ab"', emptyTime)).toBe('"ab"');
635+
expect($.datepicker.formatTime('"abc"', emptyTime)).toBe('"ab000"');
636+
});
599637
});
600638
});
601639
});

0 commit comments

Comments
 (0)