Skip to content

Commit 83b6840

Browse files
committed
Start tests for timepicker functions. Test timezoneOffsetNumber() and fix seeming deviation from intent, although not in a likely meaningful way.
1 parent 34e2ee2 commit 83b6840

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1942,19 +1942,19 @@
19421942
* @return {number}
19431943
*/
19441944
$.timepicker.timezoneOffsetNumber = function(tzString) {
1945-
tzString = tzString.toString().replace(':',''); // excuse any iso8601, end up with "+1245"
1945+
var normalized = tzString.toString().replace(':',''); // excuse any iso8601, end up with "+1245"
19461946

1947-
if(tzString.toUpperCase() === 'Z'){ // if iso8601 with Z, its 0 minute offset
1947+
if(normalized.toUpperCase() === 'Z'){ // if iso8601 with Z, its 0 minute offset
19481948
return 0;
19491949
}
19501950

1951-
if(!/^(\-|\+)\d{4}$/.test(tzString)){ // possibly a user defined tz, so just give it back
1951+
if(!/^(\-|\+)\d{4}$/.test(normalized)){ // possibly a user defined tz, so just give it back
19521952
return tzString;
19531953
}
19541954

1955-
return ((tzString.substr(0,1) =='-'? -1 : 1) * // plus or minus
1956-
((parseInt(tzString.substr(1,2),10)*60) + // hours (converted to minutes)
1957-
parseInt(tzString.substr(3,2),10))); // minutes
1955+
return ((normalized.substr(0,1) =='-'? -1 : 1) * // plus or minus
1956+
((parseInt(normalized.substr(1,2),10)*60) + // hours (converted to minutes)
1957+
parseInt(normalized.substr(3,2),10))); // minutes
19581958
};
19591959

19601960
/**

test/jquery-ui-timepicker-addon_spec.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,4 +196,29 @@ describe('datetimepicker', function() {
196196
});
197197
});
198198
});
199+
200+
describe('timepicker functions', function() {
201+
describe('timezoneOffsetNumber', function() {
202+
it('returns 0 if the time zone string is iso8601 Zulu', function() {
203+
expect($.timepicker.timezoneOffsetNumber('Z')).toBe(0);
204+
expect($.timepicker.timezoneOffsetNumber('z')).toBe(0);
205+
expect($.timepicker.timezoneOffsetNumber(':Z')).toBe(0);
206+
});
207+
208+
it('returns a string that does not match the expected representations', function() {
209+
expect($.timepicker.timezoneOffsetNumber('EDT')).toBe('EDT');
210+
expect($.timepicker.timezoneOffsetNumber('1234')).toBe('1234');
211+
expect($.timepicker.timezoneOffsetNumber('+123')).toBe('+123');
212+
expect($.timepicker.timezoneOffsetNumber('-123')).toBe('-123');
213+
expect($.timepicker.timezoneOffsetNumber('abc:def')).toBe('abc:def');
214+
});
215+
216+
it('returns the minute offset from a time zone offset string', function() {
217+
expect($.timepicker.timezoneOffsetNumber('-0000')).toBe(0);
218+
expect($.timepicker.timezoneOffsetNumber('+0000')).toBe(0);
219+
expect($.timepicker.timezoneOffsetNumber('-0400')).toBe(-240);
220+
expect($.timepicker.timezoneOffsetNumber('+0400')).toBe(240);
221+
});
222+
});
223+
});
199224
});

0 commit comments

Comments
 (0)