1
0
mirror of https://github.com/lancedikson/bowser synced 2024-09-28 22:30:44 +00:00
lancedikson_bowser/test/test.js
Hannes Diercks 7650c935bf Add tests.
2013-09-13 14:52:14 +02:00

63 lines
1.6 KiB
JavaScript

/**
* Loop through all entries in our user agents object and test everything.
*
* @see src/useragents.js
* @author hannes.diercks@jimdo.com
*/
var g, ua, p,
assert = require('assert'),
bowser = require('../src/bowser').bowser,
allUserAgents = require('../src/useragents').useragents;
/**
* Get the length of an object.
* http://stackoverflow.com/questions/5223/length-of-javascript-object-ie-associative-array
*
* @param {Object} obj
* @return {Number}
*/
function objLength(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
size++;
}
}
return size;
}
/* Groups */
for (g in allUserAgents) { (function(group, userAgents) {
describe(group, function() {
/* User Agents */
for (ua in userAgents) { (function(userAgent, expections) {
describe('#' + userAgent, function() {
/* Get the result from bowser. */
var result = bowser._detect(userAgent),
expectionLength = objLength(expections);
/* At first, check if the result has the correct length. */
it('Should have ' + expectionLength + ' properties', function() {
assert.equal(objLength(result), expectionLength);
});
/* Properties */
for (p in expections) { (function(property, value, resultValue) {
/* Now ensure correctness of every property. */
it('\'s Property "' + property + '" should be ' + value, function() {
assert.equal(resultValue, value);
});
})(p, expections[p], result[p]); }
});
})(ua, userAgents[ua]); }
});
})(g, allUserAgents[g]); }