From 5bfd0daf7535d87562a4c6b8e182a5ae000962f8 Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 23 Aug 2012 16:08:10 +0800 Subject: [PATCH] add testcase --- .../druid/support/http/stat/WebAppStat.java | 46 +- .../bvt/support/http/UserAgentBotStat.java | 249 ++++++ .../bvt/support/http/UserAgentMacTest.java | 32 + .../druid/bvt/support/http/UserAgentTest.java | 788 ++++++++++++++++++ .../bvt/support/http/UserAgentWindows.java | 733 ++++++++++++++++ 5 files changed, 1825 insertions(+), 23 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/support/http/UserAgentBotStat.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/http/UserAgentMacTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/http/UserAgentTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/http/UserAgentWindows.java diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java index db0b40d13e..ffc80cb1d2 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java @@ -759,95 +759,95 @@ public class WebAppStat { return false; } - public long getOsMacOSXCount() { + public long getOSMacOSXCount() { return osMacOSXCount.get(); } - public long getOsWindowsCount() { + public long getOSWindowsCount() { return osWindowsCount.get(); } - public long getOsLinuxCount() { + public long getOSLinuxCount() { return osLinuxCount.get(); } - public long getOsSymbianCount() { + public long getOSSymbianCount() { return osSymbianCount.get(); } - public long getOsFreeBSDCount() { + public long getOSFreeBSDCount() { return osFreeBSDCount.get(); } - public long getOsOpenBSDCount() { + public long getOSOpenBSDCount() { return osOpenBSDCount.get(); } - public long getOsAndroidCount() { + public long getOSAndroidCount() { return osAndroidCount.get(); } - public long getOsWindows98Count() { + public long getOSWindows98Count() { return osWindows98Count.get(); } - public long getOsWindowsXPCount() { + public long getOSWindowsXPCount() { return osWindowsXPCount.get(); } - public long getOsWindows2000Count() { + public long getOSWindows2000Count() { return osWindows2000Count.get(); } - public long getOsWindowsVistaCount() { + public long getOSWindowsVistaCount() { return osWindowsVistaCount.get(); } - public long getOsWindows7Count() { + public long getOSWindows7Count() { return osWindows7Count.get(); } - public long getOsAndroid15Count() { + public long getOSAndroid15Count() { return osAndroid15Count.get(); } - public long getOsAndroid16Count() { + public long getOSAndroid16Count() { return osAndroid16Count.get(); } - public long getOsAndroid20Count() { + public long getOSAndroid20Count() { return osAndroid20Count.get(); } - public long getOsAndroid21Count() { + public long getOSAndroid21Count() { return osAndroid21Count.get(); } - public long getOsAndroid22Count() { + public long getOSAndroid22Count() { return osAndroid22Count.get(); } - public long getOsAndroid23Count() { + public long getOSAndroid23Count() { return osAndroid23Count.get(); } - public long getOsAndroid30Count() { + public long getOSAndroid30Count() { return osAndroid30Count.get(); } - public long getOsAndroid31Count() { + public long getOSAndroid31Count() { return osAndroid31Count.get(); } - public long getOsAndroid32Count() { + public long getOSAndroid32Count() { return osAndroid32Count.get(); } - public long getOsAndroid40Count() { + public long getOSAndroid40Count() { return osAndroid40Count.get(); } - public long getOsLinuxUbuntuCount() { + public long getOSLinuxUbuntuCount() { return osLinuxUbuntuCount.get(); } diff --git a/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentBotStat.java b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentBotStat.java new file mode 100644 index 0000000000..bbda99169b --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentBotStat.java @@ -0,0 +1,249 @@ +package com.alibaba.druid.bvt.support.http; + + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.support.http.stat.WebAppStat; + +public class UserAgentBotStat extends TestCase { + + public void test_youdao() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotYoudaoCount()); + } + + public void test_bing() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotBingCount()); + } + + public void test_google() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotGoogleCount()); + } + + public void test_baidu() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotBaiduCount()); + } + + public void test_soso() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Sosospider+(+http://help.soso.com/webspider.htm)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotSosoCount()); + } + + public void test_msn() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("msnbot/2.0b (+http://search.msn.com/msnbot.htm)._"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotMsnCount()); + } + + public void test_sogou() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotSogouCount()); + } + + public void test_yahoo() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)"); + + Assert.assertEquals(1, stat.getBotCount()); + Assert.assertEquals(1, stat.getBotYahooCount()); + } + + public void test_unkownBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 ()"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Mail.RU/2.0)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot2() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; MJ12bot/v1.4.2; http://www.majestic12.co.uk/bot.php?+)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot3() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("-"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot4() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("\"Mozilla/5.0"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot5() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot6() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot7() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Crawl/0.01 libcrawl/0.3"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_unkownBot8() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("SkimBot/1.0 (www.skimlinks.com )"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_huawei() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("HuaweiSymantecSpider/1.0+DSE-support@huaweisymantec.com+(compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR ; http://www.huaweisymantec.com/en/IRL/spider)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_Yeti() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_KaloogaBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; KaloogaBot; http://kalooga.com/crawler)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_YandexBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_Ezooms() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_Exabot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_mahonie() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("mahonie, neofonie search:robot/search:robot/0.0.1 (This is the MIA Bot - crawling for mia research project. If you feel unhappy and do not want to be visited by our crawler send an email to spider@neofonie.de; http://spider.neofonie.de; spider@neofonie.de)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_AhrefsBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; AhrefsBot/3.0; +http://ahrefs.com/robot/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_Crawler() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; SISTRIX Crawler; http://crawler.sistrix.net/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_yodao() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_BeetleBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; BeetleBot; )"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_findlinks() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("findlinks/2.1.5 (+http://wortschatz.uni-leipzig.de/findlinks/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_Updownerbot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Updownerbot (+http://www.updowner.com/bot)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_archiveOrgBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_aiHitBot() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; aiHitBot/1.1; +http://www.aihit.com/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } + + public void test_DoCoMo() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("DoCoMo/2.0 P900i(c100;TB;W24H11) (compatible; ichiro/mobile goo; +http://search.goo.ne.jp/option/use/sub4/sub4-1/)"); + + Assert.assertEquals(1, stat.getBotCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentMacTest.java b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentMacTest.java new file mode 100644 index 0000000000..0ef024227d --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentMacTest.java @@ -0,0 +1,32 @@ +package com.alibaba.druid.bvt.support.http; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.support.http.stat.WebAppStat; + + +public class UserAgentMacTest extends TestCase { + + public void test_mac_firefox() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6"); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentTest.java b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentTest.java new file mode 100644 index 0000000000..1622f184d6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentTest.java @@ -0,0 +1,788 @@ +package com.alibaba.druid.bvt.support.http; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.support.http.stat.WebAppStat; + +public class UserAgentTest extends TestCase { + + public void test_agent_ie10() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE10Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie9() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE9Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie9_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; 360SE)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE9Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie9_x86() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE9Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie8() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MAXTHON 2.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie8_x1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie8_x2() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; GoogleToolbar 7.2.2427.2330; Windows XP 5.1; MSIE 8.0.6001.18702)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie8_x3() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; GoogleToolbar 7.3.2710.138; Windows 6.1; MSIE 8.0.7601.17514)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie7() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; MAXTHON 2.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE7Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie7_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; SE 2.X MetaSr 1.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE7Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie6() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; MAXTHON 2.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie6_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie6_2() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("User-Agent: Mozilla/5.0 (compatible; MSIE 6.0;Windows XP)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ie5() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_ipad() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) "); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getDeviceIpadCount()); + } + + public void test_agent_firefox() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(1, stat.getOSLinuxCount()); + } + + public void test_agent_chrome() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + } + + public void test_agent_opera() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(1, stat.getBrowserOperaCount()); + } + + public void test_agent_android22() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + } + + public void test_agent_other() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("SEC-schx199 UP.Browser/4.1.26l UP.Link/5.1.2.9"); + Assert.assertEquals(0, stat.getBrowserIECount()); + } + + public void test_agent_other_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mitsu/1.2.B (MT560) MMP/1.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + } + + public void test_0() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Science Traveller International 1X/1.0"); + stat.computeUserAgent("Mozilla/3.0 (compatible)"); + stat.computeUserAgent("amaya/9.52 libwww/5.4.0"); + stat.computeUserAgent("amaya/9.51 libwww/5.4.0"); + stat.computeUserAgent("amaya/9.1 libwww/5.4.0"); + stat.computeUserAgent("amaya/6.2 libwww/5.3.1"); + stat.computeUserAgent("AmigaVoyager/3.4.4 (MorphOS/PPC native)"); + stat.computeUserAgent("xChaos_Arachne/5.1.89;GPL,386+"); + + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Ubuntu APT-HTTP/1.3 (0.7.23.1ubuntu2)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_2() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Ubuntu APT-HTTP/1.3"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_3() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(1, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_firefox_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.14) Gecko/20080409 Camino/1.6 (like Firefox/2.0.0.14)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_firefox_2() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.11) Gecko/20080528 Epiphany/2.22 Firefox/3.0"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_firefox_3() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.14) Gecko/20080821 Firefox/2.0.0.14"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(1, stat.getOSOpenBSDCount()); + } + + public void test_firefox_4() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20041002 Firefox/0.10.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_firefox_5() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_firefox_6() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + } + + public void test_android_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid22Count()); + } + + public void test_android_15() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 1.5; zh-cn; ME600 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid15Count()); + } + + public void test_android_16() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid16Count()); + } + + public void test_android_21() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid21Count()); + } + + public void test_android_23() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 2.3.3; zh-cn; HTC Incredible S Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid23Count()); + } + + public void test_android_4() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(1, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(1, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(1, stat.getOSAndroidCount()); + Assert.assertEquals(1, stat.getOSAndroid40Count()); + } + + public void test_safari() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(0, stat.getOSAndroidCount()); + Assert.assertEquals(0, stat.getOSAndroid21Count()); + } + + public void test_iphone() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(1, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(1, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(0, stat.getOSAndroidCount()); + Assert.assertEquals(0, stat.getOSAndroid21Count()); + } + + public void test_ipad() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(1, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(1, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(0, stat.getOSAndroidCount()); + Assert.assertEquals(0, stat.getOSAndroid21Count()); + } + + public void test_opera() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Opera/9.00 (Windows NT 4.0; U; en)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(1, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(0, stat.getOSAndroidCount()); + Assert.assertEquals(0, stat.getOSAndroid21Count()); + } + + public void test_opera_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + stat.computeUserAgent("Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(1, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(1, stat.getOSMacOSXCount()); + Assert.assertEquals(0, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + Assert.assertEquals(0, stat.getOSAndroidCount()); + Assert.assertEquals(0, stat.getOSAndroid21Count()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentWindows.java b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentWindows.java new file mode 100644 index 0000000000..5d3531930f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/http/UserAgentWindows.java @@ -0,0 +1,733 @@ +package com.alibaba.druid.bvt.support.http; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.support.http.stat.WebAppStat; + +public class UserAgentWindows extends TestCase { + + public void test_windows98() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(1, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(1, stat.getOSWindows98Count()); + } + + public void test_windows98_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; AT&T CSM6.0; FunWebProducts)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(1, stat.getOSWindows98Count()); + } + + public void test_windowsXP() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_IE6() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("User-Agent: Mozilla/5.0 (compatible; MSIE 6.0;Windows XP)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_IE6_1() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_IE7() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) (none))"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_IE8() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_IE9() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; WOW64; Trident/4.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windowsXP_firefox() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsXPCount()); + } + + public void test_windows2000_IE5() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(1, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_IE6() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(1, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_IE7() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_IE8() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; 360SE)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_IE9() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.0; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; 360SE)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(1, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_firefox() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_firefox11() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows NT 5.0; rv:11.0) Gecko/20100101 Firefox/11.0"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windows2000_chrome() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows2000Count()); + } + + public void test_windowsVista() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(1, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindowsVistaCount()); + } + + public void test_windows7() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; SE 2.X MetaSr 1.0)"); + Assert.assertEquals(1, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(1, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows7Count()); + } + + public void test_windows7_firefox() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(0, stat.getBrowserChromeCount()); + Assert.assertEquals(1, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows7Count()); + } + + public void test_windows7_chrome() throws Exception { + WebAppStat stat = new WebAppStat(""); + + stat.computeUserAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"); + Assert.assertEquals(0, stat.getBrowserIECount()); + Assert.assertEquals(1, stat.getBrowserChromeCount()); + Assert.assertEquals(0, stat.getBrowserFirefoxCount()); + Assert.assertEquals(0, stat.getBrowserIE10Count()); + Assert.assertEquals(0, stat.getBrowserIE5Count()); + Assert.assertEquals(0, stat.getBrowserIE6Count()); + Assert.assertEquals(0, stat.getBrowserIE7Count()); + Assert.assertEquals(0, stat.getBrowserIE8Count()); + Assert.assertEquals(0, stat.getBrowserIE9Count()); + Assert.assertEquals(0, stat.getBrowserOperaCount()); + Assert.assertEquals(0, stat.getBrowserSafariCount()); + + Assert.assertEquals(0, stat.getDeviceAndroidCount()); + Assert.assertEquals(0, stat.getDeviceIpadCount()); + Assert.assertEquals(0, stat.getDeviceIphoneCount()); + Assert.assertEquals(0, stat.getDeviceWindowsPhoneCount()); + + Assert.assertEquals(0, stat.getOSLinuxCount()); + Assert.assertEquals(0, stat.getOSLinuxUbuntuCount()); + Assert.assertEquals(0, stat.getOSMacOSXCount()); + Assert.assertEquals(1, stat.getOSWindowsCount()); + Assert.assertEquals(0, stat.getOSSymbianCount()); + Assert.assertEquals(0, stat.getOSFreeBSDCount()); + Assert.assertEquals(0, stat.getOSOpenBSDCount()); + + Assert.assertEquals(0, stat.getOSWindows98Count()); + Assert.assertEquals(1, stat.getOSWindows7Count()); + } +}