feat: Add Be and tbd skill, also added Roadmap file

This commit is contained in:
2026-05-10 16:32:12 -04:00
parent 3500ade13f
commit 0bb8885802
29587 changed files with 10611695 additions and 0 deletions

3
Skills/@be/be/node_modules/ismobilejs/.npmignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
node_modules/
_SpecRunner.html
.grunt

7
Skills/@be/be/node_modules/ismobilejs/.travis.yml generated vendored Normal file
View File

@@ -0,0 +1,7 @@
language: node_js
node_js:
- "0.11"
before_script:
- npm install -g grunt-cli
- npm install grunt grunt-contrib-jasmine grunt-contrib-jshint grunt-contrib-uglify
script: grunt -v

View File

@@ -0,0 +1,9 @@
* Igor Ribeio Lima ([https://github.com/igorlima](https://github.com/igorlima))
* Clay Hinson ([https://github.com/clayhinson](https://github.com/clayhinson))
* Vitaly Orlov ([https://github.com/orloffv](https://github.com/orloffv))
* Shinnosuke Watanabe ([https://github.com/shinnn](https://github.com/shinnn))
* Vladimir Matsola ([https://github.com/vomchik](https://github.com/vomchik))
* Bryce Neal ([https://github.com/prettymuchbryce](https://github.com/prettymuchbryce))
* Todd Smith-Salter ([https://github.com/ToddSmithSalter](https://github.com/ToddSmithSalter))
* Ma Cheng ([https://github.com/mc-zone](https://github.com/mc-zone))
* Ruslan Ismagilov ([https://github.com/isRuslan](https://github.com/isRuslan))

40
Skills/@be/be/node_modules/ismobilejs/Gruntfile.js generated vendored Normal file
View File

@@ -0,0 +1,40 @@
module.exports = function(grunt) {
'use strict';
grunt.initConfig({
jasmine: {
options: {
specs: 'tests/spec/*.js'
},
isMobile: {
src: ['isMobile.js']
},
isMobileMin: {
src: ['isMobile.min.js']
}
},
uglify: {
options: {
report: 'min'
},
main: {
files: {
'isMobile.min.js': ['isMobile.js']
}
}
},
jshint: {
all: ['Gruntfile.js', 'isMobile.js', 'tests/spec/**/*.js']
}
});
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['jshint', 'uglify', 'jasmine']);
};

133
Skills/@be/be/node_modules/ismobilejs/README.md generated vendored Normal file
View File

@@ -0,0 +1,133 @@
[![Build Status](https://travis-ci.org/kaimallea/isMobile.png)](https://travis-ci.org/kaimallea/isMobile)
[![Node dependencies status](https://david-dm.org/kaimallea/isMobile.png)](https://david-dm.org/kaimallea/isMobile)
![Bower version](https://img.shields.io/bower/v/isMobile.svg)
# isMobile
A simple JS library that detects mobile devices.
## Why use isMobile?
You probably shouldn't use this library unless you absolutely have to. In most cases, good [responsive design](https://en.wikipedia.org/wiki/Responsive_web_design) solves the problem of controlling how to
render things across different screen sizes. But there are always edge cases. If you have an edge case,
then this library might be for you.
I had very specific requirements for a project when I created this:
**`- Redirect all iPhones, iPods, Android phones, and seven inch devices to the mobile site.`**
Yep, at the time, a completely separate site had already been created for mobile devices. So I couldn't depend on media queries, feature detection, graceful degradation, progressive enhancement, or any of the cool techniques for selectively displaying things. I had to find a way to redirect visitors on certain devices to the mobile site.
I couldn't do detection on the back-end, because the entire site was generated as HTML, and then cached and served by a [CDN](https://en.wikipedia.org/wiki/Content_delivery_network), so I had to do the detection client-side.
So I resorted to User-Agent (UA) sniffing.
I tried to keep the script small (**currently ~1.4k bytes, minified**) and simple, because it would need to execute in the `<head>`, which is generally a bad idea, since JS blocks the downloading and rendering of all assets while it parses and executes. In the case of mobile redirection, I don't mind so much, because I want to start the redirect as soon as possible, before the device has a chance to start downloading and rendering other stuff. For non-mobile platforms, the script should execute fast, so the browser can quickly get back to downloading and rendering.
## How it works
isMobile runs quickly during initial page load to detect mobile devices; it then creates a JavaScript object with the results.
## Devices detected by isMobile
The following properties of the global `isMobile` object will either be `true` or `false`
### Apple devices
* `isMobile.apple.phone`
* `isMobile.apple.ipod`
* `isMobile.apple.tablet`
* `isMobile.apple.device` (any mobile Apple device)
### Android devices
* `isMobile.android.phone`
* `isMobile.android.tablet`
* `isMobile.android.device` (any mobile Android device)
### Amazon Silk devices (also passes Android checks)
* `isMobile.amazon.phone`
* `isMobile.amazon.tablet`
* `isMobile.amazon.device` (any mobile Amazon Silk device)
### Windows devices
* `isMobile.windows.phone`
* `isMobile.windows.tablet`
* `isMobile.windows.device` (any mobile Windows device)
### Specific seven inch devices
* `isMobile.seven_inch`
* `true` if the device is one of the following 7" devices:
- Nexus 7
- Kindle Fire
- Nook Tablet 7 inch
- Galaxy Tab 7 inch
### "Other" devices
* `isMobile.other.blackberry_10`
* `isMobile.other.blackberry`
* `isMobile.other.opera` (Opera Mini)
* `isMobile.other.firefox`
* `isMobile.other.chrome`
* `isMobile.other.device` (any "Other" device)
### Aggregate Groupings
* `isMobile.any` - any device matched
* `isMobile.phone` - any device in the 'phone' groups above
* `isMobile.tablet` - any device in the 'tablet' groups above
## Example Usage
I include the minified version of the script, inline, and at the top of the `<head>`. Cellular connections tend to suck, so it would be wasteful overhead to open another connection, just to download ~1.8kb of JS:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script>
// Minified version of isMobile included in the HTML since it's small
!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/IEMobile/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");return"undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window?this:void 0},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(this);
// My own arbitrary use of isMobile, as an example
(function () {
var MOBILE_SITE = '/mobile/index.html', // site to redirect to
NO_REDIRECT = 'noredirect'; // cookie to prevent redirect
// I only want to redirect iPhones, Android phones and a handful of 7" devices
if (isMobile.apple.phone || isMobile.android.phone || isMobile.seven_inch) {
// Only redirect if the user didn't previously choose
// to explicitly view the full site. This is validated
// by checking if a "noredirect" cookie exists
if ( document.cookie.indexOf(NO_REDIRECT) === -1 ) {
document.location = MOBILE_SITE;
}
}
})();
</script>
</head>
<body>
<!-- imagine lots of html and content -->
</body>
</html>
```
### node.js usage
#####Installation
`npm install ismobilejs`
#####Usage
```
var isMobile = require('ismobilejs');
console.log(isMobile(req.headers['user-agent']).any);
```

11
Skills/@be/be/node_modules/ismobilejs/bower.json generated vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"name": "isMobile",
"version": "0.4.1",
"main": "isMobile.js",
"ignore": [
"**/.*",
"CONTRIBUTORS.md",
"Gruntfile.js",
"tests"
]
}

137
Skills/@be/be/node_modules/ismobilejs/isMobile.js generated vendored Normal file
View File

@@ -0,0 +1,137 @@
/**
* isMobile.js v0.4.1
*
* A simple library to detect Apple phones and tablets,
* Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
* and any kind of seven inch device, via user agent sniffing.
*
* @author: Kai Mallea (kmallea@gmail.com)
*
* @license: http://creativecommons.org/publicdomain/zero/1.0/
*/
(function (global) {
var apple_phone = /iPhone/i,
apple_ipod = /iPod/i,
apple_tablet = /iPad/i,
android_phone = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i, // Match 'Android' AND 'Mobile'
android_tablet = /Android/i,
amazon_phone = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,
amazon_tablet = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,
windows_phone = /Windows Phone/i,
windows_tablet = /(?=.*\bWindows\b)(?=.*\bARM\b)/i, // Match 'Windows' AND 'ARM'
other_blackberry = /BlackBerry/i,
other_blackberry_10 = /BB10/i,
other_opera = /Opera Mini/i,
other_chrome = /(CriOS|Chrome)(?=.*\bMobile\b)/i,
other_firefox = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i, // Match 'Firefox' AND 'Mobile'
seven_inch = new RegExp(
'(?:' + // Non-capturing group
'Nexus 7' + // Nexus 7
'|' + // OR
'BNTV250' + // B&N Nook Tablet 7 inch
'|' + // OR
'Kindle Fire' + // Kindle Fire
'|' + // OR
'Silk' + // Kindle Fire, Silk Accelerated
'|' + // OR
'GT-P1000' + // Galaxy Tab 7 inch
')', // End non-capturing group
'i'); // Case-insensitive matching
var match = function(regex, userAgent) {
return regex.test(userAgent);
};
var IsMobileClass = function(userAgent) {
var ua = userAgent || navigator.userAgent;
// Facebook mobile app's integrated browser adds a bunch of strings that
// match everything. Strip it out if it exists.
var tmp = ua.split('[FBAN');
if (typeof tmp[1] !== 'undefined') {
ua = tmp[0];
}
// Twitter mobile app's integrated browser on iPad adds a "Twitter for
// iPhone" string. Same probable happens on other tablet platforms.
// This will confuse detection so strip it out if it exists.
tmp = ua.split('Twitter');
if (typeof tmp[1] !== 'undefined') {
ua = tmp[0];
}
this.apple = {
phone: match(apple_phone, ua),
ipod: match(apple_ipod, ua),
tablet: !match(apple_phone, ua) && match(apple_tablet, ua),
device: match(apple_phone, ua) || match(apple_ipod, ua) || match(apple_tablet, ua)
};
this.amazon = {
phone: match(amazon_phone, ua),
tablet: !match(amazon_phone, ua) && match(amazon_tablet, ua),
device: match(amazon_phone, ua) || match(amazon_tablet, ua)
};
this.android = {
phone: match(amazon_phone, ua) || match(android_phone, ua),
tablet: !match(amazon_phone, ua) && !match(android_phone, ua) && (match(amazon_tablet, ua) || match(android_tablet, ua)),
device: match(amazon_phone, ua) || match(amazon_tablet, ua) || match(android_phone, ua) || match(android_tablet, ua)
};
this.windows = {
phone: match(windows_phone, ua),
tablet: match(windows_tablet, ua),
device: match(windows_phone, ua) || match(windows_tablet, ua)
};
this.other = {
blackberry: match(other_blackberry, ua),
blackberry10: match(other_blackberry_10, ua),
opera: match(other_opera, ua),
firefox: match(other_firefox, ua),
chrome: match(other_chrome, ua),
device: match(other_blackberry, ua) || match(other_blackberry_10, ua) || match(other_opera, ua) || match(other_firefox, ua) || match(other_chrome, ua)
};
this.seven_inch = match(seven_inch, ua);
this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch;
// excludes 'other' devices and ipods, targeting touchscreen phones
this.phone = this.apple.phone || this.android.phone || this.windows.phone;
// excludes 7 inch devices, classifying as phone or tablet is left to the user
this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet;
if (typeof window === 'undefined') {
return this;
}
};
var instantiate = function() {
var IM = new IsMobileClass();
IM.Class = IsMobileClass;
return IM;
};
if (typeof module !== 'undefined' && module.exports && typeof window === 'undefined') {
//node
module.exports = IsMobileClass;
} else if (typeof module !== 'undefined' && module.exports && typeof window !== 'undefined') {
//browserify
module.exports = instantiate();
} else if (typeof define === 'function' && define.amd) {
//AMD
define('isMobile', [], global.isMobile = instantiate());
} else {
global.isMobile = instantiate();
}
})(this);

View File

@@ -0,0 +1 @@
!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/Windows Phone/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");if("undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window)return this},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(this);

28
Skills/@be/be/node_modules/ismobilejs/package.json generated vendored Normal file
View File

@@ -0,0 +1,28 @@
{
"name": "ismobilejs",
"version": "0.4.1",
"description": "A simple JS library that detects mobile devices.",
"keywords": [
"ismobile",
"device detection",
"mobile devices",
"useragent"
],
"homepage": "https://github.com/kaimallea/isMobile",
"license": "CC0-1.0",
"author": {
"name": "Kai Mallea",
"email": "kmallea@gmail.com"
},
"repository": {
"type": "git",
"url": "https://github.com/kaimallea/isMobile.git"
},
"main": "./isMobile",
"devDependencies": {
"grunt": "0.4.x",
"grunt-contrib-jshint": "0.11.x",
"grunt-contrib-uglify": "0.9.x",
"grunt-contrib-jasmine": "0.8.x"
}
}

View File

@@ -0,0 +1,527 @@
describe("Amazon", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("Amazon Kindle Fire User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFOT Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HD User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFTT Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HD 8.9inch User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFJWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HD 8.9inch 4G User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFJWA Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HD 7inch (3rd Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFSOWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HDX 7inch (3rd Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFTHWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HDX 7 (3rd Generation) 4G User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFTHWA Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HDX 8.9inch (3rd Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFAPWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Kindle Fire HDX 8.9inch (3rd Generation) 4G User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFAPWA Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Fire HD 6 (4th Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFARWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Fire HD 7 (4th Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFASWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Fire HDX 8.9 (4th Generation) User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFSAWI Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Fire HDX 8.9 (4th Generation) 4G User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; KFSAWA Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Amazon Phone", function() {
expect(mobile.amazon.phone).not.toBe(true);
});
it("should be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Amazon Fire Phone User Agent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; U; Android android-version; locale; SD4930UR Build/product-build) AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version";
mobile = new isMobile.Class(userAgent);
});
it("should be an Amazon Phone", function() {
expect(mobile.amazon.phone).toBe(true);
});
it("should not be an Amazon Tablet", function() {
expect(mobile.amazon.tablet).not.toBe(true);
});
it("should be an Amazon device", function() {
expect(mobile.amazon.device).toBe(true);
});
it("should be an Android Phone", function() {
expect(mobile.android.phone).toBe(true);
});
it("should not be an Android Tablet", function() {
expect(mobile.android.tablet).not.toBe(true);
});
it("should be matched as Any Phone", function() {
expect(mobile.phone).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
});

View File

@@ -0,0 +1,59 @@
describe("Android", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("Phone UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>";
mobile = new isMobile.Class(userAgent);
});
it("should be an Android Phone", function() {
expect(mobile.android.phone).toBe(true);
});
it("should not be an Android Tablet", function() {
expect(mobile.android.tablet).not.toBe(true);
});
it("should be matched as Any Phone", function() {
expect(mobile.phone).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
describe("Tablet UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev>(KHTML, like Gecko) Chrome/<Chrome Rev> Safari/<WebKit Rev>";
mobile = new isMobile.Class(userAgent);
});
it("should not be an Android Phone", function() {
expect(mobile.android.phone).not.toBe(true);
});
it("should be an Android Tablet", function() {
expect(mobile.android.tablet).toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
});
});

View File

@@ -0,0 +1,193 @@
describe("Apple", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("iPhone UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3";
mobile = new isMobile.Class(userAgent);
});
it("should be an iPhone", function() {
expect(mobile.apple.phone).toBe(true);
});
it("should not be an iPad", function() {
expect(mobile.apple.tablet).not.toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be matched as Any Phone", function() {
expect(mobile.phone).toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("iPad UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10";
mobile = new isMobile.Class(userAgent);
});
it("should not be an iPhone", function() {
expect(mobile.apple.phone).not.toBe(true);
});
it("should be an iPad", function() {
expect(mobile.apple.tablet).toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("iPod UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3";
mobile = new isMobile.Class(userAgent);
});
it("should not be an iPhone", function() {
expect(mobile.apple.phone).not.toBe(true);
});
it("should not be an iPad", function() {
expect(mobile.apple.tablet).not.toBe(true);
});
it("should be an iPod", function() {
expect(mobile.apple.ipod).toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("Facebook iPhone App UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPhone; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B410 [FBAN/FBIOS;FBAV/20.1.0.15.10;FBBV/5758778;FBDV/iPad5,4;FBMD/iPad;FBSN/iPhone OS;FBSV/8.1;FBSS/2; FBCR/;FBID/tablet;FBLC/fi_FI;FBOP/1]";
mobile = new isMobile.Class(userAgent);
});
it("should be an iPhone", function() {
expect(mobile.apple.phone).toBe(true);
});
it("should not be an iPad", function() {
expect(mobile.apple.tablet).not.toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("Facebook iPad App UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B410 [FBAN/FBIOS;FBAV/20.1.0.15.10;FBBV/5758778;FBDV/iPad5,4;FBMD/iPad;FBSN/iPhone OS;FBSV/8.1;FBSS/2; FBCR/;FBID/tablet;FBLC/fi_FI;FBOP/1]";
mobile = new isMobile.Class(userAgent);
});
it("should not be an iPhone", function() {
expect(mobile.apple.phone).not.toBe(true);
});
it("should be an iPad", function() {
expect(mobile.apple.tablet).toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("Twitter iPhone App UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 Twitter for iPhone";
mobile = new isMobile.Class(userAgent);
});
it("should be an iPhone", function() {
expect(mobile.apple.phone).toBe(true);
});
it("should not be an iPad", function() {
expect(mobile.apple.tablet).not.toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
describe("Twitter iPad App UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (iPad; CPU OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 Twitter for iPhone";
mobile = new isMobile.Class(userAgent);
});
it("should not be an iPhone", function() {
expect(mobile.apple.phone).not.toBe(true);
});
it("should be an iPad", function() {
expect(mobile.apple.tablet).toBe(true);
});
it("should not be an iPod", function() {
expect(mobile.apple.ipod).not.toBe(true);
});
it("should be an Apple device", function() {
expect(mobile.apple.device).toBe(true);
});
});
});

View File

@@ -0,0 +1,36 @@
describe("Desktop", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("Chrome", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19";
mobile = new isMobile.Class(userAgent);
});
it("should not be a mobile device", function() {
expect(mobile.any).not.toBe(true);
});
});
describe("Safari", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10";
mobile = new isMobile.Class(userAgent);
});
it("should not be a mobile device", function() {
expect(mobile.any).not.toBe(true);
});
});
});

View File

@@ -0,0 +1,163 @@
describe("Other Mobile Devices", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("BlackBerry 10", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1791 Mobile Safari/537.35+";
mobile = new isMobile.Class(userAgent);
});
it("should not be a Chrome device", function() {
expect(mobile.other.chrome).not.toBe(true);
});
it("should be a BlackBerry 10 device", function() {
expect(mobile.other.blackberry10).toBe(true);
});
it("should not be a BlackBerry device", function() {
expect(mobile.other.blackberry).not.toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("BlackBerry", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+";
mobile = new isMobile.Class(userAgent);
});
it("should not be a Chrome device", function() {
expect(mobile.other.chrome).not.toBe(true);
});
it("should be a BlackBerry device", function() {
expect(mobile.other.blackberry).toBe(true);
});
it("should not be a BlackBerry 10 device", function() {
expect(mobile.other.blackberry10).not.toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("Opera Mini", function() {
beforeEach(function() {
userAgent = "Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (S60; SymbOS; Opera Mobi/23.348; U; en) Presto/2.5.25 Version/10.54";
mobile = new isMobile.Class(userAgent);
});
it("should not be a Chrome device", function() {
expect(mobile.other.chrome).not.toBe(true);
});
it("should be an Opera Mini device", function() {
expect(mobile.other.opera).toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("Firefox OS", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0";
mobile = new isMobile.Class(userAgent);
});
it("should not be a Chrome device", function() {
expect(mobile.other.chrome).not.toBe(true);
});
it("should be a Firefox OS device", function() {
expect(mobile.other.firefox).toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("Chrome", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; Android 4.4.4; en-us; Nexus 4 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Mobile Safari/537.36";
mobile = new isMobile.Class(userAgent);
});
it("should be a Chrome device", function() {
expect(mobile.other.chrome).toBe(true);
});
it("should be an Android device", function() {
expect(mobile.android.device).toBe(true);
});
it("should not be a Firefox OS device", function() {
expect(mobile.other.firefox).toBe(false);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
});

View File

@@ -0,0 +1,31 @@
describe("Seven Inch", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("Nexus 7", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19";
mobile = new isMobile.Class(userAgent);
});
it("should be a Seven Inch device", function() {
expect(mobile.seven_inch).toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
});

View File

@@ -0,0 +1,105 @@
describe("Windows", function(){
var mobile;
var userAgent;
beforeEach(function() {
mobile = null;
userAgent = null;
});
describe("Windows Phone UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)";
mobile = new isMobile.Class(userAgent);
});
it("should be a Windows Phone device", function() {
expect(mobile.windows.phone).toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be matched as Any Phone", function() {
expect(mobile.phone).toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("Windows Tablet UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)";
mobile = new isMobile.Class(userAgent);
});
it("should be a Windows Tablet device", function() {
expect(mobile.windows.tablet).toBe(true);
});
it("should not be a Windows Phone device", function() {
expect(mobile.other.windows).not.toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should be matched as Any Tablet", function() {
expect(mobile.tablet).toBe(true);
});
it("should be a mobile device", function() {
expect(mobile.any).toBe(true);
});
});
describe("Windows Touch Laptop UserAgent", function() {
beforeEach(function() {
userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; MAGWJS; rv:11.0) like Gecko";
mobile = new isMobile.Class(userAgent);
});
it("should not be a Windows Tablet device", function() {
expect(mobile.windows.tablet).not.toBe(true);
});
it("should not be a Windows Phone device", function() {
expect(mobile.other.windows).not.toBe(true);
});
it("should not be an Android device", function() {
expect(mobile.android.device).not.toBe(true);
});
it("should not be an Apple device", function() {
expect(mobile.apple.device).not.toBe(true);
});
it("should not be matched as Any Tablet", function() {
expect(mobile.tablet).not.toBe(true);
});
it("should not be a mobile device", function() {
expect(mobile.any).not.toBe(true);
});
});
});