summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Vance <steve@vance.com>2013-07-06 17:55:56 -0400
committerStephen Vance <steve@vance.com>2013-07-06 22:20:01 -0400
commitd7e61753a39ffcb19d1c73df5fdfb3ec4c458e5e (patch)
tree1f3b6d0654c5d4b74348e57ea5d1444174c842fe
parente7bf03fa1a46db16c67d9696510f39ee109b4625 (diff)
downloadjQuery-Timepicker-Addon-d7e61753a39ffcb19d1c73df5fdfb3ec4c458e5e.zip
jQuery-Timepicker-Addon-d7e61753a39ffcb19d1c73df5fdfb3ec4c458e5e.tar.gz
jQuery-Timepicker-Addon-d7e61753a39ffcb19d1c73df5fdfb3ec4c458e5e.tar.bz2
Wrote tests for detectSupport, fixed a bug in AM/PM detection, simplified isIn() function, and eliminated unnecessary escapes in regular expression.
-rw-r--r--jquery-ui-timepicker-addon.js11
-rw-r--r--test/jquery-ui-timepicker-addon_spec.js63
2 files changed, 69 insertions, 5 deletions
diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js
index 6925a3f..9cf5cf3 100644
--- a/jquery-ui-timepicker-addon.js
+++ b/jquery-ui-timepicker-addon.js
@@ -1768,7 +1768,7 @@
var isEmptyObject = function(obj) {
var prop;
for (prop in obj) {
- if (obj.hasOwnProperty(obj)) {
+ if (obj.hasOwnProperty(prop)) {
return false;
}
}
@@ -1793,9 +1793,9 @@
* Returns an object of booleans for each unit
*/
var detectSupport = function(timeFormat){
- var tf = timeFormat.replace(/\'.*?\'/g,'').toLowerCase(), // removes literals
+ var tf = timeFormat.replace(/'.*?'/g,'').toLowerCase(), // removes literals
isIn = function(f, t){ // does the format contain the token?
- return f.indexOf(t) !== -1? true:false;
+ return !!(f.indexOf(t) !== -1);
};
return {
hour: isIn(tf,'h'),
@@ -1804,7 +1804,7 @@
millisec: isIn(tf,'l'),
microsec: isIn(tf,'c'),
timezone: isIn(tf,'z'),
- ampm: isIn('t') && isIn(timeFormat,'h'),
+ ampm: isIn(tf, 't') && isIn(timeFormat,'h'),
iso8601: isIn(timeFormat, 'Z')
};
};
@@ -2111,7 +2111,8 @@
$.timepicker.util = {
_extendRemove: extendRemove,
_isEmptyObject: isEmptyObject,
- _convert24to12: convert24to12
+ _convert24to12: convert24to12,
+ _detectSupport: detectSupport
};
/*
diff --git a/test/jquery-ui-timepicker-addon_spec.js b/test/jquery-ui-timepicker-addon_spec.js
index 29f8648..4f257a0 100644
--- a/test/jquery-ui-timepicker-addon_spec.js
+++ b/test/jquery-ui-timepicker-addon_spec.js
@@ -89,5 +89,68 @@ describe('datetimepicker', function() {
expect(util._convert24to12(expectedValue + 12 * 3)).toBe("" + expectedValue);
})
});
+
+ describe('detectSupport', function() {
+ it('should detect support for hours', function() {
+ expect(util._detectSupport('H').hour).toBe(true);
+ expect(util._detectSupport('HH').hour).toBe(true);
+ expect(util._detectSupport('h').hour).toBe(true);
+ expect(util._detectSupport('hh').hour).toBe(true);
+
+ expect(util._detectSupport('asdf').hour).toBe(false);
+ });
+
+ it('should detect support for minutes', function() {
+ expect(util._detectSupport('m').minute).toBe(true);
+ expect(util._detectSupport('mm').minute).toBe(true);
+
+ expect(util._detectSupport('asdf').minute).toBe(false);
+ });
+
+ it('should detect support for seconds', function() {
+ expect(util._detectSupport('s').second).toBe(true);
+ expect(util._detectSupport('ss').second).toBe(true);
+
+ expect(util._detectSupport('acdf').second).toBe(false);
+ });
+
+ it('should detect support for milliseconds', function() {
+ expect(util._detectSupport('l').millisec).toBe(true);
+
+ expect(util._detectSupport('acdf').millisec).toBe(false);
+ });
+
+ it('should detect support for microseconds', function() {
+ expect(util._detectSupport('c').microsec).toBe(true);
+
+ expect(util._detectSupport('asdf').microsec).toBe(false);
+ });
+
+ it('should detect support for AM/PM', function() {
+ expect(util._detectSupport('h t').ampm).toBe(true);
+ expect(util._detectSupport('h tt').ampm).toBe(true);
+ expect(util._detectSupport('h T').ampm).toBe(true);
+ expect(util._detectSupport('h TT').ampm).toBe(true);
+
+ expect(util._detectSupport('t').ampm).toBe(false);
+ expect(util._detectSupport('h').ampm).toBe(false);
+ expect(util._detectSupport('H t').ampm).toBe(false);
+ expect(util._detectSupport('acdf').ampm).toBe(false);
+ });
+
+ it('should detect support for timezone', function() {
+ expect(util._detectSupport('z').timezone).toBe(true);
+ expect(util._detectSupport('Z').timezone).toBe(true);
+
+ expect(util._detectSupport('acdf').timezone).toBe(false);
+ });
+
+ it('should detect support for iso8601', function() {
+ expect(util._detectSupport('Z').iso8601).toBe(true);
+
+ expect(util._detectSupport('z').iso8601).toBe(false);
+ expect(util._detectSupport('acdf').iso8601).toBe(false);
+ });
+ });
});
}); \ No newline at end of file