You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

VBrowserDetailsUserAgentParserTest.java 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. package com.vaadin.client;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertFalse;
  4. import static org.junit.Assert.assertTrue;
  5. import org.junit.Assert;
  6. import org.junit.Test;
  7. import com.vaadin.shared.VBrowserDetails;
  8. public class VBrowserDetailsUserAgentParserTest {
  9. private static final String FIREFOX30_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6";
  10. private static final String FIREFOX30_LINUX = "Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12";
  11. private static final String FIREFOX33_ANDROID = "Mozilla/5.0 (Android; Tablet; rv:33.0) Gecko/33.0 Firefox/33.0";
  12. private static final String FIREFOX35_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729) FirePHP/0.4";
  13. private static final String FIREFOX36_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)";
  14. private static final String FIREFOX36B_MAC = "UAString mozilla/5.0 (macintosh; u; intel mac os x 10.6; en-us; rv:1.9.2) gecko/20100115 firefox/3.6";
  15. private static final String FIREFOX_30B5_MAC = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5";
  16. private static final String FIREFOX_40B7_WIN = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b7) Gecko/20100101 Firefox/4.0b7";
  17. private static final String FIREFOX_40B11_WIN = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b11) Gecko/20100101 Firefox/4.0b11";
  18. private static final String FIREFOX_SUPPORTED = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Firefox/45.0";
  19. private static final String KONQUEROR_LINUX = "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)";
  20. private static final String IE11_WINDOWS_7 = "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; rv:11.0) like Gecko";
  21. private static final String IE11_WINDOWS_7_COMPATIBILITY_VIEW_IE7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)";
  22. private static final String IE11_WINDOWS_10_COMPATIBILITY_VIEW_IE7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)";
  23. private static final String IE11_INITIAL_WINDOWS_10_COMPATIBILITY_VIEW_IE7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E)";
  24. private static final String IE11_WINDOWS_PHONE_8_1_UPDATE = "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920) Like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537";
  25. // "Version/" was added in 10.00
  26. private static final String OPERA964_WINDOWS = "Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1";
  27. private static final String OPERA1010_WINDOWS = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10";
  28. private static final String OPERA1050_WINDOWS = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.22 Version/10.50";
  29. private static final String CHROME3_MAC = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0";
  30. private static final String CHROME4_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5";
  31. private static final String SAFARI3_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29";
  32. private static final String SAFARI4_MAC = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7";
  33. private static final String IPHONE_IOS_5_1 = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3";
  34. private static final String IPHONE_IOS_4_0 = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7";
  35. private static final String IPAD_IOS_4_3_1 = "Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5";
  36. // application on the home screen, without Safari in user agent
  37. private static final String IPHONE_IOS_6_1_HOMESCREEN_SIMULATOR = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B141";
  38. private static final String ANDROID_HTC_2_1 = "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; ADR6300 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17";
  39. private static final String ANDROID_GOOGLE_NEXUS_2_2 = "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";
  40. private static final String ANDROID_MOTOROLA_3_0 = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13";
  41. private static final String ANDROID_GALAXY_NEXUS_4_0_4_CHROME = "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19";
  42. private static final String EDGE_WINDOWS_10 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240";
  43. private static final String PHANTOMJS_211_MAC = "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1";
  44. private static final String CHROME_57_ON_IOS_10_3_1 = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/57.0.2987.137 Mobile/14E304 Safari/602.1";
  45. private static final String CHROME_40_ON_CHROMEOS = "Mozilla/5.0 (X11; CrOS x86_64 6457.31.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.38 Safari/537.36";
  46. @Test
  47. public void testSafari3() {
  48. VBrowserDetails bd = new VBrowserDetails(SAFARI3_WINDOWS);
  49. assertWebKit(bd);
  50. assertSafari(bd);
  51. assertBrowserMajorVersion(bd, 3);
  52. assertBrowserMinorVersion(bd, 2);
  53. assertEngineVersion(bd, 525.0f);
  54. assertWindows(bd);
  55. }
  56. @Test
  57. public void testSafari4() {
  58. VBrowserDetails bd = new VBrowserDetails(SAFARI4_MAC);
  59. assertWebKit(bd);
  60. assertSafari(bd);
  61. assertBrowserMajorVersion(bd, 4);
  62. assertBrowserMinorVersion(bd, 0);
  63. assertEngineVersion(bd, 531f);
  64. assertMacOSX(bd);
  65. }
  66. @Test
  67. public void testIPhoneIOS6Homescreen() {
  68. VBrowserDetails bd = new VBrowserDetails(
  69. IPHONE_IOS_6_1_HOMESCREEN_SIMULATOR);
  70. assertWebKit(bd);
  71. // not identified as Safari, no browser version available
  72. // assertSafari(bd);
  73. // assertBrowserMajorVersion(bd, 6);
  74. // assertBrowserMinorVersion(bd, 1);
  75. assertEngineVersion(bd, 536f);
  76. assertIOS(bd, 6, 1);
  77. assertIPhone(bd);
  78. }
  79. @Test
  80. public void testIPhoneIOS5() {
  81. VBrowserDetails bd = new VBrowserDetails(IPHONE_IOS_5_1);
  82. assertWebKit(bd);
  83. assertSafari(bd);
  84. assertBrowserMajorVersion(bd, 5);
  85. assertBrowserMinorVersion(bd, 1);
  86. assertEngineVersion(bd, 534f);
  87. assertIOS(bd, 5, 1);
  88. assertIPhone(bd);
  89. }
  90. @Test
  91. public void testIPhoneIOS4() {
  92. VBrowserDetails bd = new VBrowserDetails(IPHONE_IOS_4_0);
  93. assertWebKit(bd);
  94. assertSafari(bd);
  95. assertBrowserMajorVersion(bd, 4);
  96. assertBrowserMinorVersion(bd, 0);
  97. assertEngineVersion(bd, 532f);
  98. assertIOS(bd, 4, 0);
  99. assertIPhone(bd);
  100. }
  101. @Test
  102. public void testIPadIOS4() {
  103. VBrowserDetails bd = new VBrowserDetails(IPAD_IOS_4_3_1);
  104. assertWebKit(bd);
  105. assertSafari(bd);
  106. assertBrowserMajorVersion(bd, 5);
  107. assertBrowserMinorVersion(bd, 0);
  108. assertEngineVersion(bd, 533f);
  109. assertIOS(bd, 4, 3);
  110. assertIPad(bd);
  111. }
  112. @Test
  113. public void testAndroid21() {
  114. VBrowserDetails bd = new VBrowserDetails(ANDROID_HTC_2_1);
  115. assertWebKit(bd);
  116. assertSafari(bd);
  117. assertBrowserMajorVersion(bd, 4);
  118. assertBrowserMinorVersion(bd, 0);
  119. assertEngineVersion(bd, 530f);
  120. assertAndroid(bd, 2, 1);
  121. }
  122. @Test
  123. public void testAndroid22() {
  124. VBrowserDetails bd = new VBrowserDetails(ANDROID_GOOGLE_NEXUS_2_2);
  125. assertWebKit(bd);
  126. assertSafari(bd);
  127. assertBrowserMajorVersion(bd, 4);
  128. assertBrowserMinorVersion(bd, 0);
  129. assertEngineVersion(bd, 533f);
  130. assertAndroid(bd, 2, 2);
  131. }
  132. @Test
  133. public void testAndroid30() {
  134. VBrowserDetails bd = new VBrowserDetails(ANDROID_MOTOROLA_3_0);
  135. assertWebKit(bd);
  136. assertSafari(bd);
  137. assertBrowserMajorVersion(bd, 4);
  138. assertBrowserMinorVersion(bd, 0);
  139. assertEngineVersion(bd, 534f);
  140. assertAndroid(bd, 3, 0);
  141. }
  142. @Test
  143. public void testAndroid40Chrome() {
  144. VBrowserDetails bd = new VBrowserDetails(
  145. ANDROID_GALAXY_NEXUS_4_0_4_CHROME);
  146. assertWebKit(bd);
  147. assertChrome(bd);
  148. assertBrowserMajorVersion(bd, 18);
  149. assertBrowserMinorVersion(bd, 0);
  150. assertEngineVersion(bd, 535f);
  151. assertAndroid(bd, 4, 0);
  152. }
  153. private void assertOSMajorVersion(VBrowserDetails bd, int i) {
  154. assertEquals(i, bd.getOperatingSystemMajorVersion());
  155. }
  156. private void assertOSMinorVersion(VBrowserDetails bd, int i) {
  157. assertEquals(i, bd.getOperatingSystemMinorVersion());
  158. }
  159. @Test
  160. public void testChrome3() {
  161. VBrowserDetails bd = new VBrowserDetails(CHROME3_MAC);
  162. assertWebKit(bd);
  163. assertChrome(bd);
  164. assertBrowserMajorVersion(bd, 3);
  165. assertBrowserMinorVersion(bd, 0);
  166. assertEngineVersion(bd, 532.0f);
  167. assertMacOSX(bd);
  168. }
  169. @Test
  170. public void testChrome4() {
  171. VBrowserDetails bd = new VBrowserDetails(CHROME4_WINDOWS);
  172. assertWebKit(bd);
  173. assertChrome(bd);
  174. assertBrowserMajorVersion(bd, 4);
  175. assertBrowserMinorVersion(bd, 0);
  176. assertEngineVersion(bd, 532f);
  177. assertWindows(bd);
  178. }
  179. @Test
  180. public void testChromeChromeOS() {
  181. VBrowserDetails bd = new VBrowserDetails(CHROME_40_ON_CHROMEOS);
  182. assertWebKit(bd);
  183. assertChrome(bd);
  184. assertBrowserMajorVersion(bd, 40);
  185. assertBrowserMinorVersion(bd, 0);
  186. assertEngineVersion(bd, 537f);
  187. assertChromeOS(bd);
  188. }
  189. @Test
  190. public void testChromeIOS() {
  191. VBrowserDetails bd = new VBrowserDetails(CHROME_57_ON_IOS_10_3_1);
  192. assertWebKit(bd);
  193. assertChrome(bd);
  194. assertBrowserMajorVersion(bd, 57);
  195. assertBrowserMinorVersion(bd, 0);
  196. assertEngineVersion(bd, 602f);
  197. assertIOS(bd, 10, 3);
  198. }
  199. @Test
  200. public void testFirefox3() {
  201. VBrowserDetails bd = new VBrowserDetails(FIREFOX30_WINDOWS);
  202. assertGecko(bd);
  203. assertFirefox(bd);
  204. assertBrowserMajorVersion(bd, 3);
  205. assertBrowserMinorVersion(bd, 0);
  206. assertEngineVersion(bd, 1.9f);
  207. assertWindows(bd);
  208. bd = new VBrowserDetails(FIREFOX30_LINUX);
  209. assertGecko(bd);
  210. assertFirefox(bd);
  211. assertBrowserMajorVersion(bd, 3);
  212. assertBrowserMinorVersion(bd, 0);
  213. assertEngineVersion(bd, 1.9f);
  214. assertLinux(bd);
  215. }
  216. @Test
  217. public void testFirefox33Android() {
  218. VBrowserDetails bd = new VBrowserDetails(FIREFOX33_ANDROID);
  219. assertGecko(bd);
  220. assertFirefox(bd);
  221. assertBrowserMajorVersion(bd, 33);
  222. assertBrowserMinorVersion(bd, 0);
  223. assertAndroid(bd, -1, -1);
  224. }
  225. @Test
  226. public void testFirefox35() {
  227. VBrowserDetails bd = new VBrowserDetails(FIREFOX35_WINDOWS);
  228. assertGecko(bd);
  229. assertFirefox(bd);
  230. assertBrowserMajorVersion(bd, 3);
  231. assertBrowserMinorVersion(bd, 5);
  232. assertEngineVersion(bd, 1.9f);
  233. assertWindows(bd);
  234. }
  235. @Test
  236. public void testFirefox36() {
  237. VBrowserDetails bd = new VBrowserDetails(FIREFOX36_WINDOWS);
  238. assertGecko(bd);
  239. assertFirefox(bd);
  240. assertBrowserMajorVersion(bd, 3);
  241. assertBrowserMinorVersion(bd, 6);
  242. assertEngineVersion(bd, 1.9f);
  243. assertWindows(bd);
  244. }
  245. @Test
  246. public void testFirefox30b5() {
  247. VBrowserDetails bd = new VBrowserDetails(FIREFOX_30B5_MAC);
  248. assertGecko(bd);
  249. assertFirefox(bd);
  250. assertBrowserMajorVersion(bd, 3);
  251. assertBrowserMinorVersion(bd, 0);
  252. assertEngineVersion(bd, 1.9f);
  253. assertMacOSX(bd);
  254. }
  255. @Test
  256. public void testFirefox40b11() {
  257. VBrowserDetails bd = new VBrowserDetails(FIREFOX_40B11_WIN);
  258. assertGecko(bd);
  259. assertFirefox(bd);
  260. assertBrowserMajorVersion(bd, 4);
  261. assertBrowserMinorVersion(bd, 0);
  262. assertEngineVersion(bd, 2.0f);
  263. assertWindows(bd);
  264. }
  265. @Test
  266. public void testFirefox40b7() {
  267. VBrowserDetails bd = new VBrowserDetails(FIREFOX_40B7_WIN);
  268. assertGecko(bd);
  269. assertFirefox(bd);
  270. assertBrowserMajorVersion(bd, 4);
  271. assertBrowserMinorVersion(bd, 0);
  272. assertEngineVersion(bd, 2.0f);
  273. assertWindows(bd);
  274. }
  275. @Test
  276. public void testKonquerorLinux() {
  277. // Just ensure detection does not crash
  278. VBrowserDetails bd = new VBrowserDetails(KONQUEROR_LINUX);
  279. assertLinux(bd);
  280. }
  281. @Test
  282. public void testFirefox36b() {
  283. VBrowserDetails bd = new VBrowserDetails(FIREFOX36B_MAC);
  284. assertGecko(bd);
  285. assertFirefox(bd);
  286. assertBrowserMajorVersion(bd, 3);
  287. assertBrowserMinorVersion(bd, 6);
  288. assertEngineVersion(bd, 1.9f);
  289. assertMacOSX(bd);
  290. }
  291. @Test
  292. public void testOpera964() {
  293. VBrowserDetails bd = new VBrowserDetails(OPERA964_WINDOWS);
  294. assertPresto(bd);
  295. assertOpera(bd);
  296. assertBrowserMajorVersion(bd, 9);
  297. assertBrowserMinorVersion(bd, 64);
  298. assertWindows(bd);
  299. }
  300. @Test
  301. public void testOpera1010() {
  302. VBrowserDetails bd = new VBrowserDetails(OPERA1010_WINDOWS);
  303. assertPresto(bd);
  304. assertOpera(bd);
  305. assertBrowserMajorVersion(bd, 10);
  306. assertBrowserMinorVersion(bd, 10);
  307. assertWindows(bd);
  308. }
  309. @Test
  310. public void testOpera1050() {
  311. VBrowserDetails bd = new VBrowserDetails(OPERA1050_WINDOWS);
  312. assertPresto(bd);
  313. assertOpera(bd);
  314. assertBrowserMajorVersion(bd, 10);
  315. assertBrowserMinorVersion(bd, 50);
  316. assertWindows(bd);
  317. }
  318. @Test
  319. public void testIE11() {
  320. VBrowserDetails bd = new VBrowserDetails(IE11_WINDOWS_7);
  321. assertTrident(bd);
  322. assertEngineVersion(bd, 7);
  323. assertIE(bd);
  324. assertBrowserMajorVersion(bd, 11);
  325. assertBrowserMinorVersion(bd, 0);
  326. assertWindows(bd);
  327. }
  328. @Test
  329. public void testIE11Windows7CompatibilityViewIE7() {
  330. VBrowserDetails bd = new VBrowserDetails(
  331. IE11_WINDOWS_7_COMPATIBILITY_VIEW_IE7);
  332. assertTrident(bd);
  333. assertEngineVersion(bd, 7);
  334. assertIE(bd);
  335. assertBrowserMajorVersion(bd, 11);
  336. assertBrowserMinorVersion(bd, 0);
  337. assertWindows(bd);
  338. }
  339. @Test
  340. public void testIE11Windows10CompatibilityViewIE7() {
  341. VBrowserDetails bd = new VBrowserDetails(
  342. IE11_WINDOWS_10_COMPATIBILITY_VIEW_IE7);
  343. assertTrident(bd);
  344. assertEngineVersion(bd, 7);
  345. assertIE(bd);
  346. assertBrowserMajorVersion(bd, 11);
  347. assertBrowserMinorVersion(bd, 0);
  348. assertWindows(bd);
  349. }
  350. @Test
  351. public void testIE11InitialWindows10CompatibilityViewIE7() {
  352. VBrowserDetails bd = new VBrowserDetails(
  353. IE11_INITIAL_WINDOWS_10_COMPATIBILITY_VIEW_IE7);
  354. assertTrident(bd);
  355. assertEngineVersion(bd, 7);
  356. assertIE(bd);
  357. assertBrowserMajorVersion(bd, 11);
  358. assertBrowserMinorVersion(bd, 0);
  359. assertWindows(bd);
  360. }
  361. @Test
  362. public void testIE11WindowsPhone81Update() {
  363. VBrowserDetails bd = new VBrowserDetails(IE11_WINDOWS_PHONE_8_1_UPDATE);
  364. assertTrident(bd);
  365. assertEngineVersion(bd, 7);
  366. assertIE(bd);
  367. assertBrowserMajorVersion(bd, 11);
  368. assertBrowserMinorVersion(bd, 0);
  369. assertWindows(bd, true);
  370. }
  371. @Test
  372. public void testEdgeWindows10() {
  373. VBrowserDetails bd = new VBrowserDetails(EDGE_WINDOWS_10);
  374. assertEdge(bd);
  375. assertBrowserMajorVersion(bd, 12);
  376. assertBrowserMinorVersion(bd, 10240);
  377. assertWindows(bd, false);
  378. }
  379. @Test
  380. public void testPhantomJs211() {
  381. VBrowserDetails bd = new VBrowserDetails(PHANTOMJS_211_MAC);
  382. assertPhantomJS(bd);
  383. assertWebKit(bd);
  384. assertBrowserMajorVersion(bd, 2);
  385. assertBrowserMinorVersion(bd, 1);
  386. assertMacOSX(bd);
  387. }
  388. @Test
  389. public void checkFFsupportedVersions() {
  390. VBrowserDetails details = new VBrowserDetails(FIREFOX_40B11_WIN);
  391. Assert.assertTrue(details.isTooOldToFunctionProperly());
  392. details = new VBrowserDetails(FIREFOX_SUPPORTED);
  393. Assert.assertFalse(details.isTooOldToFunctionProperly());
  394. }
  395. /*
  396. * Helper methods below
  397. */
  398. private void assertEngineVersion(VBrowserDetails browserDetails,
  399. float version) {
  400. assertEquals(version, browserDetails.getBrowserEngineVersion(), 0.01d);
  401. }
  402. private void assertBrowserMajorVersion(VBrowserDetails browserDetails,
  403. int version) {
  404. assertEquals(version, browserDetails.getBrowserMajorVersion());
  405. }
  406. private void assertBrowserMinorVersion(VBrowserDetails browserDetails,
  407. int version) {
  408. assertEquals(version, browserDetails.getBrowserMinorVersion());
  409. }
  410. private void assertGecko(VBrowserDetails browserDetails) {
  411. // Engine
  412. assertTrue(browserDetails.isGecko());
  413. assertFalse(browserDetails.isWebKit());
  414. assertFalse(browserDetails.isPresto());
  415. assertFalse(browserDetails.isTrident());
  416. }
  417. private void assertPresto(VBrowserDetails browserDetails) {
  418. // Engine
  419. assertFalse(browserDetails.isGecko());
  420. assertFalse(browserDetails.isWebKit());
  421. assertTrue(browserDetails.isPresto());
  422. assertFalse(browserDetails.isTrident());
  423. }
  424. private void assertTrident(VBrowserDetails browserDetails) {
  425. // Engine
  426. assertFalse(browserDetails.isGecko());
  427. assertFalse(browserDetails.isWebKit());
  428. assertFalse(browserDetails.isPresto());
  429. assertTrue(browserDetails.isTrident());
  430. }
  431. private void assertWebKit(VBrowserDetails browserDetails) {
  432. // Engine
  433. assertFalse(browserDetails.isGecko());
  434. assertTrue(browserDetails.isWebKit());
  435. assertFalse(browserDetails.isPresto());
  436. assertFalse(browserDetails.isTrident());
  437. }
  438. private void assertPhantomJS(VBrowserDetails browserDetails) {
  439. // Browser
  440. assertFalse(browserDetails.isFirefox());
  441. assertFalse(browserDetails.isChrome());
  442. assertFalse(browserDetails.isIE());
  443. assertFalse(browserDetails.isOpera());
  444. assertFalse(browserDetails.isSafari());
  445. assertFalse(browserDetails.isEdge());
  446. assertTrue(browserDetails.isPhantomJS());
  447. }
  448. private void assertFirefox(VBrowserDetails browserDetails) {
  449. // Browser
  450. assertTrue(browserDetails.isFirefox());
  451. assertFalse(browserDetails.isChrome());
  452. assertFalse(browserDetails.isIE());
  453. assertFalse(browserDetails.isOpera());
  454. assertFalse(browserDetails.isSafari());
  455. assertFalse(browserDetails.isEdge());
  456. assertFalse(browserDetails.isPhantomJS());
  457. }
  458. private void assertChrome(VBrowserDetails browserDetails) {
  459. // Browser
  460. assertFalse(browserDetails.isFirefox());
  461. assertTrue(browserDetails.isChrome());
  462. assertFalse(browserDetails.isIE());
  463. assertFalse(browserDetails.isOpera());
  464. assertFalse(browserDetails.isSafari());
  465. assertFalse(browserDetails.isEdge());
  466. assertFalse(browserDetails.isPhantomJS());
  467. }
  468. private void assertIE(VBrowserDetails browserDetails) {
  469. // Browser
  470. assertFalse(browserDetails.isFirefox());
  471. assertFalse(browserDetails.isChrome());
  472. assertTrue(browserDetails.isIE());
  473. assertFalse(browserDetails.isOpera());
  474. assertFalse(browserDetails.isSafari());
  475. assertFalse(browserDetails.isEdge());
  476. assertFalse(browserDetails.isPhantomJS());
  477. }
  478. private void assertOpera(VBrowserDetails browserDetails) {
  479. // Browser
  480. assertFalse(browserDetails.isFirefox());
  481. assertFalse(browserDetails.isChrome());
  482. assertFalse(browserDetails.isIE());
  483. assertTrue(browserDetails.isOpera());
  484. assertFalse(browserDetails.isSafari());
  485. assertFalse(browserDetails.isEdge());
  486. assertFalse(browserDetails.isPhantomJS());
  487. }
  488. private void assertSafari(VBrowserDetails browserDetails) {
  489. // Browser
  490. assertFalse(browserDetails.isFirefox());
  491. assertFalse(browserDetails.isChrome());
  492. assertFalse(browserDetails.isIE());
  493. assertFalse(browserDetails.isOpera());
  494. assertTrue(browserDetails.isSafari());
  495. assertFalse(browserDetails.isEdge());
  496. assertFalse(browserDetails.isPhantomJS());
  497. }
  498. private void assertEdge(VBrowserDetails browserDetails) {
  499. // Browser
  500. assertFalse(browserDetails.isFirefox());
  501. assertFalse(browserDetails.isChrome());
  502. assertFalse(browserDetails.isIE());
  503. assertFalse(browserDetails.isOpera());
  504. assertFalse(browserDetails.isSafari());
  505. assertTrue(browserDetails.isEdge());
  506. assertFalse(browserDetails.isPhantomJS());
  507. }
  508. private void assertMacOSX(VBrowserDetails browserDetails) {
  509. assertFalse(browserDetails.isLinux());
  510. assertFalse(browserDetails.isWindows());
  511. assertTrue(browserDetails.isMacOSX());
  512. assertFalse(browserDetails.isAndroid());
  513. assertFalse(browserDetails.isChromeOS());
  514. }
  515. private void assertAndroid(VBrowserDetails browserDetails, int majorVersion,
  516. int minorVersion) {
  517. assertFalse(browserDetails.isLinux());
  518. assertFalse(browserDetails.isWindows());
  519. assertFalse(browserDetails.isMacOSX());
  520. assertFalse(browserDetails.isIOS());
  521. assertTrue(browserDetails.isAndroid());
  522. assertFalse(browserDetails.isChromeOS());
  523. assertOSMajorVersion(browserDetails, majorVersion);
  524. assertOSMinorVersion(browserDetails, minorVersion);
  525. }
  526. private void assertIOS(VBrowserDetails browserDetails, int majorVersion,
  527. int minorVersion) {
  528. assertFalse(browserDetails.isLinux());
  529. assertFalse(browserDetails.isWindows());
  530. assertFalse(browserDetails.isMacOSX());
  531. assertTrue(browserDetails.isIOS());
  532. assertFalse(browserDetails.isAndroid());
  533. assertFalse(browserDetails.isChromeOS());
  534. assertOSMajorVersion(browserDetails, majorVersion);
  535. assertOSMinorVersion(browserDetails, minorVersion);
  536. }
  537. private void assertIPhone(VBrowserDetails browserDetails) {
  538. assertTrue(browserDetails.isIPhone());
  539. assertFalse(browserDetails.isIPad());
  540. }
  541. private void assertIPad(VBrowserDetails browserDetails) {
  542. assertFalse(browserDetails.isIPhone());
  543. assertTrue(browserDetails.isIPad());
  544. }
  545. private void assertWindows(VBrowserDetails browserDetails) {
  546. assertWindows(browserDetails, false);
  547. }
  548. private void assertWindows(VBrowserDetails browserDetails,
  549. boolean isWindowsPhone) {
  550. assertFalse(browserDetails.isLinux());
  551. assertTrue(browserDetails.isWindows());
  552. assertFalse(browserDetails.isMacOSX());
  553. assertFalse(browserDetails.isIOS());
  554. assertFalse(browserDetails.isAndroid());
  555. assertFalse(browserDetails.isChromeOS());
  556. Assert.assertEquals(isWindowsPhone, browserDetails.isWindowsPhone());
  557. }
  558. private void assertLinux(VBrowserDetails browserDetails) {
  559. assertTrue(browserDetails.isLinux());
  560. assertFalse(browserDetails.isWindows());
  561. assertFalse(browserDetails.isMacOSX());
  562. assertFalse(browserDetails.isIOS());
  563. assertFalse(browserDetails.isAndroid());
  564. assertFalse(browserDetails.isChromeOS());
  565. }
  566. private void assertChromeOS(VBrowserDetails browserDetails) {
  567. assertFalse(browserDetails.isLinux());
  568. assertFalse(browserDetails.isWindows());
  569. assertFalse(browserDetails.isMacOSX());
  570. assertFalse(browserDetails.isIOS());
  571. assertFalse(browserDetails.isAndroid());
  572. assertTrue(browserDetails.isChromeOS());
  573. }
  574. }