selenium-webdriver 2.48.2 → 2.53.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/CHANGES.md +116 -0
  2. package/NOTICE +1 -1
  3. package/README.md +59 -9
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +9 -6
  8. package/example/google_search.js +1 -1
  9. package/example/google_search_generator.js +2 -4
  10. package/example/logging.js +6 -2
  11. package/example/sample.js +21 -0
  12. package/executors.js +11 -27
  13. package/firefox/binary.js +149 -98
  14. package/firefox/extension.js +15 -19
  15. package/firefox/index.js +256 -163
  16. package/firefox/profile.js +223 -243
  17. package/http/index.js +487 -81
  18. package/http/util.js +40 -36
  19. package/ie.js +288 -309
  20. package/index.js +34 -125
  21. package/io/exec.js +58 -39
  22. package/io/index.js +72 -60
  23. package/lib/README +4 -0
  24. package/lib/actions.js +596 -0
  25. package/lib/by.js +277 -0
  26. package/lib/capabilities.js +450 -0
  27. package/lib/{webdriver/command.js → command.js} +91 -72
  28. package/lib/{webdriver/button.js → devmode.js} +13 -8
  29. package/lib/error.js +690 -0
  30. package/lib/events.js +212 -0
  31. package/lib/firefox/amd64/libnoblur64.so +0 -0
  32. package/lib/firefox/i386/libnoblur.so +0 -0
  33. package/lib/firefox/webdriver.json +5 -1
  34. package/lib/firefox/webdriver.xpi +0 -0
  35. package/lib/{webdriver/key.js → input.js} +84 -2
  36. package/lib/logging.js +670 -0
  37. package/lib/{webdriver/promise.js → promise.js} +817 -644
  38. package/lib/safari/client.js +266 -214
  39. package/lib/session.js +80 -0
  40. package/lib/{webdriver/serializable.js → symbols.js} +16 -19
  41. package/lib/test/build.js +4 -4
  42. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  43. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  44. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  45. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  46. package/lib/test/data/hidden_partially.html +45 -0
  47. package/lib/test/data/readOnlyPage.html +1 -1
  48. package/lib/test/data/selectPage.html +18 -2
  49. package/lib/test/fileserver.js +3 -4
  50. package/lib/test/index.js +7 -3
  51. package/lib/test/resources.js +1 -1
  52. package/lib/until.js +376 -0
  53. package/lib/webdriver.js +2440 -0
  54. package/net/index.js +4 -0
  55. package/net/portprober.js +16 -12
  56. package/opera.js +295 -314
  57. package/package.json +6 -5
  58. package/phantomjs.js +144 -147
  59. package/proxy.js +10 -6
  60. package/remote/index.js +289 -238
  61. package/safari.js +326 -311
  62. package/test/chrome/options_test.js +11 -9
  63. package/test/element_finding_test.js +51 -13
  64. package/test/execute_script_test.js +17 -3
  65. package/test/firefox/firefox_test.js +0 -32
  66. package/test/http/http_test.js +671 -61
  67. package/test/http/util_test.js +25 -23
  68. package/test/io_test.js +67 -1
  69. package/test/lib/by_test.js +139 -0
  70. package/test/lib/capabilities_test.js +111 -0
  71. package/test/lib/error_test.js +325 -0
  72. package/test/lib/events_test.js +177 -0
  73. package/test/lib/logging_test.js +272 -0
  74. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  75. package/test/lib/promise_error_test.js +808 -0
  76. package/test/lib/promise_flow_test.js +2282 -0
  77. package/test/lib/promise_generator_test.js +308 -0
  78. package/test/lib/promise_test.js +996 -0
  79. package/test/lib/testutil.js +90 -0
  80. package/test/lib/until_test.js +400 -0
  81. package/test/lib/webdriver_test.js +2157 -0
  82. package/test/page_loading_test.js +7 -9
  83. package/test/remote_test.js +50 -3
  84. package/test/session_test.js +53 -0
  85. package/test/stale_element_test.js +2 -2
  86. package/test/testing/assert_test.js +374 -0
  87. package/test/testing/index_test.js +9 -11
  88. package/testing/assert.js +334 -17
  89. package/testing/index.js +12 -2
  90. package/_base.js +0 -200
  91. package/docs/Changes.html +0 -356
  92. package/docs/class_bot_Error.html +0 -15
  93. package/docs/class_webdriver_ActionSequence.html +0 -115
  94. package/docs/class_webdriver_Alert.html +0 -24
  95. package/docs/class_webdriver_AlertPromise.html +0 -92
  96. package/docs/class_webdriver_Capabilities.html +0 -60
  97. package/docs/class_webdriver_Command.html +0 -15
  98. package/docs/class_webdriver_EventEmitter.html +0 -35
  99. package/docs/class_webdriver_FileDetector.html +0 -21
  100. package/docs/class_webdriver_Locator.html +0 -12
  101. package/docs/class_webdriver_Serializable.html +0 -9
  102. package/docs/class_webdriver_Session.html +0 -13
  103. package/docs/class_webdriver_TouchSequence.html +0 -49
  104. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  105. package/docs/class_webdriver_WebDriver.html +0 -313
  106. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  107. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  108. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  109. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  110. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  111. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  112. package/docs/class_webdriver_WebElement.html +0 -223
  113. package/docs/class_webdriver_WebElementPromise.html +0 -274
  114. package/docs/class_webdriver_http_Executor.html +0 -22
  115. package/docs/class_webdriver_http_Request.html +0 -12
  116. package/docs/class_webdriver_http_Response.html +0 -13
  117. package/docs/class_webdriver_logging_Entry.html +0 -15
  118. package/docs/class_webdriver_logging_Level.html +0 -55
  119. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  120. package/docs/class_webdriver_logging_Logger.html +0 -119
  121. package/docs/class_webdriver_logging_Preferences.html +0 -8
  122. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  123. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  124. package/docs/class_webdriver_promise_Deferred.html +0 -84
  125. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  126. package/docs/class_webdriver_promise_Promise.html +0 -75
  127. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  128. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  129. package/docs/class_webdriver_testing_Assertion.html +0 -99
  130. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  131. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  132. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  133. package/docs/class_webdriver_until_Condition.html +0 -7
  134. package/docs/dossier.css +0 -1
  135. package/docs/dossier.js +0 -86
  136. package/docs/enum_bot_ErrorCode.html +0 -3
  137. package/docs/enum_bot_Error_State.html +0 -2
  138. package/docs/enum_webdriver_Browser.html +0 -2
  139. package/docs/enum_webdriver_Button.html +0 -2
  140. package/docs/enum_webdriver_Capability.html +0 -33
  141. package/docs/enum_webdriver_CommandName.html +0 -3
  142. package/docs/enum_webdriver_Key.html +0 -12
  143. package/docs/enum_webdriver_logging_Type.html +0 -6
  144. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  145. package/docs/index.html +0 -125
  146. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  147. package/docs/interface_webdriver_http_Client.html +0 -10
  148. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  149. package/docs/module_selenium-webdriver.html +0 -23
  150. package/docs/module_selenium-webdriver__base.html +0 -23
  151. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  152. package/docs/module_selenium-webdriver_builder.html +0 -2
  153. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  154. package/docs/module_selenium-webdriver_chrome.html +0 -90
  155. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  156. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  157. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  158. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  159. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  160. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  161. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  162. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  163. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  164. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  165. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  166. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  167. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  168. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  169. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  170. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  171. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  172. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  173. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  174. package/docs/module_selenium-webdriver_error.html +0 -4
  175. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  176. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  177. package/docs/module_selenium-webdriver_executors.html +0 -10
  178. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  179. package/docs/module_selenium-webdriver_firefox.html +0 -68
  180. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  181. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  182. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  183. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  184. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  185. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  186. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  187. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  188. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  189. package/docs/module_selenium-webdriver_http.html +0 -9
  190. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  191. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  192. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  193. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  194. package/docs/module_selenium-webdriver_http_util.html +0 -17
  195. package/docs/module_selenium-webdriver_ie.html +0 -11
  196. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  197. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  198. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  199. package/docs/module_selenium-webdriver_io.html +0 -37
  200. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  201. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  202. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  203. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  204. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  205. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  206. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  207. package/docs/module_selenium-webdriver_net.html +0 -7
  208. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  209. package/docs/module_selenium-webdriver_opera.html +0 -62
  210. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  211. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  212. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  213. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  214. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  215. package/docs/module_selenium-webdriver_proxy.html +0 -28
  216. package/docs/module_selenium-webdriver_remote.html +0 -8
  217. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  218. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  219. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  220. package/docs/module_selenium-webdriver_safari.html +0 -9
  221. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  222. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  223. package/docs/module_selenium-webdriver_testing.html +0 -74
  224. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  225. package/docs/namespace_bot.html +0 -4
  226. package/docs/namespace_bot_json.html +0 -20
  227. package/docs/namespace_bot_response.html +0 -18
  228. package/docs/namespace_bot_userAgent.html +0 -33
  229. package/docs/namespace_webdriver.html +0 -30
  230. package/docs/namespace_webdriver_By.html +0 -56
  231. package/docs/namespace_webdriver_http.html +0 -6
  232. package/docs/namespace_webdriver_logging.html +0 -70
  233. package/docs/namespace_webdriver_promise.html +0 -688
  234. package/docs/namespace_webdriver_stacktrace.html +0 -17
  235. package/docs/namespace_webdriver_testing.html +0 -7
  236. package/docs/namespace_webdriver_testing_assert.html +0 -9
  237. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  238. package/docs/namespace_webdriver_until.html +0 -82
  239. package/docs/source/_base.js.src.html +0 -1
  240. package/docs/source/builder.js.src.html +0 -1
  241. package/docs/source/chrome.js.src.html +0 -1
  242. package/docs/source/error.js.src.html +0 -1
  243. package/docs/source/executors.js.src.html +0 -1
  244. package/docs/source/firefox/binary.js.src.html +0 -1
  245. package/docs/source/firefox/extension.js.src.html +0 -1
  246. package/docs/source/firefox/index.js.src.html +0 -1
  247. package/docs/source/firefox/profile.js.src.html +0 -1
  248. package/docs/source/http/index.js.src.html +0 -1
  249. package/docs/source/http/util.js.src.html +0 -1
  250. package/docs/source/ie.js.src.html +0 -1
  251. package/docs/source/index.js.src.html +0 -1
  252. package/docs/source/io/exec.js.src.html +0 -1
  253. package/docs/source/io/index.js.src.html +0 -1
  254. package/docs/source/lib/atoms/error.js.src.html +0 -1
  255. package/docs/source/lib/atoms/json.js.src.html +0 -1
  256. package/docs/source/lib/atoms/response.js.src.html +0 -1
  257. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  258. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  259. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  260. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  261. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  262. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  263. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  264. package/docs/source/lib/goog/base.js.src.html +0 -1
  265. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  266. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  267. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  268. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  269. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  270. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  271. package/docs/source/lib/goog/deps.js.src.html +0 -1
  272. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  273. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  274. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  275. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  276. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  277. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  278. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  279. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  280. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  285. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  286. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  287. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  288. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  289. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  290. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  291. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  292. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  293. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  294. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  295. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  296. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  297. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  298. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  299. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  300. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  301. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  302. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  303. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  307. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  308. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  309. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  310. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  311. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  312. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  313. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  314. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  315. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  316. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  317. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  318. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  319. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  320. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  321. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  322. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  323. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  324. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  325. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  326. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  327. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  328. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  329. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  330. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  331. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  332. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  333. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  334. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  335. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  336. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  348. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  349. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  350. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  351. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  352. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  353. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  354. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  355. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  356. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  357. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  358. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  369. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  370. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  371. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  372. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  373. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  374. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  375. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  376. package/docs/source/net/index.js.src.html +0 -1
  377. package/docs/source/net/portprober.js.src.html +0 -1
  378. package/docs/source/opera.js.src.html +0 -1
  379. package/docs/source/phantomjs.js.src.html +0 -1
  380. package/docs/source/proxy.js.src.html +0 -1
  381. package/docs/source/remote/index.js.src.html +0 -1
  382. package/docs/source/safari.js.src.html +0 -1
  383. package/docs/source/testing/assert.js.src.html +0 -1
  384. package/docs/source/testing/index.js.src.html +0 -1
  385. package/docs/types.js +0 -1
  386. package/lib/atoms/error.js +0 -202
  387. package/lib/atoms/json.js +0 -80
  388. package/lib/atoms/response.js +0 -110
  389. package/lib/atoms/userAgent.js +0 -257
  390. package/lib/goog/LICENSE +0 -176
  391. package/lib/goog/array/array.js +0 -1654
  392. package/lib/goog/asserts/asserts.js +0 -365
  393. package/lib/goog/async/freelist.js +0 -88
  394. package/lib/goog/async/nexttick.js +0 -241
  395. package/lib/goog/async/run.js +0 -133
  396. package/lib/goog/async/workqueue.js +0 -139
  397. package/lib/goog/base.js +0 -2548
  398. package/lib/goog/debug/debug.js +0 -653
  399. package/lib/goog/debug/entrypointregistry.js +0 -158
  400. package/lib/goog/debug/error.js +0 -63
  401. package/lib/goog/debug/logbuffer.js +0 -148
  402. package/lib/goog/debug/logger.js +0 -873
  403. package/lib/goog/debug/logrecord.js +0 -242
  404. package/lib/goog/deps.js +0 -151
  405. package/lib/goog/disposable/disposable.js +0 -307
  406. package/lib/goog/disposable/idisposable.js +0 -45
  407. package/lib/goog/dom/browserfeature.js +0 -72
  408. package/lib/goog/dom/dom.js +0 -2991
  409. package/lib/goog/dom/nodetype.js +0 -48
  410. package/lib/goog/dom/safe.js +0 -347
  411. package/lib/goog/dom/tagname.js +0 -160
  412. package/lib/goog/dom/tags.js +0 -41
  413. package/lib/goog/dom/vendor.js +0 -96
  414. package/lib/goog/events/browserevent.js +0 -400
  415. package/lib/goog/events/browserfeature.js +0 -85
  416. package/lib/goog/events/event.js +0 -143
  417. package/lib/goog/events/eventid.js +0 -47
  418. package/lib/goog/events/events.js +0 -984
  419. package/lib/goog/events/eventtarget.js +0 -394
  420. package/lib/goog/events/eventtype.js +0 -237
  421. package/lib/goog/events/keycodes.js +0 -427
  422. package/lib/goog/events/listenable.js +0 -335
  423. package/lib/goog/events/listener.js +0 -131
  424. package/lib/goog/events/listenermap.js +0 -308
  425. package/lib/goog/fs/url.js +0 -109
  426. package/lib/goog/functions/functions.js +0 -442
  427. package/lib/goog/html/safehtml.js +0 -757
  428. package/lib/goog/html/safescript.js +0 -234
  429. package/lib/goog/html/safestyle.js +0 -442
  430. package/lib/goog/html/safestylesheet.js +0 -276
  431. package/lib/goog/html/safeurl.js +0 -398
  432. package/lib/goog/html/trustedresourceurl.js +0 -224
  433. package/lib/goog/html/uncheckedconversions.js +0 -232
  434. package/lib/goog/i18n/bidi.js +0 -908
  435. package/lib/goog/iter/iter.js +0 -1302
  436. package/lib/goog/json/json.js +0 -363
  437. package/lib/goog/labs/testing/assertthat.js +0 -58
  438. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  439. package/lib/goog/labs/testing/matcher.js +0 -80
  440. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  441. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  442. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  443. package/lib/goog/labs/useragent/browser.js +0 -341
  444. package/lib/goog/labs/useragent/engine.js +0 -160
  445. package/lib/goog/labs/useragent/platform.js +0 -160
  446. package/lib/goog/labs/useragent/util.js +0 -148
  447. package/lib/goog/log/log.js +0 -197
  448. package/lib/goog/math/box.js +0 -398
  449. package/lib/goog/math/coordinate.js +0 -268
  450. package/lib/goog/math/math.js +0 -451
  451. package/lib/goog/math/rect.js +0 -476
  452. package/lib/goog/math/size.js +0 -227
  453. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  454. package/lib/goog/net/xhrlike.js +0 -124
  455. package/lib/goog/net/xmlhttp.js +0 -246
  456. package/lib/goog/net/xmlhttpfactory.js +0 -67
  457. package/lib/goog/object/object.js +0 -686
  458. package/lib/goog/promise/promise.js +0 -1350
  459. package/lib/goog/promise/resolver.js +0 -48
  460. package/lib/goog/promise/thenable.js +0 -126
  461. package/lib/goog/reflect/reflect.js +0 -77
  462. package/lib/goog/string/const.js +0 -182
  463. package/lib/goog/string/string.js +0 -1599
  464. package/lib/goog/string/typedstring.js +0 -48
  465. package/lib/goog/structs/collection.js +0 -56
  466. package/lib/goog/structs/map.js +0 -457
  467. package/lib/goog/structs/set.js +0 -279
  468. package/lib/goog/structs/structs.js +0 -354
  469. package/lib/goog/style/style.js +0 -2037
  470. package/lib/goog/testing/asserts.js +0 -1278
  471. package/lib/goog/testing/events/events.js +0 -767
  472. package/lib/goog/testing/functionmock.js +0 -175
  473. package/lib/goog/testing/jsunit.js +0 -162
  474. package/lib/goog/testing/loosemock.js +0 -242
  475. package/lib/goog/testing/mock.js +0 -645
  476. package/lib/goog/testing/mockclock.js +0 -606
  477. package/lib/goog/testing/mockcontrol.js +0 -220
  478. package/lib/goog/testing/mockinterface.js +0 -45
  479. package/lib/goog/testing/mockmatchers.js +0 -400
  480. package/lib/goog/testing/objectpropertystring.js +0 -68
  481. package/lib/goog/testing/propertyreplacer.js +0 -262
  482. package/lib/goog/testing/recordfunction.js +0 -215
  483. package/lib/goog/testing/stacktrace.js +0 -594
  484. package/lib/goog/testing/strictmock.js +0 -130
  485. package/lib/goog/testing/testcase.js +0 -1629
  486. package/lib/goog/testing/testrunner.js +0 -440
  487. package/lib/goog/uri/uri.js +0 -1524
  488. package/lib/goog/uri/utils.js +0 -1064
  489. package/lib/goog/useragent/product.js +0 -183
  490. package/lib/goog/useragent/product_isversion.js +0 -144
  491. package/lib/goog/useragent/useragent.js +0 -572
  492. package/lib/webdriver/actionsequence.js +0 -356
  493. package/lib/webdriver/builder.js +0 -207
  494. package/lib/webdriver/capabilities.js +0 -412
  495. package/lib/webdriver/events.js +0 -179
  496. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  497. package/lib/webdriver/http/corsclient.js +0 -133
  498. package/lib/webdriver/http/http.js +0 -525
  499. package/lib/webdriver/http/xhrclient.js +0 -67
  500. package/lib/webdriver/locators.js +0 -257
  501. package/lib/webdriver/logging.js +0 -347
  502. package/lib/webdriver/session.js +0 -74
  503. package/lib/webdriver/stacktrace.js +0 -619
  504. package/lib/webdriver/test/builder_test.js +0 -53
  505. package/lib/webdriver/test/capabilities_test.js +0 -72
  506. package/lib/webdriver/test/events_test.js +0 -203
  507. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  508. package/lib/webdriver/test/http/http_test.js +0 -428
  509. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  510. package/lib/webdriver/test/locators_test.js +0 -59
  511. package/lib/webdriver/test/logging_test.js +0 -85
  512. package/lib/webdriver/test/promise_error_test.js +0 -892
  513. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  514. package/lib/webdriver/test/promise_generator_test.js +0 -323
  515. package/lib/webdriver/test/promise_test.js +0 -2012
  516. package/lib/webdriver/test/stacktrace_test.js +0 -480
  517. package/lib/webdriver/test/test_bootstrap.js +0 -67
  518. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  519. package/lib/webdriver/test/testing/client_test.js +0 -88
  520. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  521. package/lib/webdriver/test/testutil.js +0 -209
  522. package/lib/webdriver/test/testutil_test.js +0 -104
  523. package/lib/webdriver/test/until_test.js +0 -411
  524. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  525. package/lib/webdriver/test/webdriver_test.js +0 -2369
  526. package/lib/webdriver/testing/asserts.js +0 -487
  527. package/lib/webdriver/testing/client.js +0 -179
  528. package/lib/webdriver/testing/jsunit.js +0 -363
  529. package/lib/webdriver/testing/testcase.js +0 -168
  530. package/lib/webdriver/testing/window.js +0 -244
  531. package/lib/webdriver/touchsequence.js +0 -248
  532. package/lib/webdriver/until.js +0 -412
  533. package/lib/webdriver/webdriver.js +0 -2511
  534. package/test/_base_test.js +0 -129
@@ -1,645 +0,0 @@
1
- // Copyright 2008 The Closure Library Authors. All Rights Reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS-IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- /**
16
- * @fileoverview This file defines base classes used for creating mocks in
17
- * JavaScript. The API was inspired by EasyMock.
18
- *
19
- * The basic API is:
20
- * <ul>
21
- * <li>Create an object to be mocked
22
- * <li>Create a mock object, passing in the above object to the constructor
23
- * <li>Set expectations by calling methods on the mock object
24
- * <li>Call $replay() on the mock object
25
- * <li>Pass the mock to code that will make real calls on it
26
- * <li>Call $verify() to make sure that expectations were met
27
- * </ul>
28
- *
29
- * For examples, please see the unit tests for LooseMock and StrictMock.
30
- *
31
- * Still TODO
32
- * implement better (and pluggable) argument matching
33
- * Have the exceptions for LooseMock show the number of expected/actual calls
34
- * loose and strict mocks share a lot of code - move it to the base class
35
- *
36
- */
37
-
38
- goog.provide('goog.testing.Mock');
39
- goog.provide('goog.testing.MockExpectation');
40
-
41
- goog.require('goog.array');
42
- goog.require('goog.object');
43
- goog.require('goog.testing.JsUnitException');
44
- goog.require('goog.testing.MockInterface');
45
- goog.require('goog.testing.mockmatchers');
46
-
47
-
48
-
49
- /**
50
- * This is a class that represents an expectation.
51
- * @param {string} name The name of the method for this expectation.
52
- * @constructor
53
- * @final
54
- */
55
- goog.testing.MockExpectation = function(name) {
56
- /**
57
- * The name of the method that is expected to be called.
58
- * @type {string}
59
- */
60
- this.name = name;
61
-
62
- /**
63
- * An array of error messages for expectations not met.
64
- * @type {Array<string>}
65
- */
66
- this.errorMessages = [];
67
- };
68
-
69
-
70
- /**
71
- * The minimum number of times this method should be called.
72
- * @type {number}
73
- */
74
- goog.testing.MockExpectation.prototype.minCalls = 1;
75
-
76
-
77
- /**
78
- * The maximum number of times this method should be called.
79
- * @type {number}
80
- */
81
- goog.testing.MockExpectation.prototype.maxCalls = 1;
82
-
83
-
84
- /**
85
- * The value that this method should return.
86
- * @type {*}
87
- */
88
- goog.testing.MockExpectation.prototype.returnValue;
89
-
90
-
91
- /**
92
- * The value that will be thrown when the method is called
93
- * @type {*}
94
- */
95
- goog.testing.MockExpectation.prototype.exceptionToThrow;
96
-
97
-
98
- /**
99
- * The arguments that are expected to be passed to this function
100
- * @type {Array<*>}
101
- */
102
- goog.testing.MockExpectation.prototype.argumentList;
103
-
104
-
105
- /**
106
- * The number of times this method is called by real code.
107
- * @type {number}
108
- */
109
- goog.testing.MockExpectation.prototype.actualCalls = 0;
110
-
111
-
112
- /**
113
- * The number of times this method is called during the verification phase.
114
- * @type {number}
115
- */
116
- goog.testing.MockExpectation.prototype.verificationCalls = 0;
117
-
118
-
119
- /**
120
- * The function which will be executed when this method is called.
121
- * Method arguments will be passed to this function, and return value
122
- * of this function will be returned by the method.
123
- * @type {Function}
124
- */
125
- goog.testing.MockExpectation.prototype.toDo;
126
-
127
-
128
- /**
129
- * Allow expectation failures to include messages.
130
- * @param {string} message The failure message.
131
- */
132
- goog.testing.MockExpectation.prototype.addErrorMessage = function(message) {
133
- this.errorMessages.push(message);
134
- };
135
-
136
-
137
- /**
138
- * Get the error messages seen so far.
139
- * @return {string} Error messages separated by \n.
140
- */
141
- goog.testing.MockExpectation.prototype.getErrorMessage = function() {
142
- return this.errorMessages.join('\n');
143
- };
144
-
145
-
146
- /**
147
- * Get how many error messages have been seen so far.
148
- * @return {number} Count of error messages.
149
- */
150
- goog.testing.MockExpectation.prototype.getErrorMessageCount = function() {
151
- return this.errorMessages.length;
152
- };
153
-
154
-
155
-
156
- /**
157
- * The base class for a mock object.
158
- * @param {Object|Function} objectToMock The object that should be mocked, or
159
- * the constructor of an object to mock.
160
- * @param {boolean=} opt_mockStaticMethods An optional argument denoting that
161
- * a mock should be constructed from the static functions of a class.
162
- * @param {boolean=} opt_createProxy An optional argument denoting that
163
- * a proxy for the target mock should be created.
164
- * @constructor
165
- * @implements {goog.testing.MockInterface}
166
- */
167
- goog.testing.Mock = function(objectToMock, opt_mockStaticMethods,
168
- opt_createProxy) {
169
- if (!goog.isObject(objectToMock) && !goog.isFunction(objectToMock)) {
170
- throw new Error('objectToMock must be an object or constructor.');
171
- }
172
- if (opt_createProxy && !opt_mockStaticMethods &&
173
- goog.isFunction(objectToMock)) {
174
- /**
175
- * @constructor
176
- * @final
177
- */
178
- var tempCtor = function() {};
179
- goog.inherits(tempCtor, objectToMock);
180
- this.$proxy = new tempCtor();
181
- } else if (opt_createProxy && opt_mockStaticMethods &&
182
- goog.isFunction(objectToMock)) {
183
- throw Error('Cannot create a proxy when opt_mockStaticMethods is true');
184
- } else if (opt_createProxy && !goog.isFunction(objectToMock)) {
185
- throw Error('Must have a constructor to create a proxy');
186
- }
187
-
188
- if (goog.isFunction(objectToMock) && !opt_mockStaticMethods) {
189
- this.$initializeFunctions_(objectToMock.prototype);
190
- } else {
191
- this.$initializeFunctions_(objectToMock);
192
- }
193
- this.$argumentListVerifiers_ = {};
194
- };
195
-
196
-
197
- /**
198
- * Option that may be passed when constructing function, method, and
199
- * constructor mocks. Indicates that the expected calls should be accepted in
200
- * any order.
201
- * @const
202
- * @type {number}
203
- */
204
- goog.testing.Mock.LOOSE = 1;
205
-
206
-
207
- /**
208
- * Option that may be passed when constructing function, method, and
209
- * constructor mocks. Indicates that the expected calls should be accepted in
210
- * the recorded order only.
211
- * @const
212
- * @type {number}
213
- */
214
- goog.testing.Mock.STRICT = 0;
215
-
216
-
217
- /**
218
- * This array contains the name of the functions that are part of the base
219
- * Object prototype.
220
- * Basically a copy of goog.object.PROTOTYPE_FIELDS_.
221
- * @const
222
- * @type {!Array<string>}
223
- * @private
224
- */
225
- goog.testing.Mock.PROTOTYPE_FIELDS_ = [
226
- 'constructor',
227
- 'hasOwnProperty',
228
- 'isPrototypeOf',
229
- 'propertyIsEnumerable',
230
- 'toLocaleString',
231
- 'toString',
232
- 'valueOf'
233
- ];
234
-
235
-
236
- /**
237
- * A proxy for the mock. This can be used for dependency injection in lieu of
238
- * the mock if the test requires a strict instanceof check.
239
- * @type {Object}
240
- */
241
- goog.testing.Mock.prototype.$proxy = null;
242
-
243
-
244
- /**
245
- * Map of argument name to optional argument list verifier function.
246
- * @type {Object}
247
- */
248
- goog.testing.Mock.prototype.$argumentListVerifiers_;
249
-
250
-
251
- /**
252
- * Whether or not we are in recording mode.
253
- * @type {boolean}
254
- * @private
255
- */
256
- goog.testing.Mock.prototype.$recording_ = true;
257
-
258
-
259
- /**
260
- * The expectation currently being created. All methods that modify the
261
- * current expectation return the Mock object for easy chaining, so this is
262
- * where we keep track of the expectation that's currently being modified.
263
- * @type {goog.testing.MockExpectation}
264
- * @protected
265
- */
266
- goog.testing.Mock.prototype.$pendingExpectation;
267
-
268
-
269
- /**
270
- * First exception thrown by this mock; used in $verify.
271
- * @type {Object}
272
- * @private
273
- */
274
- goog.testing.Mock.prototype.$threwException_ = null;
275
-
276
-
277
- /**
278
- * Initializes the functions on the mock object.
279
- * @param {Object} objectToMock The object being mocked.
280
- * @private
281
- */
282
- goog.testing.Mock.prototype.$initializeFunctions_ = function(objectToMock) {
283
- // Gets the object properties.
284
- var enumerableProperties = goog.object.getKeys(objectToMock);
285
-
286
- // The non enumerable properties are added if they override the ones in the
287
- // Object prototype. This is due to the fact that IE8 does not enumerate any
288
- // of the prototype Object functions even when overriden and mocking these is
289
- // sometimes needed.
290
- for (var i = 0; i < goog.testing.Mock.PROTOTYPE_FIELDS_.length; i++) {
291
- var prop = goog.testing.Mock.PROTOTYPE_FIELDS_[i];
292
- // Look at b/6758711 if you're considering adding ALL properties to ALL
293
- // mocks.
294
- if (objectToMock[prop] !== Object.prototype[prop]) {
295
- enumerableProperties.push(prop);
296
- }
297
- }
298
-
299
- // Adds the properties to the mock.
300
- for (var i = 0; i < enumerableProperties.length; i++) {
301
- var prop = enumerableProperties[i];
302
- if (typeof objectToMock[prop] == 'function') {
303
- this[prop] = goog.bind(this.$mockMethod, this, prop);
304
- if (this.$proxy) {
305
- this.$proxy[prop] = goog.bind(this.$mockMethod, this, prop);
306
- }
307
- }
308
- }
309
- };
310
-
311
-
312
- /**
313
- * Registers a verifier function to use when verifying method argument lists.
314
- * @param {string} methodName The name of the method for which the verifierFn
315
- * should be used.
316
- * @param {Function} fn Argument list verifier function. Should take 2 argument
317
- * arrays as arguments, and return true if they are considered equivalent.
318
- * @return {!goog.testing.Mock} This mock object.
319
- */
320
- goog.testing.Mock.prototype.$registerArgumentListVerifier = function(methodName,
321
- fn) {
322
- this.$argumentListVerifiers_[methodName] = fn;
323
- return this;
324
- };
325
-
326
-
327
- /**
328
- * The function that replaces all methods on the mock object.
329
- * @param {string} name The name of the method being mocked.
330
- * @return {*} In record mode, returns the mock object. In replay mode, returns
331
- * whatever the creator of the mock set as the return value.
332
- */
333
- goog.testing.Mock.prototype.$mockMethod = function(name) {
334
- try {
335
- // Shift off the name argument so that args contains the arguments to
336
- // the mocked method.
337
- var args = goog.array.slice(arguments, 1);
338
- if (this.$recording_) {
339
- this.$pendingExpectation = new goog.testing.MockExpectation(name);
340
- this.$pendingExpectation.argumentList = args;
341
- this.$recordExpectation();
342
- return this;
343
- } else {
344
- return this.$recordCall(name, args);
345
- }
346
- } catch (ex) {
347
- this.$recordAndThrow(ex);
348
- }
349
- };
350
-
351
-
352
- /**
353
- * Records the currently pending expectation, intended to be overridden by a
354
- * subclass.
355
- * @protected
356
- */
357
- goog.testing.Mock.prototype.$recordExpectation = function() {};
358
-
359
-
360
- /**
361
- * Records an actual method call, intended to be overridden by a
362
- * subclass. The subclass must find the pending expectation and return the
363
- * correct value.
364
- * @param {string} name The name of the method being called.
365
- * @param {Array<?>} args The arguments to the method.
366
- * @return {*} The return expected by the mock.
367
- * @protected
368
- */
369
- goog.testing.Mock.prototype.$recordCall = function(name, args) {
370
- return undefined;
371
- };
372
-
373
-
374
- /**
375
- * If the expectation expects to throw, this method will throw.
376
- * @param {goog.testing.MockExpectation} expectation The expectation.
377
- */
378
- goog.testing.Mock.prototype.$maybeThrow = function(expectation) {
379
- if (typeof expectation.exceptionToThrow != 'undefined') {
380
- throw expectation.exceptionToThrow;
381
- }
382
- };
383
-
384
-
385
- /**
386
- * If this expectation defines a function to be called,
387
- * it will be called and its result will be returned.
388
- * Otherwise, if the expectation expects to throw, it will throw.
389
- * Otherwise, this method will return defined value.
390
- * @param {goog.testing.MockExpectation} expectation The expectation.
391
- * @param {Array<?>} args The arguments to the method.
392
- * @return {*} The return value expected by the mock.
393
- */
394
- goog.testing.Mock.prototype.$do = function(expectation, args) {
395
- if (typeof expectation.toDo == 'undefined') {
396
- this.$maybeThrow(expectation);
397
- return expectation.returnValue;
398
- } else {
399
- return expectation.toDo.apply(this, args);
400
- }
401
- };
402
-
403
-
404
- /**
405
- * Specifies a return value for the currently pending expectation.
406
- * @param {*} val The return value.
407
- * @return {!goog.testing.Mock} This mock object.
408
- */
409
- goog.testing.Mock.prototype.$returns = function(val) {
410
- this.$pendingExpectation.returnValue = val;
411
- return this;
412
- };
413
-
414
-
415
- /**
416
- * Specifies a value for the currently pending expectation to throw.
417
- * @param {*} val The value to throw.
418
- * @return {!goog.testing.Mock} This mock object.
419
- */
420
- goog.testing.Mock.prototype.$throws = function(val) {
421
- this.$pendingExpectation.exceptionToThrow = val;
422
- return this;
423
- };
424
-
425
-
426
- /**
427
- * Specifies a function to call for currently pending expectation.
428
- * Note, that using this method overrides declarations made
429
- * using $returns() and $throws() methods.
430
- * @param {Function} func The function to call.
431
- * @return {!goog.testing.Mock} This mock object.
432
- */
433
- goog.testing.Mock.prototype.$does = function(func) {
434
- this.$pendingExpectation.toDo = func;
435
- return this;
436
- };
437
-
438
-
439
- /**
440
- * Allows the expectation to be called 0 or 1 times.
441
- * @return {!goog.testing.Mock} This mock object.
442
- */
443
- goog.testing.Mock.prototype.$atMostOnce = function() {
444
- this.$pendingExpectation.minCalls = 0;
445
- this.$pendingExpectation.maxCalls = 1;
446
- return this;
447
- };
448
-
449
-
450
- /**
451
- * Allows the expectation to be called any number of times, as long as it's
452
- * called once.
453
- * @return {!goog.testing.Mock} This mock object.
454
- */
455
- goog.testing.Mock.prototype.$atLeastOnce = function() {
456
- this.$pendingExpectation.maxCalls = Infinity;
457
- return this;
458
- };
459
-
460
-
461
- /**
462
- * Allows the expectation to be called exactly once.
463
- * @return {!goog.testing.Mock} This mock object.
464
- */
465
- goog.testing.Mock.prototype.$once = function() {
466
- this.$pendingExpectation.minCalls = 1;
467
- this.$pendingExpectation.maxCalls = 1;
468
- return this;
469
- };
470
-
471
-
472
- /**
473
- * Disallows the expectation from being called.
474
- * @return {!goog.testing.Mock} This mock object.
475
- */
476
- goog.testing.Mock.prototype.$never = function() {
477
- this.$pendingExpectation.minCalls = 0;
478
- this.$pendingExpectation.maxCalls = 0;
479
- return this;
480
- };
481
-
482
-
483
- /**
484
- * Allows the expectation to be called any number of times.
485
- * @return {!goog.testing.Mock} This mock object.
486
- */
487
- goog.testing.Mock.prototype.$anyTimes = function() {
488
- this.$pendingExpectation.minCalls = 0;
489
- this.$pendingExpectation.maxCalls = Infinity;
490
- return this;
491
- };
492
-
493
-
494
- /**
495
- * Specifies the number of times the expectation should be called.
496
- * @param {number} times The number of times this method will be called.
497
- * @return {!goog.testing.Mock} This mock object.
498
- */
499
- goog.testing.Mock.prototype.$times = function(times) {
500
- this.$pendingExpectation.minCalls = times;
501
- this.$pendingExpectation.maxCalls = times;
502
- return this;
503
- };
504
-
505
-
506
- /**
507
- * Switches from recording to replay mode.
508
- * @override
509
- */
510
- goog.testing.Mock.prototype.$replay = function() {
511
- this.$recording_ = false;
512
- };
513
-
514
-
515
- /**
516
- * Resets the state of this mock object. This clears all pending expectations
517
- * without verifying, and puts the mock in recording mode.
518
- * @override
519
- */
520
- goog.testing.Mock.prototype.$reset = function() {
521
- this.$recording_ = true;
522
- this.$threwException_ = null;
523
- delete this.$pendingExpectation;
524
- };
525
-
526
-
527
- /**
528
- * Throws an exception and records that an exception was thrown.
529
- * @param {string} comment A short comment about the exception.
530
- * @param {?string=} opt_message A longer message about the exception.
531
- * @throws {Object} JsUnitException object.
532
- * @protected
533
- */
534
- goog.testing.Mock.prototype.$throwException = function(comment, opt_message) {
535
- this.$recordAndThrow(new goog.testing.JsUnitException(comment, opt_message));
536
- };
537
-
538
-
539
- /**
540
- * Throws an exception and records that an exception was thrown.
541
- * @param {Object} ex Exception.
542
- * @throws {Object} #ex.
543
- * @protected
544
- */
545
- goog.testing.Mock.prototype.$recordAndThrow = function(ex) {
546
- // If it's an assert exception, record it.
547
- if (ex['isJsUnitException']) {
548
- var testRunner = goog.global['G_testRunner'];
549
- if (testRunner) {
550
- var logTestFailureFunction = testRunner['logTestFailure'];
551
- if (logTestFailureFunction) {
552
- logTestFailureFunction.call(testRunner, ex);
553
- }
554
- }
555
-
556
- if (!this.$threwException_) {
557
- // Only remember first exception thrown.
558
- this.$threwException_ = ex;
559
- }
560
- }
561
- throw ex;
562
- };
563
-
564
-
565
- /**
566
- * Verify that all of the expectations were met. Should be overridden by
567
- * subclasses.
568
- * @override
569
- */
570
- goog.testing.Mock.prototype.$verify = function() {
571
- if (this.$threwException_) {
572
- throw this.$threwException_;
573
- }
574
- };
575
-
576
-
577
- /**
578
- * Verifies that a method call matches an expectation.
579
- * @param {goog.testing.MockExpectation} expectation The expectation to check.
580
- * @param {string} name The name of the called method.
581
- * @param {Array<*>?} args The arguments passed to the mock.
582
- * @return {boolean} Whether the call matches the expectation.
583
- */
584
- goog.testing.Mock.prototype.$verifyCall = function(expectation, name, args) {
585
- if (expectation.name != name) {
586
- return false;
587
- }
588
- var verifierFn =
589
- this.$argumentListVerifiers_.hasOwnProperty(expectation.name) ?
590
- this.$argumentListVerifiers_[expectation.name] :
591
- goog.testing.mockmatchers.flexibleArrayMatcher;
592
-
593
- return verifierFn(expectation.argumentList, args, expectation);
594
- };
595
-
596
-
597
- /**
598
- * Render the provided argument array to a string to help
599
- * clients with debugging tests.
600
- * @param {Array<*>?} args The arguments passed to the mock.
601
- * @return {string} Human-readable string.
602
- */
603
- goog.testing.Mock.prototype.$argumentsAsString = function(args) {
604
- var retVal = [];
605
- for (var i = 0; i < args.length; i++) {
606
- try {
607
- retVal.push(goog.typeOf(args[i]));
608
- } catch (e) {
609
- retVal.push('[unknown]');
610
- }
611
- }
612
- return '(' + retVal.join(', ') + ')';
613
- };
614
-
615
-
616
- /**
617
- * Throw an exception based on an incorrect method call.
618
- * @param {string} name Name of method called.
619
- * @param {Array<*>?} args Arguments passed to the mock.
620
- * @param {goog.testing.MockExpectation=} opt_expectation Expected next call,
621
- * if any.
622
- */
623
- goog.testing.Mock.prototype.$throwCallException = function(name, args,
624
- opt_expectation) {
625
- var errorStringBuffer = [];
626
- var actualArgsString = this.$argumentsAsString(args);
627
- var expectedArgsString = opt_expectation ?
628
- this.$argumentsAsString(opt_expectation.argumentList) : '';
629
-
630
- if (opt_expectation && opt_expectation.name == name) {
631
- errorStringBuffer.push('Bad arguments to ', name, '().\n',
632
- 'Actual: ', actualArgsString, '\n',
633
- 'Expected: ', expectedArgsString, '\n',
634
- opt_expectation.getErrorMessage());
635
- } else {
636
- errorStringBuffer.push('Unexpected call to ', name,
637
- actualArgsString, '.');
638
- if (opt_expectation) {
639
- errorStringBuffer.push('\nNext expected call was to ',
640
- opt_expectation.name,
641
- expectedArgsString);
642
- }
643
- }
644
- this.$throwException(errorStringBuffer.join(''));
645
- };