2013-12-13 12:17:10 +00:00
|
|
|
/**
|
|
|
|
* 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')
|
2015-03-06 13:24:51 +00:00
|
|
|
, browser = require('../src/bowser')
|
2013-12-13 12:17:10 +00:00
|
|
|
, 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
|
|
|
|
}
|
|
|
|
|
2014-02-20 08:33:11 +00:00
|
|
|
function objKeys(obj) {
|
|
|
|
var keys = []
|
|
|
|
, key
|
|
|
|
for (key in obj) {
|
|
|
|
if (obj.hasOwnProperty(key)) {
|
|
|
|
keys.push(key)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
keys.sort();
|
|
|
|
return keys.join(', ')
|
|
|
|
}
|
|
|
|
|
2013-12-13 12:17:10 +00:00
|
|
|
/* Groups */
|
|
|
|
for (g in allUserAgents) { (function(group, userAgents) {
|
|
|
|
describe(group, function() {
|
|
|
|
|
|
|
|
/* User Agents */
|
|
|
|
for (ua in userAgents) { (function(userAgent, expections) {
|
2014-02-20 08:33:11 +00:00
|
|
|
describe('user agent "' + userAgent + '"', function() {
|
2013-12-13 12:17:10 +00:00
|
|
|
|
|
|
|
expections.name = group
|
|
|
|
|
|
|
|
/* Get the result from bowser. */
|
|
|
|
var result = browser._detect(userAgent)
|
|
|
|
|
|
|
|
/* At first, check if the result has the correct length. */
|
2014-02-20 08:33:11 +00:00
|
|
|
it('should have ' + objLength(expections) + ' properties', function() {
|
|
|
|
assert.equal(objKeys(result), objKeys(expections))
|
2013-12-13 12:17:10 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
/* 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])}
|