@testing-library/react-native 12.2.0 → 12.2.1

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 (283) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintcache +1 -1
  3. package/.eslintignore +1 -0
  4. package/build/fireEvent.js +1 -1
  5. package/build/fireEvent.js.map +1 -1
  6. package/build/helpers/component-tree.d.ts +11 -5
  7. package/build/helpers/component-tree.js +5 -1
  8. package/build/helpers/component-tree.js.map +1 -1
  9. package/build/helpers/findAll.d.ts +2 -1
  10. package/build/helpers/findAll.js +2 -1
  11. package/build/helpers/findAll.js.map +1 -1
  12. package/build/helpers/host-component-names.d.ts +11 -2
  13. package/build/helpers/host-component-names.js +10 -0
  14. package/build/helpers/host-component-names.js.map +1 -1
  15. package/build/helpers/matchers/matchLabelText.js +1 -1
  16. package/build/helpers/matchers/matchLabelText.js.map +1 -1
  17. package/build/queries/a11yState.js +1 -1
  18. package/build/queries/a11yState.js.map +1 -1
  19. package/build/queries/a11yValue.js +1 -1
  20. package/build/queries/a11yValue.js.map +1 -1
  21. package/build/queries/displayValue.js +5 -6
  22. package/build/queries/displayValue.js.map +1 -1
  23. package/build/queries/hintText.js +1 -1
  24. package/build/queries/hintText.js.map +1 -1
  25. package/build/queries/labelText.js +1 -1
  26. package/build/queries/labelText.js.map +1 -1
  27. package/build/queries/placeholderText.js +3 -4
  28. package/build/queries/placeholderText.js.map +1 -1
  29. package/build/queries/role.js +1 -1
  30. package/build/queries/role.js.map +1 -1
  31. package/build/queries/testId.js +3 -3
  32. package/build/queries/testId.js.map +1 -1
  33. package/build/queries/text.js +1 -2
  34. package/build/queries/text.js.map +1 -1
  35. package/build/render.js.map +1 -1
  36. package/build/user-event/clear.d.ts +3 -0
  37. package/build/user-event/clear.js +41 -0
  38. package/build/user-event/clear.js.map +1 -0
  39. package/build/user-event/index.d.ts +1 -0
  40. package/build/user-event/index.js +2 -1
  41. package/build/user-event/index.js.map +1 -1
  42. package/build/user-event/press/press.js +1 -4
  43. package/build/user-event/press/press.js.map +1 -1
  44. package/build/user-event/setup/setup.d.ts +14 -2
  45. package/build/user-event/setup/setup.js +3 -1
  46. package/build/user-event/setup/setup.js.map +1 -1
  47. package/build/user-event/type/type.d.ts +2 -1
  48. package/build/user-event/type/type.js +8 -4
  49. package/build/user-event/type/type.js.map +1 -1
  50. package/build/user-event/utils/host-components.d.ts +2 -0
  51. package/build/user-event/utils/host-components.js +11 -0
  52. package/build/user-event/utils/host-components.js.map +1 -0
  53. package/build/user-event/utils/index.d.ts +1 -0
  54. package/build/user-event/utils/index.js +11 -0
  55. package/build/user-event/utils/index.js.map +1 -1
  56. package/build/user-event/utils/text-range.d.ts +0 -1
  57. package/build/user-event/utils/text-range.js +0 -11
  58. package/build/user-event/utils/text-range.js.map +1 -1
  59. package/examples/basic/.expo/README.md +4 -6
  60. package/examples/basic/.expo/settings.json +2 -0
  61. package/examples/basic/__tests__/App.test.tsx +30 -12
  62. package/examples/basic/package.json +1 -1
  63. package/examples/basic/yarn.lock +2095 -3474
  64. package/examples/react-navigation/yarn.lock +1657 -2249
  65. package/examples/redux/yarn.lock +1772 -5376
  66. package/experiments-app/.expo/packager-info.json +9 -0
  67. package/experiments-app/.expo/settings.json +1 -2
  68. package/experiments-app/package.json +7 -9
  69. package/experiments-app/src/MainScreen.tsx +1 -0
  70. package/experiments-app/src/experiments.ts +20 -2
  71. package/experiments-app/src/screens/FlatListEvents.tsx +57 -0
  72. package/experiments-app/src/screens/ScrollViewEvents.tsx +65 -0
  73. package/experiments-app/src/screens/SectionListEvents.tsx +91 -0
  74. package/experiments-app/src/screens/TextInputEventPropagation.tsx +5 -17
  75. package/experiments-app/src/screens/TextInputEvents.tsx +13 -25
  76. package/experiments-app/src/utils/helpers.ts +13 -3
  77. package/experiments-app/yarn.lock +901 -1105
  78. package/experiments-rtl/.babelrc +8 -0
  79. package/experiments-rtl/.eslintrc.json +3 -0
  80. package/experiments-rtl/.gitignore +35 -0
  81. package/experiments-rtl/README.md +34 -0
  82. package/experiments-rtl/jest-setup.js +1 -0
  83. package/experiments-rtl/jest.config.js +4 -0
  84. package/experiments-rtl/next.config.js +4 -0
  85. package/experiments-rtl/package.json +38 -0
  86. package/experiments-rtl/postcss.config.js +6 -0
  87. package/experiments-rtl/public/next.svg +1 -0
  88. package/experiments-rtl/public/vercel.svg +1 -0
  89. package/experiments-rtl/src/app/__tests__/click.test.tsx +31 -0
  90. package/experiments-rtl/src/app/__tests__/managed-text-input.test.tsx +51 -0
  91. package/experiments-rtl/src/app/globals.css +27 -0
  92. package/experiments-rtl/src/app/layout.tsx +22 -0
  93. package/experiments-rtl/src/app/page.tsx +113 -0
  94. package/experiments-rtl/tailwind.config.ts +20 -0
  95. package/experiments-rtl/tsconfig.json +28 -0
  96. package/experiments-rtl/yarn.lock +5418 -0
  97. package/package.json +4 -2
  98. package/src/fireEvent.ts +1 -1
  99. package/src/helpers/component-tree.ts +14 -9
  100. package/src/helpers/findAll.ts +6 -4
  101. package/src/helpers/host-component-names.tsx +15 -2
  102. package/src/helpers/matchers/matchLabelText.ts +0 -1
  103. package/src/queries/a11yState.ts +2 -6
  104. package/src/queries/a11yValue.ts +2 -6
  105. package/src/queries/displayValue.ts +7 -14
  106. package/src/queries/hintText.ts +2 -7
  107. package/src/queries/labelText.ts +1 -3
  108. package/src/queries/placeholderText.ts +6 -13
  109. package/src/queries/role.ts +1 -2
  110. package/src/queries/testId.ts +5 -10
  111. package/src/queries/text.ts +3 -6
  112. package/src/render.tsx +1 -1
  113. package/src/user-event/__tests__/__snapshots__/clear.test.tsx.snap +269 -0
  114. package/src/user-event/__tests__/clear.test.tsx +217 -0
  115. package/src/user-event/clear.ts +59 -0
  116. package/src/user-event/index.ts +1 -0
  117. package/src/user-event/press/press.ts +8 -14
  118. package/src/user-event/setup/setup.ts +17 -2
  119. package/src/user-event/type/__tests__/type-managed.test.tsx +0 -1
  120. package/src/user-event/type/__tests__/type.test.tsx +0 -1
  121. package/src/user-event/type/type.ts +16 -13
  122. package/src/user-event/utils/__tests__/wait.test.ts +0 -1
  123. package/src/user-event/utils/host-components.ts +6 -0
  124. package/src/user-event/utils/index.ts +1 -0
  125. package/src/user-event/utils/text-range.ts +0 -7
  126. package/website/docs/Queries.md +64 -59
  127. package/website/docs/UserEvent.md +48 -0
  128. package/build/helpers/filterNodeByType.d.ts +0 -3
  129. package/build/helpers/filterNodeByType.js +0 -9
  130. package/build/helpers/filterNodeByType.js.map +0 -1
  131. package/coverage/clover.xml +0 -1176
  132. package/coverage/coverage-final.json +0 -70
  133. package/coverage/lcov-report/base.css +0 -224
  134. package/coverage/lcov-report/block-navigation.js +0 -87
  135. package/coverage/lcov-report/favicon.png +0 -0
  136. package/coverage/lcov-report/index.html +0 -266
  137. package/coverage/lcov-report/prettify.css +0 -1
  138. package/coverage/lcov-report/prettify.js +0 -2
  139. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  140. package/coverage/lcov-report/sorter.js +0 -196
  141. package/coverage/lcov-report/src/act.ts.html +0 -343
  142. package/coverage/lcov-report/src/cleanup.ts.html +0 -130
  143. package/coverage/lcov-report/src/config.ts.html +0 -301
  144. package/coverage/lcov-report/src/fireEvent.ts.html +0 -559
  145. package/coverage/lcov-report/src/flushMicroTasks.ts.html +0 -124
  146. package/coverage/lcov-report/src/helpers/accessiblity.ts.html +0 -412
  147. package/coverage/lcov-report/src/helpers/component-tree.ts.html +0 -352
  148. package/coverage/lcov-report/src/helpers/debugDeep.ts.html +0 -166
  149. package/coverage/lcov-report/src/helpers/debugShallow.ts.html +0 -151
  150. package/coverage/lcov-report/src/helpers/deprecation.ts.html +0 -244
  151. package/coverage/lcov-report/src/helpers/errors.ts.html +0 -283
  152. package/coverage/lcov-report/src/helpers/filterNodeByType.ts.html +0 -106
  153. package/coverage/lcov-report/src/helpers/findAll.ts.html +0 -289
  154. package/coverage/lcov-report/src/helpers/format-default.ts.html +0 -301
  155. package/coverage/lcov-report/src/helpers/format.ts.html +0 -226
  156. package/coverage/lcov-report/src/helpers/getTextContent.ts.html +0 -145
  157. package/coverage/lcov-report/src/helpers/host-component-names.tsx.html +0 -286
  158. package/coverage/lcov-report/src/helpers/index.html +0 -326
  159. package/coverage/lcov-report/src/helpers/matchers/accessibilityState.ts.html +0 -229
  160. package/coverage/lcov-report/src/helpers/matchers/accessibilityValue.ts.html +0 -157
  161. package/coverage/lcov-report/src/helpers/matchers/index.html +0 -206
  162. package/coverage/lcov-report/src/helpers/matchers/matchArrayProp.ts.html +0 -148
  163. package/coverage/lcov-report/src/helpers/matchers/matchLabelText.ts.html +0 -238
  164. package/coverage/lcov-report/src/helpers/matchers/matchObjectProp.ts.html +0 -160
  165. package/coverage/lcov-report/src/helpers/matchers/matchStringProp.ts.html +0 -154
  166. package/coverage/lcov-report/src/helpers/matchers/matchTextContent.ts.html +0 -145
  167. package/coverage/lcov-report/src/helpers/query-name.ts.html +0 -97
  168. package/coverage/lcov-report/src/helpers/stringValidation.ts.html +0 -193
  169. package/coverage/lcov-report/src/helpers/timers.ts.html +0 -382
  170. package/coverage/lcov-report/src/index.html +0 -356
  171. package/coverage/lcov-report/src/index.ts.html +0 -184
  172. package/coverage/lcov-report/src/matches.ts.html +0 -232
  173. package/coverage/lcov-report/src/pure.ts.html +0 -157
  174. package/coverage/lcov-report/src/queries/a11yState.ts.html +0 -478
  175. package/coverage/lcov-report/src/queries/a11yValue.ts.html +0 -478
  176. package/coverage/lcov-report/src/queries/displayValue.ts.html +0 -319
  177. package/coverage/lcov-report/src/queries/hintText.ts.html +0 -421
  178. package/coverage/lcov-report/src/queries/index.html +0 -281
  179. package/coverage/lcov-report/src/queries/labelText.ts.html +0 -262
  180. package/coverage/lcov-report/src/queries/makeQueries.ts.html +0 -850
  181. package/coverage/lcov-report/src/queries/placeholderText.ts.html +0 -322
  182. package/coverage/lcov-report/src/queries/role.ts.html +0 -481
  183. package/coverage/lcov-report/src/queries/testId.ts.html +0 -298
  184. package/coverage/lcov-report/src/queries/text.ts.html +0 -283
  185. package/coverage/lcov-report/src/queries/unsafeProps.ts.html +0 -313
  186. package/coverage/lcov-report/src/queries/unsafeType.ts.html +0 -304
  187. package/coverage/lcov-report/src/react-versions.ts.html +0 -118
  188. package/coverage/lcov-report/src/render-act.ts.html +0 -142
  189. package/coverage/lcov-report/src/render.tsx.html +0 -592
  190. package/coverage/lcov-report/src/renderHook.tsx.html +0 -262
  191. package/coverage/lcov-report/src/screen.ts.html +0 -454
  192. package/coverage/lcov-report/src/shallow.ts.html +0 -139
  193. package/coverage/lcov-report/src/test-utils/events.ts.html +0 -145
  194. package/coverage/lcov-report/src/test-utils/index.html +0 -131
  195. package/coverage/lcov-report/src/test-utils/index.ts.html +0 -88
  196. package/coverage/lcov-report/src/user-event/event-builder/common.ts.html +0 -229
  197. package/coverage/lcov-report/src/user-event/event-builder/index.html +0 -146
  198. package/coverage/lcov-report/src/user-event/event-builder/index.ts.html +0 -106
  199. package/coverage/lcov-report/src/user-event/event-builder/test-input.ts.html +0 -343
  200. package/coverage/lcov-report/src/user-event/event-builder/text-input.ts.html +0 -343
  201. package/coverage/lcov-report/src/user-event/index.html +0 -116
  202. package/coverage/lcov-report/src/user-event/index.ts.html +0 -121
  203. package/coverage/lcov-report/src/user-event/press/index.html +0 -131
  204. package/coverage/lcov-report/src/user-event/press/index.ts.html +0 -88
  205. package/coverage/lcov-report/src/user-event/press/press.ts.html +0 -133
  206. package/coverage/lcov-report/src/user-event/setup/index.html +0 -131
  207. package/coverage/lcov-report/src/user-event/setup/index.ts.html +0 -91
  208. package/coverage/lcov-report/src/user-event/setup/setup.ts.html +0 -358
  209. package/coverage/lcov-report/src/user-event/type/index.html +0 -146
  210. package/coverage/lcov-report/src/user-event/type/index.ts.html +0 -88
  211. package/coverage/lcov-report/src/user-event/type/parseKeys.ts.html +0 -208
  212. package/coverage/lcov-report/src/user-event/type/type.ts.html +0 -484
  213. package/coverage/lcov-report/src/user-event/utils/content-size.ts.html +0 -160
  214. package/coverage/lcov-report/src/user-event/utils/dispatch-event.ts.html +0 -367
  215. package/coverage/lcov-report/src/user-event/utils/events.ts.html +0 -247
  216. package/coverage/lcov-report/src/user-event/utils/index.html +0 -176
  217. package/coverage/lcov-report/src/user-event/utils/index.ts.html +0 -97
  218. package/coverage/lcov-report/src/user-event/utils/text-range.ts.html +0 -118
  219. package/coverage/lcov-report/src/user-event/utils/wait.ts.html +0 -130
  220. package/coverage/lcov-report/src/waitFor.ts.html +0 -772
  221. package/coverage/lcov-report/src/waitForElementToBeRemoved.ts.html +0 -211
  222. package/coverage/lcov-report/src/within.ts.html +0 -175
  223. package/coverage/lcov.info +0 -2614
  224. package/examples/.DS_Store +0 -0
  225. package/examples/basic/.expo/devices.json +0 -3
  226. package/examples/basic/yarn-error.log +0 -8083
  227. package/examples/redux/yarn-error.log +0 -8083
  228. package/src/.DS_Store +0 -0
  229. package/src/__tests__/.DS_Store +0 -0
  230. package/src/helpers/filterNodeByType.ts +0 -7
  231. package/website/.DS_Store +0 -0
  232. package/website/.docusaurus/DONT-EDIT-THIS-FOLDER +0 -5
  233. package/website/.docusaurus/client-modules.js +0 -6
  234. package/website/.docusaurus/codeTranslations.json +0 -1
  235. package/website/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json +0 -4
  236. package/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json +0 -4
  237. package/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json +0 -4
  238. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-api-md-c82.json +0 -27
  239. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -27
  240. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-md-ad8.json +0 -27
  241. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-md-8a6.json +0 -23
  242. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-should-i-query-md-f2d.json +0 -27
  243. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-11-md-add.json +0 -27
  244. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-12-md-14f.json +0 -27
  245. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-2-md-698.json +0 -27
  246. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-7-md-6bb.json +0 -27
  247. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-9-md-f69.json +0 -27
  248. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-queries-md-7ad.json +0 -27
  249. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-react-navigation-md-1bd.json +0 -27
  250. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-redux-integration-md-77b.json +0 -23
  251. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-testing-environment-md-1c6.json +0 -27
  252. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-md-01d.json +0 -27
  253. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-understanding-act-md-aa9.json +0 -27
  254. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-user-event-md-501.json +0 -27
  255. package/website/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json +0 -268
  256. package/website/.docusaurus/docusaurus-plugin-content-docs/react-native-testing-library-docs-route-96e.json +0 -115
  257. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-api-md-c82.json +0 -19
  258. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -19
  259. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-faq-md-ad8.json +0 -19
  260. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-getting-started-md-8a6.json +0 -15
  261. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-how-should-i-query-md-f2d.json +0 -19
  262. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-11-md-add.json +0 -19
  263. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-2-md-698.json +0 -19
  264. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-7-md-6bb.json +0 -19
  265. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-9-md-f69.json +0 -19
  266. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-queries-md-7ad.json +0 -19
  267. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-react-navigation-md-1bd.json +0 -19
  268. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-redux-integration-md-77b.json +0 -15
  269. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-troubleshooting-md-01d.json +0 -19
  270. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-understanding-act-md-aa9.json +0 -19
  271. package/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json +0 -4
  272. package/website/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json +0 -623
  273. package/website/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json +0 -4
  274. package/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json +0 -4
  275. package/website/.docusaurus/docusaurus.config.js +0 -267
  276. package/website/.docusaurus/docusaurus.config.mjs +0 -365
  277. package/website/.docusaurus/globalData.json +0 -113
  278. package/website/.docusaurus/i18n.json +0 -17
  279. package/website/.docusaurus/registry.js +0 -35
  280. package/website/.docusaurus/routes.js +0 -162
  281. package/website/.docusaurus/routesChunkNames.json +0 -133
  282. package/website/.docusaurus/site-metadata.json +0 -36
  283. package/yarn-error.log +0 -10613
@@ -1,772 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/waitFor.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> waitFor.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">68.18% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>60/88</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">59.52% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>25/42</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">72.72% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>8/11</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">68.6% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>59/86</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">48x</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-yes">119x</span>
327
- <span class="cline-any cline-yes">1x</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">118x</span>
332
- <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">118x</span>
334
- <span class="cline-any cline-yes">118x</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-yes">118x</span>
337
- <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">118x</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">118x</span>
341
- <span class="cline-any cline-yes">18x</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">18x</span>
348
- <span class="cline-any cline-yes">18x</span>
349
- <span class="cline-any cline-yes">38x</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-no">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">38x</span>
362
- <span class="cline-any cline-yes">8x</span>
363
- <span class="cline-any cline-yes">8x</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">30x</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">30x</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">30x</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">30x</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-yes">100x</span>
390
- <span class="cline-any cline-yes">100x</span>
391
- <span class="cline-any cline-yes">100x</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">118x</span>
398
- <span class="cline-any cline-yes">118x</span>
399
- <span class="cline-any cline-yes">100x</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-yes">118x</span>
403
- <span class="cline-any cline-yes">100x</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">118x</span>
407
- <span class="cline-any cline-yes">60x</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-yes">58x</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-yes">799x</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">799x</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-yes">947x</span>
429
- <span class="cline-any cline-yes">947x</span>
430
- <span class="cline-any cline-yes">947x</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">58x</span>
435
- <span class="cline-any cline-no">&nbsp;</span>
436
- <span class="cline-any cline-no">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-no">&nbsp;</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">58x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">889x</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">60x</span>
463
- <span class="cline-any cline-yes">60x</span>
464
- <span class="cline-any cline-yes">60x</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">60x</span>
470
- <span class="cline-any cline-yes">60x</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-yes">60x</span>
479
- <span class="cline-any cline-yes">48x</span>
480
- <span class="cline-any cline-yes">48x</span>
481
- <span class="cline-any cline-yes">48x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-yes">60x</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">119x</span>
495
- <span class="cline-any cline-yes">119x</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">119x</span>
498
- <span class="cline-any cline-yes">119x</span>
499
- <span class="cline-any cline-yes">119x</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">119x</span>
502
- <span class="cline-any cline-yes">119x</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-yes">58x</span>
505
- <span class="cline-any cline-yes">58x</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-yes">119x</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* globals jest */
525
- import act, { setReactActEnvironment, getIsReactActEnvironment } from './act';
526
- import { getConfig } from './config';
527
- import { flushMicroTasks } from './flushMicroTasks';
528
- import { ErrorWithStack, copyStackTrace } from './helpers/errors';
529
- import {
530
- setTimeout,
531
- clearTimeout,
532
- setImmediate,
533
- jestFakeTimersAreEnabled,
534
- } from './helpers/timers';
535
- import { checkReactVersionAtLeast } from './react-versions';
536
- &nbsp;
537
- const DEFAULT_INTERVAL = 50;
538
- &nbsp;
539
- export type WaitForOptions = {
540
- timeout?: number;
541
- interval?: number;
542
- stackTraceError?: ErrorWithStack;
543
- onTimeout?: (error: Error) =&gt; Error;
544
- };
545
- &nbsp;
546
- function waitForInternal&lt;T&gt;(
547
- expectation: () =&gt; T,
548
- {
549
- timeout = getConfig().asyncUtilTimeout,
550
- interval = DEFAULT_INTERVAL,
551
- stackTraceError,
552
- onTimeout,
553
- }: WaitForOptions
554
- ): Promise&lt;T&gt; {
555
- if (typeof expectation !== 'function') {
556
- throw new TypeError('Received `expectation` arg must be a function');
557
- }
558
- &nbsp;
559
- // eslint-disable-next-line no-async-promise-executor
560
- return new Promise(async (resolve, reject) =&gt; {
561
- let lastError: unknown, intervalId: ReturnType&lt;typeof setTimeout&gt;;
562
- let finished = false;
563
- let promiseStatus = 'idle';
564
- &nbsp;
565
- let overallTimeoutTimer: NodeJS.Timeout | null = null;
566
- &nbsp;
567
- const usingFakeTimers = jestFakeTimersAreEnabled();
568
- &nbsp;
569
- if (usingFakeTimers) {
570
- checkExpectation();
571
- // this is a dangerous rule to disable because it could lead to an
572
- // infinite loop. However, eslint isn't smart enough to know that we're
573
- // setting finished inside `onDone` which will be called when we're done
574
- // waiting or when we've timed out.
575
- // eslint-disable-next-line no-unmodified-loop-condition
576
- let fakeTimeRemaining = timeout;
577
- while (!finished) {
578
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!jestFakeTimersAreEnabled()) {
579
- const error = <span class="cstat-no" title="statement not covered" >new Error(</span>
580
- `Changed from using fake timers to real timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to real timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830`
581
- );
582
- <span class="cstat-no" title="statement not covered" > if (stackTraceError) {</span>
583
- <span class="cstat-no" title="statement not covered" > copyStackTrace(error, stackTraceError);</span>
584
- }
585
- <span class="cstat-no" title="statement not covered" > reject(error);</span>
586
- <span class="cstat-no" title="statement not covered" > return;</span>
587
- }
588
- &nbsp;
589
- // when fake timers are used we want to simulate the interval time passing
590
- if (fakeTimeRemaining &lt;= 0) {
591
- handleTimeout();
592
- return;
593
- } else {
594
- fakeTimeRemaining -= interval;
595
- }
596
- &nbsp;
597
- // we *could* (maybe should?) use `advanceTimersToNextTimer` but it's
598
- // possible that could make this loop go on forever if someone is using
599
- // third party code that's setting up recursive timers so rapidly that
600
- // the user's timer's don't get a chance to resolve. So we'll advance
601
- // by an interval instead. (We have a test for this case).
602
- jest.advanceTimersByTime(interval);
603
- &nbsp;
604
- // It's really important that checkExpectation is run *before* we flush
605
- // in-flight promises. To be honest, I'm not sure why, and I can't quite
606
- // think of a way to reproduce the problem in a test, but I spent
607
- // an entire day banging my head against a wall on this.
608
- checkExpectation();
609
- &nbsp;
610
- // In this rare case, we *need* to wait for in-flight promises
611
- // to resolve before continuing. We don't need to take advantage
612
- // of parallelization so we're fine.
613
- // https://stackoverflow.com/a/59243586/971592
614
- // eslint-disable-next-line no-await-in-loop
615
- await new Promise((resolve) =&gt; setImmediate(resolve));
616
- }
617
- } else {
618
- overallTimeoutTimer = setTimeout(handleTimeout, timeout);
619
- intervalId = setInterval(checkRealTimersCallback, interval);
620
- checkExpectation();
621
- }
622
- &nbsp;
623
- function onDone(
624
- done: { type: 'result'; result: T } | { type: 'error'; error: unknown }
625
- ) {
626
- finished = true;
627
- if (overallTimeoutTimer) {
628
- clearTimeout(overallTimeoutTimer);
629
- }
630
- &nbsp;
631
- if (!usingFakeTimers) {
632
- clearInterval(intervalId);
633
- }
634
- &nbsp;
635
- if (done.type === 'error') {
636
- reject(done.error);
637
- } else {
638
- resolve(done.result);
639
- }
640
- }
641
- &nbsp;
642
- function checkRealTimersCallback() {
643
- <span class="missing-if-branch" title="if path not taken" >I</span>if (jestFakeTimersAreEnabled()) {
644
- const error = <span class="cstat-no" title="statement not covered" >new Error(</span>
645
- `Changed from using real timers to fake timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to fake timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830`
646
- );
647
- <span class="cstat-no" title="statement not covered" > if (stackTraceError) {</span>
648
- <span class="cstat-no" title="statement not covered" > copyStackTrace(error, stackTraceError);</span>
649
- }
650
- <span class="cstat-no" title="statement not covered" > return reject(error);</span>
651
- } else {
652
- return checkExpectation();
653
- }
654
- }
655
- &nbsp;
656
- function checkExpectation() {
657
- <span class="missing-if-branch" title="if path not taken" >I</span>if (promiseStatus === 'pending') <span class="cstat-no" title="statement not covered" >return;</span>
658
- try {
659
- const result = expectation();
660
- &nbsp;
661
- // @ts-ignore result can be a promise
662
- // eslint-disable-next-line promise/prefer-await-to-then
663
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof result?.then === 'function') {
664
- const promiseResult: Promise&lt;T&gt; = <span class="cstat-no" title="statement not covered" >result as any;</span>
665
- <span class="cstat-no" title="statement not covered" > promiseStatus = 'pending';</span>
666
- // eslint-disable-next-line promise/catch-or-return, promise/prefer-await-to-then
667
- <span class="cstat-no" title="statement not covered" > promiseResult.then(</span>
668
- <span class="fstat-no" title="function not covered" > (r</span>esolvedValue) =&gt; {
669
- <span class="cstat-no" title="statement not covered" > promiseStatus = 'resolved';</span>
670
- <span class="cstat-no" title="statement not covered" > onDone({ type: 'result', result: resolvedValue });</span>
671
- <span class="cstat-no" title="statement not covered" > return;</span>
672
- },
673
- <span class="fstat-no" title="function not covered" > (r</span>ejectedValue) =&gt; {
674
- <span class="cstat-no" title="statement not covered" > promiseStatus = 'rejected';</span>
675
- <span class="cstat-no" title="statement not covered" > lastError = rejectedValue;</span>
676
- <span class="cstat-no" title="statement not covered" > return;</span>
677
- }
678
- );
679
- } else {
680
- onDone({ type: 'result', result: result });
681
- }
682
- // If `callback` throws, wait for the next mutation, interval, or timeout.
683
- } catch (error) {
684
- // Save the most recent callback error to reject the promise with it in the event of a timeout
685
- lastError = error;
686
- }
687
- }
688
- &nbsp;
689
- function handleTimeout() {
690
- let error: Error;
691
- if (lastError) {
692
- if (lastError instanceof Error) {
693
- error = lastError;
694
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
695
- <span class="cstat-no" title="statement not covered" > error = new Error(String(lastError));</span>
696
- }
697
- &nbsp;
698
- <span class="missing-if-branch" title="else path not taken" >E</span>if (stackTraceError) {
699
- copyStackTrace(error, stackTraceError);
700
- }
701
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
702
- <span class="cstat-no" title="statement not covered" > error = new Error('Timed out in waitFor.');</span>
703
- <span class="cstat-no" title="statement not covered" > if (stackTraceError) {</span>
704
- <span class="cstat-no" title="statement not covered" > copyStackTrace(error, stackTraceError);</span>
705
- }
706
- }
707
- if (typeof onTimeout === 'function') {
708
- const result = onTimeout(error);
709
- <span class="missing-if-branch" title="else path not taken" >E</span>if (result) {
710
- error = result;
711
- }
712
- }
713
- onDone({ type: 'error', error });
714
- }
715
- });
716
- }
717
- &nbsp;
718
- export default async function waitFor&lt;T&gt;(
719
- expectation: () =&gt; T,
720
- options?: WaitForOptions
721
- ): Promise&lt;T&gt; {
722
- // Being able to display a useful stack trace requires generating it before doing anything async
723
- const stackTraceError = new ErrorWithStack('STACK_TRACE_ERROR', waitFor);
724
- const optionsWithStackTrace = { stackTraceError, ...options };
725
- &nbsp;
726
- <span class="missing-if-branch" title="else path not taken" >E</span>if (checkReactVersionAtLeast(18, 0)) {
727
- const previousActEnvironment = getIsReactActEnvironment();
728
- setReactActEnvironment(false);
729
- &nbsp;
730
- try {
731
- const result = await waitForInternal(expectation, optionsWithStackTrace);
732
- // Flush the microtask queue before restoring the `act` environment
733
- await flushMicroTasks();
734
- return result;
735
- } finally {
736
- setReactActEnvironment(previousActEnvironment);
737
- }
738
- }
739
- &nbsp;
740
- <span class="cstat-no" title="statement not covered" > if (!checkReactVersionAtLeast(16, 9)) {</span>
741
- <span class="cstat-no" title="statement not covered" > return waitForInternal(expectation, optionsWithStackTrace);</span>
742
- }
743
- &nbsp;
744
- let result: T;
745
- &nbsp;
746
- <span class="cstat-no" title="statement not covered" > await act(<span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
747
- <span class="cstat-no" title="statement not covered" > result = await waitForInternal(expectation, optionsWithStackTrace);</span>
748
- });
749
- &nbsp;
750
- // Either we have result or `waitFor` threw error
751
- <span class="cstat-no" title="statement not covered" > return result!;</span>
752
- }
753
- &nbsp;</pre></td></tr></table></pre>
754
-
755
- <div class='push'></div><!-- for sticky footer -->
756
- </div><!-- /wrapper -->
757
- <div class='footer quiet pad2 space-top1 center small'>
758
- Code coverage generated by
759
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
760
- at 2023-05-10T21:10:10.827Z
761
- </div>
762
- <script src="../prettify.js"></script>
763
- <script>
764
- window.onload = function () {
765
- prettyPrint();
766
- };
767
- </script>
768
- <script src="../sorter.js"></script>
769
- <script src="../block-navigation.js"></script>
770
- </body>
771
- </html>
772
-