Skip to content

Commit d7e6175

Browse files
committed
Wrote tests for detectSupport, fixed a bug in AM/PM detection, simplified isIn() function, and eliminated unnecessary escapes in regular expression.
1 parent e7bf03f commit d7e6175

File tree

2 files changed

+69
-5
lines changed

2 files changed

+69
-5
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,7 +1768,7 @@
17681768
var isEmptyObject = function(obj) {
17691769
var prop;
17701770
for (prop in obj) {
1771-
if (obj.hasOwnProperty(obj)) {
1771+
if (obj.hasOwnProperty(prop)) {
17721772
return false;
17731773
}
17741774
}
@@ -1793,9 +1793,9 @@
17931793
* Returns an object of booleans for each unit
17941794
*/
17951795
var detectSupport = function(timeFormat){
1796-
var tf = timeFormat.replace(/\'.*?\'/g,'').toLowerCase(), // removes literals
1796+
var tf = timeFormat.replace(/'.*?'/g,'').toLowerCase(), // removes literals
17971797
isIn = function(f, t){ // does the format contain the token?
1798-
return f.indexOf(t) !== -1? true:false;
1798+
return !!(f.indexOf(t) !== -1);
17991799
};
18001800
return {
18011801
hour: isIn(tf,'h'),
@@ -1804,7 +1804,7 @@
18041804
millisec: isIn(tf,'l'),
18051805
microsec: isIn(tf,'c'),
18061806
timezone: isIn(tf,'z'),
1807-
ampm: isIn('t') && isIn(timeFormat,'h'),
1807+
ampm: isIn(tf, 't') && isIn(timeFormat,'h'),
18081808
iso8601: isIn(timeFormat, 'Z')
18091809
};
18101810
};
@@ -2111,7 +2111,8 @@
21112111
$.timepicker.util = {
21122112
_extendRemove: extendRemove,
21132113
_isEmptyObject: isEmptyObject,
2114-
_convert24to12: convert24to12
2114+
_convert24to12: convert24to12,
2115+
_detectSupport: detectSupport
21152116
};
21162117

21172118
/*

test/jquery-ui-timepicker-addon_spec.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,68 @@ describe('datetimepicker', function() {
8989
expect(util._convert24to12(expectedValue + 12 * 3)).toBe("" + expectedValue);
9090
})
9191
});
92+
93+
describe('detectSupport', function() {
94+
it('should detect support for hours', function() {
95+
expect(util._detectSupport('H').hour).toBe(true);
96+
expect(util._detectSupport('HH').hour).toBe(true);
97+
expect(util._detectSupport('h').hour).toBe(true);
98+
expect(util._detectSupport('hh').hour).toBe(true);
99+
100+
expect(util._detectSupport('asdf').hour).toBe(false);
101+
});
102+
103+
it('should detect support for minutes', function() {
104+
expect(util._detectSupport('m').minute).toBe(true);
105+
expect(util._detectSupport('mm').minute).toBe(true);
106+
107+
expect(util._detectSupport('asdf').minute).toBe(false);
108+
});
109+
110+
it('should detect support for seconds', function() {
111+
expect(util._detectSupport('s').second).toBe(true);
112+
expect(util._detectSupport('ss').second).toBe(true);
113+
114+
expect(util._detectSupport('acdf').second).toBe(false);
115+
});
116+
117+
it('should detect support for milliseconds', function() {
118+
expect(util._detectSupport('l').millisec).toBe(true);
119+
120+
expect(util._detectSupport('acdf').millisec).toBe(false);
121+
});
122+
123+
it('should detect support for microseconds', function() {
124+
expect(util._detectSupport('c').microsec).toBe(true);
125+
126+
expect(util._detectSupport('asdf').microsec).toBe(false);
127+
});
128+
129+
it('should detect support for AM/PM', function() {
130+
expect(util._detectSupport('h t').ampm).toBe(true);
131+
expect(util._detectSupport('h tt').ampm).toBe(true);
132+
expect(util._detectSupport('h T').ampm).toBe(true);
133+
expect(util._detectSupport('h TT').ampm).toBe(true);
134+
135+
expect(util._detectSupport('t').ampm).toBe(false);
136+
expect(util._detectSupport('h').ampm).toBe(false);
137+
expect(util._detectSupport('H t').ampm).toBe(false);
138+
expect(util._detectSupport('acdf').ampm).toBe(false);
139+
});
140+
141+
it('should detect support for timezone', function() {
142+
expect(util._detectSupport('z').timezone).toBe(true);
143+
expect(util._detectSupport('Z').timezone).toBe(true);
144+
145+
expect(util._detectSupport('acdf').timezone).toBe(false);
146+
});
147+
148+
it('should detect support for iso8601', function() {
149+
expect(util._detectSupport('Z').iso8601).toBe(true);
150+
151+
expect(util._detectSupport('z').iso8601).toBe(false);
152+
expect(util._detectSupport('acdf').iso8601).toBe(false);
153+
});
154+
});
92155
});
93156
});

0 commit comments

Comments
 (0)