123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- // Copyright 2013 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS-IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /**
- * @fileoverview Unit tests for goog.labs.userAgent.browser.
- */
- goog.provide('goog.labs.userAgent.browserTest');
- goog.require('goog.labs.userAgent.browser');
- goog.require('goog.labs.userAgent.testAgents');
- goog.require('goog.labs.userAgent.util');
- goog.require('goog.object');
- goog.require('goog.testing.jsunit');
- goog.setTestOnly('goog.labs.userAgent.browserTest');
- /*
- * Map of browser name to checking method.
- * Used by assertBrowser() to verify that only one is true at a time.
- */
- var Browser = {
- ANDROID_BROWSER: goog.labs.userAgent.browser.isAndroidBrowser,
- CHROME: goog.labs.userAgent.browser.isChrome,
- COAST: goog.labs.userAgent.browser.isCoast,
- FIREFOX: goog.labs.userAgent.browser.isFirefox,
- OPERA: goog.labs.userAgent.browser.isOpera,
- IE: goog.labs.userAgent.browser.isIE,
- IOS_WEBVIEW: goog.labs.userAgent.browser.isIosWebview,
- SAFARI: goog.labs.userAgent.browser.isSafari,
- SILK: goog.labs.userAgent.browser.isSilk,
- EDGE: goog.labs.userAgent.browser.isEdge
- };
- /*
- * Assert that the given browser is true and the others are false.
- */
- function assertBrowser(browser) {
- assertTrue(
- 'Supplied argument "browser" not in Browser object',
- goog.object.containsValue(Browser, browser));
- // Verify that the method is true for the given browser
- // and false for all others.
- goog.object.forEach(Browser, function(f, name) {
- if (f == browser) {
- assertTrue('Value for browser ' + name, f());
- } else {
- assertFalse('Value for browser ' + name, f());
- }
- });
- }
- function setUp() {
- goog.labs.userAgent.util.setUserAgent(null);
- }
- function testOpera10() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.OPERA_10);
- assertBrowser(Browser.OPERA);
- assertVersion('10.00');
- assertVersionBetween('10.00', '10.10');
- }
- function testOperaMac() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.OPERA_MAC);
- assertBrowser(Browser.OPERA);
- assertVersion('11.52');
- assertVersionBetween('11.50', '12.00');
- }
- function testOperaLinux() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.OPERA_LINUX);
- assertBrowser(Browser.OPERA);
- assertVersion('11.50');
- assertVersionBetween('11.00', '12.00');
- }
- function testOpera15() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.OPERA_15);
- // Opera 15 is Chromium 28. We treat all Chromium variants as Chrome.
- assertBrowser(Browser.CHROME);
- assertVersion('28.0.1500.52');
- assertVersionBetween('28.00', '29.00');
- }
- function testOperaMini() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.OPERA_MINI);
- assertBrowser(Browser.OPERA);
- assertVersion('11.10');
- assertVersionBetween('11.00', '12.00');
- }
- function testIE6() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_6);
- assertBrowser(Browser.IE);
- assertVersion('6.0');
- assertVersionBetween('5.0', '7.0');
- }
- function testIE7() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_7);
- assertBrowser(Browser.IE);
- assertVersion('7.0');
- }
- function testIE8() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_8);
- assertBrowser(Browser.IE);
- assertVersion('8.0');
- assertVersionBetween('7.0', '9.0');
- }
- function testIE8Compatibility() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_8_COMPATIBILITY);
- assertBrowser(Browser.IE);
- assertVersion('8.0');
- }
- function testIE9() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_9);
- assertBrowser(Browser.IE);
- assertVersion('9.0');
- assertVersionBetween('8.0', '10.0');
- }
- function testIE9Compatibility() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_9_COMPATIBILITY);
- assertBrowser(Browser.IE);
- assertVersion('9.0');
- }
- function testIE10() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_10);
- assertBrowser(Browser.IE);
- assertVersion('10.0');
- assertVersionBetween('10.0', '11.0');
- }
- function testIE10Compatibility() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_10_COMPATIBILITY);
- assertBrowser(Browser.IE);
- assertVersion('10.0');
- }
- function testIE10Mobile() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_10_MOBILE);
- assertBrowser(Browser.IE);
- assertVersion('10.0');
- }
- function testIE11() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IE_11);
- assertBrowser(Browser.IE);
- assertVersion('11.0');
- assertVersionBetween('10.0', '12.0');
- }
- function testIE11CompatibilityMSIE7() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_11_COMPATIBILITY_MSIE_7);
- assertBrowser(Browser.IE);
- assertVersion('11.0');
- }
- function testIE11CompatibilityMSIE9() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.IE_11_COMPATIBILITY_MSIE_9);
- assertBrowser(Browser.IE);
- assertVersion('11.0');
- }
- function testEdge120() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.EDGE_12_0);
- assertBrowser(Browser.EDGE);
- assertVersion('12.0');
- assertVersionBetween('11.0', '13.0');
- }
- function testEdge() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.EDGE_12_9600);
- assertBrowser(Browser.EDGE);
- assertVersion('12.9600');
- assertVersionBetween('11.0', '13.0');
- }
- function testFirefox19() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.FIREFOX_19);
- assertBrowser(Browser.FIREFOX);
- assertVersion('19.0');
- assertVersionBetween('18.0', '20.0');
- }
- function testFirefoxWindows() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.FIREFOX_WINDOWS);
- assertBrowser(Browser.FIREFOX);
- assertVersion('14.0.1');
- assertVersionBetween('14.0', '15.0');
- }
- function testFirefoxLinux() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.FIREFOX_LINUX);
- assertBrowser(Browser.FIREFOX);
- assertTrue(goog.labs.userAgent.browser.isFirefox());
- assertVersion('15.0.1');
- }
- function testChromeAndroid() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.CHROME_ANDROID);
- assertBrowser(Browser.CHROME);
- assertTrue(goog.labs.userAgent.browser.isChrome());
- assertVersion('18.0.1025.133');
- assertVersionBetween('18.0', '19.0');
- assertVersionBetween('17.0', '18.1');
- }
- function testChromeIphone() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.CHROME_IPHONE);
- assertBrowser(Browser.CHROME);
- assertTrue(goog.labs.userAgent.browser.isChrome());
- assertVersion('22.0.1194.0');
- assertVersionBetween('22.0', '23.0');
- assertVersionBetween('22.0', '22.10');
- }
- function testChromeIpad() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.CHROME_IPAD);
- assertBrowser(Browser.CHROME);
- assertTrue(goog.labs.userAgent.browser.isChrome());
- assertVersion('32.0.1700.20');
- assertVersionBetween('32.0', '33.0');
- assertVersionBetween('32.0', '32.10');
- }
- function testChromeMac() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.CHROME_MAC);
- assertBrowser(Browser.CHROME);
- assertTrue(goog.labs.userAgent.browser.isChrome());
- assertVersion('24.0.1309.0');
- assertVersionBetween('24.0', '25.0');
- assertVersionBetween('24.0', '24.10');
- }
- function testSafariIpad() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.IPAD_6);
- assertBrowser(Browser.SAFARI);
- assertTrue(goog.labs.userAgent.browser.isSafari());
- assertVersion('6.0');
- assertVersionBetween('5.1', '7.0');
- }
- function testSafari6() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.SAFARI_6);
- assertBrowser(Browser.SAFARI);
- assertTrue(goog.labs.userAgent.browser.isSafari());
- assertVersion('6.0');
- assertVersionBetween('6.0', '7.0');
- }
- function testSafariIphone() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.SAFARI_IPHONE_6);
- assertBrowser(Browser.SAFARI);
- assertTrue(goog.labs.userAgent.browser.isSafari());
- assertVersion('6.0');
- assertVersionBetween('5.0', '7.0');
- }
- function testCoast() {
- goog.labs.userAgent.util.setUserAgent(goog.labs.userAgent.testAgents.COAST);
- assertBrowser(Browser.COAST);
- }
- function testWebviewIOS() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.WEBVIEW_IPHONE);
- assertBrowser(Browser.IOS_WEBVIEW);
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.WEBVIEW_IPAD);
- assertBrowser(Browser.IOS_WEBVIEW);
- }
- function testAndroidBrowser235() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.ANDROID_BROWSER_235);
- assertBrowser(Browser.ANDROID_BROWSER);
- assertVersion('4.0');
- assertVersionBetween('3.0', '5.0');
- }
- function testAndroidBrowser403() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.ANDROID_BROWSER_403);
- assertBrowser(Browser.ANDROID_BROWSER);
- assertVersion('4.0');
- assertVersionBetween('3.0', '5.0');
- }
- function testAndroidBrowser233() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.ANDROID_BROWSER_233);
- assertBrowser(Browser.ANDROID_BROWSER);
- assertVersion('4.0');
- assertVersionBetween('3.0', '5.0');
- }
- function testAndroidWebView411() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.ANDROID_WEB_VIEW_4_1_1);
- assertBrowser(Browser.ANDROID_BROWSER);
- assertVersion('4.0');
- assertVersionBetween('3.0', '5.0');
- }
- function testAndroidWebView44() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.ANDROID_WEB_VIEW_4_4);
- assertBrowser(Browser.CHROME);
- assertVersion('30.0.0.0');
- assertVersionBetween('29.0', '31.0');
- }
- function testSilk() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.KINDLE_FIRE);
- assertBrowser(Browser.SILK);
- assertVersion('2.1');
- }
- function testFirefoxOnAndroidTablet() {
- goog.labs.userAgent.util.setUserAgent(
- goog.labs.userAgent.testAgents.FIREFOX_ANDROID_TABLET);
- assertBrowser(Browser.FIREFOX);
- assertVersion('28.0');
- assertVersionBetween('27.0', '29.0');
- }
- function assertVersion(version) {
- assertEquals(version, goog.labs.userAgent.browser.getVersion());
- }
- function assertVersionBetween(lowVersion, highVersion) {
- assertTrue(goog.labs.userAgent.browser.isVersionOrHigher(lowVersion));
- assertFalse(goog.labs.userAgent.browser.isVersionOrHigher(highVersion));
- }
|