diff options
-rw-r--r-- | jquery-ui-timepicker-addon.js | 4 | ||||
-rw-r--r-- | test/jquery-ui-timepicker-addon_spec.js | 54 |
2 files changed, 48 insertions, 10 deletions
diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index a1b4d8a..f247313 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -1267,7 +1267,7 @@ second: 0, millisec: 0, microsec: 0, - timezone: 0 + timezone: null }, time); var tmptime = format, @@ -1278,7 +1278,7 @@ ampmName = options.pmNames[0]; } - tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|('.*?'|".*?"))/g, function(match) { + tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function(match) { switch (match) { case 'HH': return ('0' + hour).slice(-2); diff --git a/test/jquery-ui-timepicker-addon_spec.js b/test/jquery-ui-timepicker-addon_spec.js index 191db63..b7c7c68 100644 --- a/test/jquery-ui-timepicker-addon_spec.js +++ b/test/jquery-ui-timepicker-addon_spec.js @@ -379,6 +379,14 @@ describe('datetimepicker', function() { expect($.timepicker.timezoneOffsetString(-720, true)).toBe('-12:00'); expect($.timepicker.timezoneOffsetString(840, true)).toBe('+14:00'); }); + + it('handles abnormal values reasonably', function() { + expect($.timepicker.timezoneOffsetString(null, false)).toBe('+0000'); + expect($.timepicker.timezoneOffsetString(null, true)).toBe('Z'); + + expect($.timepicker.timezoneOffsetString(undefined, false)).toBeUndefined(); + expect($.timepicker.timezoneOffsetString(undefined, true)).toBeUndefined(); + }); }); describe('timezoneAdjust', function() { @@ -557,7 +565,31 @@ describe('datetimepicker', function() { }); describe('timezone', function() { - // TODO: Finish + var nullTimezoneTime = {timezone: null}, + noTimezoneTime = emptyTime, + timezoneTime = {timezone: -240}, + noTimezoneOptions = {}, + timezoneOptions = {timezone: 600}; + + it('handles z correctly', function() { + expect($.datepicker.formatTime('z', timezoneTime, noTimezoneOptions)).toBe('-0400'); + expect($.datepicker.formatTime('z', timezoneTime, timezoneOptions)).toBe('-0400'); + + expect($.datepicker.formatTime('z', nullTimezoneTime, timezoneOptions)).toBe('+1000'); + expect($.datepicker.formatTime('z', noTimezoneTime, timezoneOptions)).toBe('+1000'); + expect($.datepicker.formatTime('z', nullTimezoneTime, noTimezoneOptions)).toBe('+0000'); + expect($.datepicker.formatTime('z', noTimezoneTime, noTimezoneOptions)).toBe('+0000'); + }); + + it('handles Z correctly', function() { + expect($.datepicker.formatTime('Z', timezoneTime, noTimezoneOptions)).toBe('-04:00'); + expect($.datepicker.formatTime('Z', timezoneTime, timezoneOptions)).toBe('-04:00'); + + expect($.datepicker.formatTime('Z', nullTimezoneTime, timezoneOptions)).toBe('+10:00'); + expect($.datepicker.formatTime('Z', noTimezoneTime, timezoneOptions)).toBe('+10:00'); + expect($.datepicker.formatTime('Z', nullTimezoneTime, noTimezoneOptions)).toBe('Z'); + expect($.datepicker.formatTime('Z', noTimezoneTime, noTimezoneOptions)).toBe('Z'); + }); }); describe('am/pm', function() { @@ -589,13 +621,19 @@ describe('datetimepicker', function() { }); }); - describe('other', function() { - expect($.datepicker.formatTime('')).toBe(''); - expect($.datepicker.formatTime("'abc'")).toBe('abc'); - expect($.datepicker.formatTime('"abc"')).toBe('"abc"'); - expect($.datepicker.formatTime("'")).toBe("'"); - expect($.datepicker.formatTime("''")).toBe(""); - expect($.datepicker.formatTime("'abc' h 'def'")).toBe('abc 12 def'); + describe('literals', function() { + it('handles literals correctly', function() { + expect($.datepicker.formatTime('', emptyTime)).toBe(''); + expect($.datepicker.formatTime("'abc'", emptyTime)).toBe('abc'); + expect($.datepicker.formatTime("'", emptyTime)).toBe("'"); + expect($.datepicker.formatTime("''", emptyTime)).toBe(""); + expect($.datepicker.formatTime("'abc' h 'def'", emptyTime)).toBe('abc 12 def'); + }); + + it('does not treat double quotes as literals', function() { + expect($.datepicker.formatTime('"ab"', emptyTime)).toBe('"ab"'); + expect($.datepicker.formatTime('"abc"', emptyTime)).toBe('"ab000"'); + }); }); }); }); |