jasmine-core 2.0.0 → 2.0.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.
- checksums.yaml +4 -4
- data/lib/console/console.js +27 -22
- data/lib/jasmine-core.js +2 -0
- data/lib/jasmine-core.rb +6 -2
- data/lib/jasmine-core/__init__.py +1 -0
- data/lib/jasmine-core/boot.js +1 -1
- data/lib/jasmine-core/boot/node_boot.js +71 -0
- data/lib/jasmine-core/core.py +60 -0
- data/lib/jasmine-core/example/node_example/spec/PlayerSpec.js +60 -0
- data/lib/jasmine-core/example/node_example/spec/SpecHelper.js +15 -0
- data/lib/jasmine-core/example/node_example/src/Player.js +24 -0
- data/lib/jasmine-core/example/node_example/src/Song.js +9 -0
- data/lib/jasmine-core/jasmine-html.js +104 -73
- data/lib/jasmine-core/jasmine.css +58 -54
- data/lib/jasmine-core/jasmine.js +368 -254
- data/lib/jasmine-core/node_boot.js +93 -0
- data/lib/jasmine-core/spec/console/ConsoleReporterSpec.js +12 -0
- data/lib/jasmine-core/spec/core/AnySpec.js +1 -0
- data/lib/jasmine-core/spec/core/ClockSpec.js +103 -17
- data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +1 -1
- data/lib/jasmine-core/spec/core/EnvSpec.js +14 -14
- data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +7 -0
- data/lib/jasmine-core/spec/core/ExceptionsSpec.js +2 -2
- data/lib/jasmine-core/spec/core/ExpectationSpec.js +34 -0
- data/lib/jasmine-core/spec/core/MockDateSpec.js +179 -0
- data/lib/jasmine-core/spec/core/ObjectContainingSpec.js +6 -0
- data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +41 -10
- data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +130 -31
- data/lib/jasmine-core/spec/core/SpecSpec.js +27 -88
- data/lib/jasmine-core/spec/core/TimerSpec.js +18 -0
- data/lib/jasmine-core/spec/core/integration/EnvSpec.js +20 -2
- data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +8 -0
- data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +2 -1
- data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +3 -2
- data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +2 -1
- data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +4 -2
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +2 -1
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +17 -3
- data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +11 -11
- data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +5 -5
- data/lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js +7 -0
- data/lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js +33 -0
- data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +155 -35
- data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +1 -1
- data/lib/jasmine-core/spec/performance/large_object_test.js +36 -0
- data/lib/jasmine-core/version.rb +1 -1
- metadata +34 -23
- data/lib/jasmine-core/spec/node_suite.js +0 -187
- data/lib/jasmine-core/spec/support/dev_boot.js +0 -124
@@ -1,55 +1,59 @@
|
|
1
|
-
body {
|
1
|
+
body { overflow-y: scroll; }
|
2
2
|
|
3
|
-
.
|
4
|
-
.
|
5
|
-
.
|
6
|
-
.
|
7
|
-
.
|
8
|
-
.
|
9
|
-
.html-reporter #jasmine_content { position: fixed; right: 100%; }
|
10
|
-
.
|
11
|
-
.
|
12
|
-
.
|
13
|
-
.
|
14
|
-
.
|
15
|
-
.
|
16
|
-
.
|
17
|
-
.
|
18
|
-
.
|
19
|
-
.
|
20
|
-
.
|
21
|
-
.
|
22
|
-
.
|
23
|
-
.
|
24
|
-
.
|
25
|
-
.
|
26
|
-
.
|
27
|
-
.
|
28
|
-
.
|
29
|
-
.
|
30
|
-
.
|
31
|
-
.
|
32
|
-
.
|
33
|
-
.
|
34
|
-
.
|
35
|
-
.
|
36
|
-
.
|
37
|
-
.
|
38
|
-
.
|
39
|
-
.
|
40
|
-
.
|
41
|
-
.
|
42
|
-
.
|
43
|
-
.
|
44
|
-
.
|
45
|
-
.
|
46
|
-
.
|
47
|
-
.
|
48
|
-
.
|
49
|
-
.
|
50
|
-
.
|
51
|
-
.
|
52
|
-
.
|
53
|
-
.
|
54
|
-
.
|
55
|
-
.
|
3
|
+
.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
|
4
|
+
.jasmine_html-reporter a { text-decoration: none; }
|
5
|
+
.jasmine_html-reporter a:hover { text-decoration: underline; }
|
6
|
+
.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; }
|
7
|
+
.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; }
|
8
|
+
.jasmine_html-reporter .banner { position: relative; }
|
9
|
+
.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAZCAMAAACGusnyAAACdlBMVEX/////AP+AgICqVaqAQICZM5mAVYCSSZKAQICOOY6ATYCLRouAQICJO4mSSYCIRIiPQICHPIeOR4CGQ4aMQICGPYaLRoCFQ4WKQICPPYWJRYCOQoSJQICNPoSIRICMQoSHQICHRICKQoOHQICKPoOJO4OJQYOMQICMQ4CIQYKLQICIPoKLQ4CKQICNPoKJQISMQ4KJQoSLQYKJQISLQ4KIQoSKQYKIQICIQISMQoSKQYKLQIOLQoOJQYGLQIOKQIOMQoGKQYOLQYGKQIOLQoGJQYOJQIOKQYGJQIOKQoGKQIGLQIKLQ4KKQoGLQYKJQIGKQYKJQIGKQIKJQoGKQYKLQIGKQYKLQIOJQoKKQoOJQYKKQIOJQoKKQoOKQIOLQoKKQYOLQYKJQIOKQoKKQYKKQoKJQYOKQYKLQIOKQoKLQYOKQYKLQIOJQoGKQYKJQYGJQoGKQYKLQoGLQYGKQoGJQYKKQYGJQIKKQoGJQYKLQIKKQYGLQYKKQYGKQYGKQYKJQYOKQoKJQYOKQYKLQYOLQYOKQYKLQYOKQoKKQYKKQYOKQYOJQYKKQYKLQYKKQIKKQoKKQYKKQYKKQoKJQIKKQYKLQYKKQYKKQIKKQYKKQYKKQYKKQIKKQYKJQYGLQYGKQYKKQYKKQYGKQIKKQYGKQYOJQoKKQYOLQYKKQYOKQoKKQYKKQoKKQYKKQYKJQYKLQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKJQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKLQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKKQYKmIDpEAAAA0XRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAiIyQlJycoKissLS4wMTQ1Njc4OTo7PDw+P0BCQ0RISUpLTE1OUFNUVVdYWFlaW15fYGFiY2ZnaGlqa2xtb3BxcnN0dnh5ent8fX5/gIGChIWIioyNjo+QkZOUlZaYmZqbnJ2eoKGio6WmqKmsra6vsLGztre4ubq7vL2+wMHDxMjJysvNzs/Q0dLU1tfY2dvc3t/g4eLj5ebn6Onq6+zt7u/w8vP09fb3+Pn6+/z9/vkVQXAAAAMaSURBVHhe5dXxV1N1GMfxz2ABbDgIAm5VDJOyVDIJLUMaVpBWUZUaGbmqoGpZRSiGiRWp6KoZ5AB0ZY50RImZQIlahKkMYXv/R90dBvET/rJfOr3Ouc8v99zPec59zvf56j+vYKlViSf7250X4Mr3O29Tgq08BdGB4DhcekEJ5YkQKFsgWZdtj9JpV+I8xPjLFqkrsEIqO8PHSpis36jWazcqjEsfJjkvRssVU37SdIOu4XCf5vEJPsnwJpnRNU9JmxhMk8l1gehIrq7hTFjzOD+Vf88629qKMJVNltInFeRexRQyJlNeqd1iGDlSzrIUIyXbyFfm3RYprcQRe7lqtWyGYbfc6dT0R2vmdOOkX3u55C1rP37ftiH+tDby4r/RBT0w8TyEkr+epB9XgPDmSYYWbrhCuFYaIyw3fDQAXTnSkh+ANofiHmWf9l+FY1I90FdQTetstO00o23novzVsJ7uB3/C5TkbjRwZ5JerwV4iRWq9HFbFMaK/d0TYqayRiQPuIxxS3Bu8JWU90/60tKi7vkhaznez0a/TbVOKj5CaOZh6fWG6/Lyv9B/ZLR1gw/S/fpbeVD3MCW1li6SvWDOn65tr99/uvWtBS0XDm4s1t+sOHpG0kpBKx/l77wOSnxLpcx6TXmXLTPQOKYOf9Q1dfr8/SJ2mFdCvl1Yl93DiHUZvXeLJbGSzYu5gVJ2slbSakOR8dxCq5adQ2oFLqsE9Ex3L4qQO0eOPeU5x56bypXp4onSEb5OkICX6lDat55TeoztNKQcJaakrz9KCb95oD69IKq+yKW4XPjknaS52V0TZqE2cTtXjcHSCRmUO88e+85hj3EP74i9p8pylw7lxgMDyyl6OV7ZejnjNMfatu87LxRbH0IS35gt2a4ZjmGpVBdKK3Wr6INk8jWWSGqbA55CKgjBRC6E9w78ydTg3ABS3AFV1QN0Y4Aa2pgEjWnQURj9L0ayK6R2ysEqxHUKzYnLvvyU+i9KM2JHJzE4vyZOyDcOwOsySajeLPc8sNvPJkFlyJd20wpqAzZeAfZ3oWybxd+P/3j+SG3uSBdf2VQAAAABJRU5ErkJggg==') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; }
|
10
|
+
.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; }
|
11
|
+
.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; }
|
12
|
+
.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; }
|
13
|
+
.jasmine_html-reporter .version { color: #aaaaaa; }
|
14
|
+
.jasmine_html-reporter .banner { margin-top: 14px; }
|
15
|
+
.jasmine_html-reporter .duration { color: #aaaaaa; float: right; }
|
16
|
+
.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; }
|
17
|
+
.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; }
|
18
|
+
.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; }
|
19
|
+
.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; }
|
20
|
+
.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; }
|
21
|
+
.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; }
|
22
|
+
.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; }
|
23
|
+
.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; }
|
24
|
+
.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; }
|
25
|
+
.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; }
|
26
|
+
.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
|
27
|
+
.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
|
28
|
+
.jasmine_html-reporter .bar.failed { background-color: #ca3a11; }
|
29
|
+
.jasmine_html-reporter .bar.passed { background-color: #007069; }
|
30
|
+
.jasmine_html-reporter .bar.skipped { background-color: #bababa; }
|
31
|
+
.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; }
|
32
|
+
.jasmine_html-reporter .bar.menu a { color: #333333; }
|
33
|
+
.jasmine_html-reporter .bar a { color: white; }
|
34
|
+
.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; }
|
35
|
+
.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; }
|
36
|
+
.jasmine_html-reporter .running-alert { background-color: #666666; }
|
37
|
+
.jasmine_html-reporter .results { margin-top: 14px; }
|
38
|
+
.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
|
39
|
+
.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
|
40
|
+
.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
|
41
|
+
.jasmine_html-reporter.showDetails .summary { display: none; }
|
42
|
+
.jasmine_html-reporter.showDetails #details { display: block; }
|
43
|
+
.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
|
44
|
+
.jasmine_html-reporter .summary { margin-top: 14px; }
|
45
|
+
.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; }
|
46
|
+
.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; }
|
47
|
+
.jasmine_html-reporter .summary li.passed a { color: #007069; }
|
48
|
+
.jasmine_html-reporter .summary li.failed a { color: #ca3a11; }
|
49
|
+
.jasmine_html-reporter .summary li.empty a { color: #ba9d37; }
|
50
|
+
.jasmine_html-reporter .summary li.pending a { color: #ba9d37; }
|
51
|
+
.jasmine_html-reporter .description + .suite { margin-top: 0; }
|
52
|
+
.jasmine_html-reporter .suite { margin-top: 14px; }
|
53
|
+
.jasmine_html-reporter .suite a { color: #333333; }
|
54
|
+
.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; }
|
55
|
+
.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; }
|
56
|
+
.jasmine_html-reporter .failures .spec-detail .description a { color: white; }
|
57
|
+
.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; }
|
58
|
+
.jasmine_html-reporter .result-message span.result { display: block; }
|
59
|
+
.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
|
data/lib/jasmine-core/jasmine.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Copyright (c) 2008-
|
2
|
+
Copyright (c) 2008-2014 Pivotal Labs
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
a copy of this software and associated documentation files (the
|
@@ -21,7 +21,7 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
21
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
*/
|
23
23
|
function getJasmineRequireObj() {
|
24
|
-
if (typeof module !==
|
24
|
+
if (typeof module !== 'undefined' && module.exports) {
|
25
25
|
return exports;
|
26
26
|
} else {
|
27
27
|
window.jasmineRequire = window.jasmineRequire || {};
|
@@ -36,6 +36,7 @@ getJasmineRequireObj().core = function(jRequire) {
|
|
36
36
|
j$.util = jRequire.util();
|
37
37
|
j$.Any = jRequire.Any();
|
38
38
|
j$.CallTracker = jRequire.CallTracker();
|
39
|
+
j$.MockDate = jRequire.MockDate();
|
39
40
|
j$.Clock = jRequire.Clock();
|
40
41
|
j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler();
|
41
42
|
j$.Env = jRequire.Env(j$);
|
@@ -46,7 +47,7 @@ getJasmineRequireObj().core = function(jRequire) {
|
|
46
47
|
j$.matchersUtil = jRequire.matchersUtil(j$);
|
47
48
|
j$.ObjectContaining = jRequire.ObjectContaining(j$);
|
48
49
|
j$.pp = jRequire.pp(j$);
|
49
|
-
j$.QueueRunner = jRequire.QueueRunner();
|
50
|
+
j$.QueueRunner = jRequire.QueueRunner(j$);
|
50
51
|
j$.ReportDispatcher = jRequire.ReportDispatcher();
|
51
52
|
j$.Spec = jRequire.Spec(j$);
|
52
53
|
j$.SpyStrategy = jRequire.SpyStrategy();
|
@@ -61,23 +62,23 @@ getJasmineRequireObj().core = function(jRequire) {
|
|
61
62
|
|
62
63
|
getJasmineRequireObj().requireMatchers = function(jRequire, j$) {
|
63
64
|
var availableMatchers = [
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
65
|
+
'toBe',
|
66
|
+
'toBeCloseTo',
|
67
|
+
'toBeDefined',
|
68
|
+
'toBeFalsy',
|
69
|
+
'toBeGreaterThan',
|
70
|
+
'toBeLessThan',
|
71
|
+
'toBeNaN',
|
72
|
+
'toBeNull',
|
73
|
+
'toBeTruthy',
|
74
|
+
'toBeUndefined',
|
75
|
+
'toContain',
|
76
|
+
'toEqual',
|
77
|
+
'toHaveBeenCalled',
|
78
|
+
'toHaveBeenCalledWith',
|
79
|
+
'toMatch',
|
80
|
+
'toThrow',
|
81
|
+
'toThrowError'
|
81
82
|
],
|
82
83
|
matchers = {};
|
83
84
|
|
@@ -89,104 +90,108 @@ getJasmineRequireObj().requireMatchers = function(jRequire, j$) {
|
|
89
90
|
return matchers;
|
90
91
|
};
|
91
92
|
|
92
|
-
getJasmineRequireObj().base = function(
|
93
|
-
|
94
|
-
|
95
|
-
}
|
93
|
+
getJasmineRequireObj().base = (function (jasmineGlobal) {
|
94
|
+
if (typeof module !== 'undefined' && module.exports) {
|
95
|
+
jasmineGlobal = global;
|
96
|
+
}
|
96
97
|
|
97
|
-
j
|
98
|
-
|
98
|
+
return function(j$) {
|
99
|
+
j$.unimplementedMethod_ = function() {
|
100
|
+
throw new Error('unimplemented method');
|
101
|
+
};
|
99
102
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
j$.MAX_PRETTY_PRINT_DEPTH = 40;
|
104
|
+
j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100;
|
105
|
+
j$.DEFAULT_TIMEOUT_INTERVAL = 5000;
|
106
|
+
|
107
|
+
j$.getGlobal = function() {
|
103
108
|
return jasmineGlobal;
|
104
109
|
};
|
105
|
-
})();
|
106
110
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
111
|
+
j$.getEnv = function(options) {
|
112
|
+
var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options);
|
113
|
+
//jasmine. singletons in here (setTimeout blah blah).
|
114
|
+
return env;
|
115
|
+
};
|
112
116
|
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
j$.isArray_ = function(value) {
|
118
|
+
return j$.isA_('Array', value);
|
119
|
+
};
|
116
120
|
|
117
|
-
|
118
|
-
|
119
|
-
|
121
|
+
j$.isString_ = function(value) {
|
122
|
+
return j$.isA_('String', value);
|
123
|
+
};
|
120
124
|
|
121
|
-
|
122
|
-
|
123
|
-
|
125
|
+
j$.isNumber_ = function(value) {
|
126
|
+
return j$.isA_('Number', value);
|
127
|
+
};
|
124
128
|
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
j$.isA_ = function(typeName, value) {
|
130
|
+
return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
|
131
|
+
};
|
128
132
|
|
129
|
-
|
130
|
-
|
131
|
-
|
133
|
+
j$.isDomNode = function(obj) {
|
134
|
+
return obj.nodeType > 0;
|
135
|
+
};
|
132
136
|
|
133
|
-
|
134
|
-
|
135
|
-
|
137
|
+
j$.any = function(clazz) {
|
138
|
+
return new j$.Any(clazz);
|
139
|
+
};
|
136
140
|
|
137
|
-
|
138
|
-
|
139
|
-
|
141
|
+
j$.objectContaining = function(sample) {
|
142
|
+
return new j$.ObjectContaining(sample);
|
143
|
+
};
|
140
144
|
|
141
|
-
|
142
|
-
|
143
|
-
var spyStrategy = new j$.SpyStrategy({
|
144
|
-
name: name,
|
145
|
-
fn: originalFn,
|
146
|
-
getSpy: function() { return spy; }
|
147
|
-
}),
|
148
|
-
callTracker = new j$.CallTracker(),
|
149
|
-
spy = function() {
|
150
|
-
callTracker.track({
|
151
|
-
object: this,
|
152
|
-
args: Array.prototype.slice.apply(arguments)
|
153
|
-
});
|
154
|
-
return spyStrategy.exec.apply(this, arguments);
|
155
|
-
};
|
145
|
+
j$.createSpy = function(name, originalFn) {
|
156
146
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
147
|
+
var spyStrategy = new j$.SpyStrategy({
|
148
|
+
name: name,
|
149
|
+
fn: originalFn,
|
150
|
+
getSpy: function() { return spy; }
|
151
|
+
}),
|
152
|
+
callTracker = new j$.CallTracker(),
|
153
|
+
spy = function() {
|
154
|
+
callTracker.track({
|
155
|
+
object: this,
|
156
|
+
args: Array.prototype.slice.apply(arguments)
|
157
|
+
});
|
158
|
+
return spyStrategy.exec.apply(this, arguments);
|
159
|
+
};
|
161
160
|
|
162
|
-
|
163
|
-
|
161
|
+
for (var prop in originalFn) {
|
162
|
+
if (prop === 'and' || prop === 'calls') {
|
163
|
+
throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon');
|
164
|
+
}
|
164
165
|
|
165
|
-
|
166
|
-
|
166
|
+
spy[prop] = originalFn[prop];
|
167
|
+
}
|
167
168
|
|
168
|
-
|
169
|
-
|
169
|
+
spy.and = spyStrategy;
|
170
|
+
spy.calls = callTracker;
|
170
171
|
|
171
|
-
|
172
|
-
|
173
|
-
return false;
|
174
|
-
}
|
175
|
-
return putativeSpy.and instanceof j$.SpyStrategy &&
|
176
|
-
putativeSpy.calls instanceof j$.CallTracker;
|
177
|
-
};
|
172
|
+
return spy;
|
173
|
+
};
|
178
174
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
175
|
+
j$.isSpy = function(putativeSpy) {
|
176
|
+
if (!putativeSpy) {
|
177
|
+
return false;
|
178
|
+
}
|
179
|
+
return putativeSpy.and instanceof j$.SpyStrategy &&
|
180
|
+
putativeSpy.calls instanceof j$.CallTracker;
|
181
|
+
};
|
182
|
+
|
183
|
+
j$.createSpyObj = function(baseName, methodNames) {
|
184
|
+
if (!j$.isArray_(methodNames) || methodNames.length === 0) {
|
185
|
+
throw 'createSpyObj requires a non-empty array of method names to create spies for';
|
186
|
+
}
|
187
|
+
var obj = {};
|
188
|
+
for (var i = 0; i < methodNames.length; i++) {
|
189
|
+
obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]);
|
190
|
+
}
|
191
|
+
return obj;
|
192
|
+
};
|
188
193
|
};
|
189
|
-
};
|
194
|
+
})(this);
|
190
195
|
|
191
196
|
getJasmineRequireObj().util = function() {
|
192
197
|
|
@@ -220,6 +225,16 @@ getJasmineRequireObj().util = function() {
|
|
220
225
|
return obj === void 0;
|
221
226
|
};
|
222
227
|
|
228
|
+
util.arrayContains = function(array, search) {
|
229
|
+
var i = array.length;
|
230
|
+
while (i--) {
|
231
|
+
if (array[i] == search) {
|
232
|
+
return true;
|
233
|
+
}
|
234
|
+
}
|
235
|
+
return false;
|
236
|
+
};
|
237
|
+
|
223
238
|
return util;
|
224
239
|
};
|
225
240
|
|
@@ -239,8 +254,6 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
239
254
|
this.queueRunnerFactory = attrs.queueRunnerFactory || function() {};
|
240
255
|
this.catchingExceptions = attrs.catchingExceptions || function() { return true; };
|
241
256
|
|
242
|
-
this.timer = attrs.timer || {setTimeout: setTimeout, clearTimeout: clearTimeout};
|
243
|
-
|
244
257
|
if (!this.fn) {
|
245
258
|
this.pend();
|
246
259
|
}
|
@@ -249,15 +262,18 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
249
262
|
id: this.id,
|
250
263
|
description: this.description,
|
251
264
|
fullName: this.getFullName(),
|
252
|
-
failedExpectations: []
|
265
|
+
failedExpectations: [],
|
266
|
+
passedExpectations: []
|
253
267
|
};
|
254
268
|
}
|
255
269
|
|
256
270
|
Spec.prototype.addExpectationResult = function(passed, data) {
|
271
|
+
var expectationResult = this.expectationResultFactory(data);
|
257
272
|
if (passed) {
|
258
|
-
|
273
|
+
this.result.passedExpectations.push(expectationResult);
|
274
|
+
} else {
|
275
|
+
this.result.failedExpectations.push(expectationResult);
|
259
276
|
}
|
260
|
-
this.result.failedExpectations.push(this.expectationResultFactory(data));
|
261
277
|
};
|
262
278
|
|
263
279
|
Spec.prototype.expect = function(actual) {
|
@@ -265,8 +281,7 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
265
281
|
};
|
266
282
|
|
267
283
|
Spec.prototype.execute = function(onComplete) {
|
268
|
-
var self = this
|
269
|
-
timeout;
|
284
|
+
var self = this;
|
270
285
|
|
271
286
|
this.onStart(this);
|
272
287
|
|
@@ -275,52 +290,26 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
275
290
|
return;
|
276
291
|
}
|
277
292
|
|
278
|
-
|
279
|
-
return function(done) {
|
280
|
-
timeout = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() {
|
281
|
-
onException(new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'));
|
282
|
-
done();
|
283
|
-
}, j$.DEFAULT_TIMEOUT_INTERVAL]]);
|
284
|
-
|
285
|
-
var callDone = function() {
|
286
|
-
clearTimeoutable();
|
287
|
-
done();
|
288
|
-
};
|
289
|
-
|
290
|
-
fn.call(this, callDone); //TODO: do we care about more than 1 arg?
|
291
|
-
};
|
292
|
-
}
|
293
|
-
|
294
|
-
function clearTimeoutable() {
|
295
|
-
Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeout]]);
|
296
|
-
timeout = void 0;
|
297
|
-
}
|
298
|
-
|
299
|
-
var allFns = this.beforeFns().concat(this.fn).concat(this.afterFns()),
|
300
|
-
allTimeoutableFns = [];
|
301
|
-
for (var i = 0; i < allFns.length; i++) {
|
302
|
-
var fn = allFns[i];
|
303
|
-
allTimeoutableFns.push(fn.length > 0 ? timeoutable(fn) : fn);
|
304
|
-
}
|
293
|
+
var allFns = this.beforeFns().concat(this.fn).concat(this.afterFns());
|
305
294
|
|
306
295
|
this.queueRunnerFactory({
|
307
|
-
fns:
|
296
|
+
fns: allFns,
|
308
297
|
onException: onException,
|
309
|
-
onComplete: complete
|
298
|
+
onComplete: complete,
|
299
|
+
enforceTimeout: function() { return true; }
|
310
300
|
});
|
311
301
|
|
312
302
|
function onException(e) {
|
313
|
-
clearTimeoutable();
|
314
303
|
if (Spec.isPendingSpecException(e)) {
|
315
304
|
self.pend();
|
316
305
|
return;
|
317
306
|
}
|
318
307
|
|
319
308
|
self.addExpectationResult(false, {
|
320
|
-
matcherName:
|
309
|
+
matcherName: '',
|
321
310
|
passed: false,
|
322
|
-
expected:
|
323
|
-
actual:
|
311
|
+
expected: '',
|
312
|
+
actual: '',
|
324
313
|
error: e
|
325
314
|
});
|
326
315
|
}
|
@@ -363,16 +352,16 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
363
352
|
return this.getSpecName(this);
|
364
353
|
};
|
365
354
|
|
366
|
-
Spec.pendingSpecExceptionMessage =
|
355
|
+
Spec.pendingSpecExceptionMessage = '=> marked Pending';
|
367
356
|
|
368
357
|
Spec.isPendingSpecException = function(e) {
|
369
|
-
return e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1;
|
358
|
+
return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1);
|
370
359
|
};
|
371
360
|
|
372
361
|
return Spec;
|
373
362
|
};
|
374
363
|
|
375
|
-
if (typeof window == void 0 && typeof exports ==
|
364
|
+
if (typeof window == void 0 && typeof exports == 'object') {
|
376
365
|
exports.Spec = jasmineRequire.Spec;
|
377
366
|
}
|
378
367
|
|
@@ -389,7 +378,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|
389
378
|
|
390
379
|
var realSetTimeout = j$.getGlobal().setTimeout;
|
391
380
|
var realClearTimeout = j$.getGlobal().clearTimeout;
|
392
|
-
this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler());
|
381
|
+
this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global));
|
393
382
|
|
394
383
|
var runnableLookupTable = {};
|
395
384
|
|
@@ -399,12 +388,12 @@ getJasmineRequireObj().Env = function(j$) {
|
|
399
388
|
var currentSuite = null;
|
400
389
|
|
401
390
|
var reporter = new j$.ReportDispatcher([
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
391
|
+
'jasmineStarted',
|
392
|
+
'jasmineDone',
|
393
|
+
'suiteStarted',
|
394
|
+
'suiteDone',
|
395
|
+
'specStarted',
|
396
|
+
'specDone'
|
408
397
|
]);
|
409
398
|
|
410
399
|
this.specFilter = function() {
|
@@ -514,6 +503,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|
514
503
|
var queueRunnerFactory = function(options) {
|
515
504
|
options.catchException = catchException;
|
516
505
|
options.clearStack = options.clearStack || clearStack;
|
506
|
+
options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
|
517
507
|
|
518
508
|
new j$.QueueRunner(options).execute();
|
519
509
|
};
|
@@ -558,7 +548,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|
558
548
|
|
559
549
|
this.spyOn = function(obj, methodName) {
|
560
550
|
if (j$.util.isUndefined(obj)) {
|
561
|
-
throw new Error(
|
551
|
+
throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()');
|
562
552
|
}
|
563
553
|
|
564
554
|
if (j$.util.isUndefined(obj[methodName])) {
|
@@ -616,7 +606,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|
616
606
|
}
|
617
607
|
|
618
608
|
if (declarationError) {
|
619
|
-
this.it(
|
609
|
+
this.it('encountered a declaration exception', function() {
|
620
610
|
throw declarationError;
|
621
611
|
});
|
622
612
|
}
|
@@ -649,8 +639,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|
649
639
|
description: description,
|
650
640
|
expectationResultFactory: expectationResultFactory,
|
651
641
|
queueRunnerFactory: queueRunnerFactory,
|
652
|
-
fn: fn
|
653
|
-
timer: {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}
|
642
|
+
fn: fn
|
654
643
|
});
|
655
644
|
|
656
645
|
runnableLookupTable[spec.id] = spec;
|
@@ -695,6 +684,10 @@ getJasmineRequireObj().Env = function(j$) {
|
|
695
684
|
};
|
696
685
|
|
697
686
|
this.expect = function(actual) {
|
687
|
+
if (!currentSpec) {
|
688
|
+
throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out');
|
689
|
+
}
|
690
|
+
|
698
691
|
return currentSpec.expect(actual);
|
699
692
|
};
|
700
693
|
|
@@ -723,7 +716,7 @@ getJasmineRequireObj().JsApiReporter = function() {
|
|
723
716
|
|
724
717
|
function JsApiReporter(options) {
|
725
718
|
var timer = options.timer || noopTimer,
|
726
|
-
status =
|
719
|
+
status = 'loaded';
|
727
720
|
|
728
721
|
this.started = false;
|
729
722
|
this.finished = false;
|
@@ -819,7 +812,7 @@ getJasmineRequireObj().Any = function() {
|
|
819
812
|
};
|
820
813
|
|
821
814
|
Any.prototype.jasmineToString = function() {
|
822
|
-
return '<jasmine.any(' + this.
|
815
|
+
return '<jasmine.any(' + this.expectedObject + ')>';
|
823
816
|
};
|
824
817
|
|
825
818
|
return Any;
|
@@ -877,7 +870,7 @@ getJasmineRequireObj().CallTracker = function() {
|
|
877
870
|
};
|
878
871
|
|
879
872
|
getJasmineRequireObj().Clock = function() {
|
880
|
-
function Clock(global, delayedFunctionScheduler) {
|
873
|
+
function Clock(global, delayedFunctionScheduler, mockDate) {
|
881
874
|
var self = this,
|
882
875
|
realTimingFunctions = {
|
883
876
|
setTimeout: global.setTimeout,
|
@@ -894,23 +887,32 @@ getJasmineRequireObj().Clock = function() {
|
|
894
887
|
installed = false,
|
895
888
|
timer;
|
896
889
|
|
890
|
+
|
897
891
|
self.install = function() {
|
898
892
|
replace(global, fakeTimingFunctions);
|
899
893
|
timer = fakeTimingFunctions;
|
900
894
|
installed = true;
|
895
|
+
|
896
|
+
return self;
|
901
897
|
};
|
902
898
|
|
903
899
|
self.uninstall = function() {
|
904
900
|
delayedFunctionScheduler.reset();
|
901
|
+
mockDate.uninstall();
|
905
902
|
replace(global, realTimingFunctions);
|
903
|
+
|
906
904
|
timer = realTimingFunctions;
|
907
905
|
installed = false;
|
908
906
|
};
|
909
907
|
|
908
|
+
self.mockDate = function(initialDate) {
|
909
|
+
mockDate.install(initialDate);
|
910
|
+
};
|
911
|
+
|
910
912
|
self.setTimeout = function(fn, delay, params) {
|
911
913
|
if (legacyIE()) {
|
912
914
|
if (arguments.length > 2) {
|
913
|
-
throw new Error(
|
915
|
+
throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill');
|
914
916
|
}
|
915
917
|
return timer.setTimeout(fn, delay);
|
916
918
|
}
|
@@ -920,7 +922,7 @@ getJasmineRequireObj().Clock = function() {
|
|
920
922
|
self.setInterval = function(fn, delay, params) {
|
921
923
|
if (legacyIE()) {
|
922
924
|
if (arguments.length > 2) {
|
923
|
-
throw new Error(
|
925
|
+
throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill');
|
924
926
|
}
|
925
927
|
return timer.setInterval(fn, delay);
|
926
928
|
}
|
@@ -937,9 +939,10 @@ getJasmineRequireObj().Clock = function() {
|
|
937
939
|
|
938
940
|
self.tick = function(millis) {
|
939
941
|
if (installed) {
|
942
|
+
mockDate.tick(millis);
|
940
943
|
delayedFunctionScheduler.tick(millis);
|
941
944
|
} else {
|
942
|
-
throw new Error(
|
945
|
+
throw new Error('Mock clock is not installed, use jasmine.clock().install()');
|
943
946
|
}
|
944
947
|
};
|
945
948
|
|
@@ -973,7 +976,7 @@ getJasmineRequireObj().Clock = function() {
|
|
973
976
|
}
|
974
977
|
|
975
978
|
function argSlice(argsObj, n) {
|
976
|
-
return Array.prototype.slice.call(argsObj,
|
979
|
+
return Array.prototype.slice.call(argsObj, n);
|
977
980
|
}
|
978
981
|
}
|
979
982
|
|
@@ -1129,16 +1132,20 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
|
|
1129
1132
|
getJasmineRequireObj().ExceptionFormatter = function() {
|
1130
1133
|
function ExceptionFormatter() {
|
1131
1134
|
this.message = function(error) {
|
1132
|
-
var message =
|
1133
|
-
|
1134
|
-
|
1135
|
+
var message = '';
|
1136
|
+
|
1137
|
+
if (error.name && error.message) {
|
1138
|
+
message += error.name + ': ' + error.message;
|
1139
|
+
} else {
|
1140
|
+
message += error.toString() + ' thrown';
|
1141
|
+
}
|
1135
1142
|
|
1136
1143
|
if (error.fileName || error.sourceURL) {
|
1137
|
-
message +=
|
1144
|
+
message += ' in ' + (error.fileName || error.sourceURL);
|
1138
1145
|
}
|
1139
1146
|
|
1140
1147
|
if (error.line || error.lineNumber) {
|
1141
|
-
message +=
|
1148
|
+
message += ' (line ' + (error.line || error.lineNumber) + ')';
|
1142
1149
|
}
|
1143
1150
|
|
1144
1151
|
return message;
|
@@ -1172,7 +1179,7 @@ getJasmineRequireObj().Expectation = function() {
|
|
1172
1179
|
return function() {
|
1173
1180
|
var args = Array.prototype.slice.call(arguments, 0),
|
1174
1181
|
expected = args.slice(0),
|
1175
|
-
message =
|
1182
|
+
message = '';
|
1176
1183
|
|
1177
1184
|
args.unshift(this.actual);
|
1178
1185
|
|
@@ -1197,7 +1204,11 @@ getJasmineRequireObj().Expectation = function() {
|
|
1197
1204
|
args.unshift(name);
|
1198
1205
|
message = this.util.buildFailureMessage.apply(null, args);
|
1199
1206
|
} else {
|
1200
|
-
|
1207
|
+
if (Object.prototype.toString.apply(result.message) === '[object Function]') {
|
1208
|
+
message = result.message();
|
1209
|
+
} else {
|
1210
|
+
message = result.message;
|
1211
|
+
}
|
1201
1212
|
}
|
1202
1213
|
}
|
1203
1214
|
|
@@ -1273,18 +1284,18 @@ getJasmineRequireObj().buildExpectationResult = function() {
|
|
1273
1284
|
|
1274
1285
|
function message() {
|
1275
1286
|
if (options.passed) {
|
1276
|
-
return
|
1287
|
+
return 'Passed.';
|
1277
1288
|
} else if (options.message) {
|
1278
1289
|
return options.message;
|
1279
1290
|
} else if (options.error) {
|
1280
1291
|
return messageFormatter(options.error);
|
1281
1292
|
}
|
1282
|
-
return
|
1293
|
+
return '';
|
1283
1294
|
}
|
1284
1295
|
|
1285
1296
|
function stack() {
|
1286
1297
|
if (options.passed) {
|
1287
|
-
return
|
1298
|
+
return '';
|
1288
1299
|
}
|
1289
1300
|
|
1290
1301
|
var error = options.error;
|
@@ -1302,6 +1313,73 @@ getJasmineRequireObj().buildExpectationResult = function() {
|
|
1302
1313
|
return buildExpectationResult;
|
1303
1314
|
};
|
1304
1315
|
|
1316
|
+
getJasmineRequireObj().MockDate = function() {
|
1317
|
+
function MockDate(global) {
|
1318
|
+
var self = this;
|
1319
|
+
var currentTime = 0;
|
1320
|
+
|
1321
|
+
if (!global || !global.Date) {
|
1322
|
+
self.install = function() {};
|
1323
|
+
self.tick = function() {};
|
1324
|
+
self.uninstall = function() {};
|
1325
|
+
return self;
|
1326
|
+
}
|
1327
|
+
|
1328
|
+
var GlobalDate = global.Date;
|
1329
|
+
|
1330
|
+
self.install = function(mockDate) {
|
1331
|
+
if (mockDate instanceof GlobalDate) {
|
1332
|
+
currentTime = mockDate.getTime();
|
1333
|
+
} else {
|
1334
|
+
currentTime = new GlobalDate().getTime();
|
1335
|
+
}
|
1336
|
+
|
1337
|
+
global.Date = FakeDate;
|
1338
|
+
};
|
1339
|
+
|
1340
|
+
self.tick = function(millis) {
|
1341
|
+
millis = millis || 0;
|
1342
|
+
currentTime = currentTime + millis;
|
1343
|
+
};
|
1344
|
+
|
1345
|
+
self.uninstall = function() {
|
1346
|
+
currentTime = 0;
|
1347
|
+
global.Date = GlobalDate;
|
1348
|
+
};
|
1349
|
+
|
1350
|
+
createDateProperties();
|
1351
|
+
|
1352
|
+
return self;
|
1353
|
+
|
1354
|
+
function FakeDate() {
|
1355
|
+
if (arguments.length === 0) {
|
1356
|
+
return new GlobalDate(currentTime);
|
1357
|
+
} else {
|
1358
|
+
return new GlobalDate(arguments[0], arguments[1], arguments[2],
|
1359
|
+
arguments[3], arguments[4], arguments[5], arguments[6]);
|
1360
|
+
}
|
1361
|
+
}
|
1362
|
+
|
1363
|
+
function createDateProperties() {
|
1364
|
+
|
1365
|
+
FakeDate.now = function() {
|
1366
|
+
if (GlobalDate.now) {
|
1367
|
+
return currentTime;
|
1368
|
+
} else {
|
1369
|
+
throw new Error('Browser does not support Date.now()');
|
1370
|
+
}
|
1371
|
+
};
|
1372
|
+
|
1373
|
+
FakeDate.toSource = GlobalDate.toSource;
|
1374
|
+
FakeDate.toString = GlobalDate.toString;
|
1375
|
+
FakeDate.parse = GlobalDate.parse;
|
1376
|
+
FakeDate.UTC = GlobalDate.UTC;
|
1377
|
+
}
|
1378
|
+
}
|
1379
|
+
|
1380
|
+
return MockDate;
|
1381
|
+
};
|
1382
|
+
|
1305
1383
|
getJasmineRequireObj().ObjectContaining = function(j$) {
|
1306
1384
|
|
1307
1385
|
function ObjectContaining(sample) {
|
@@ -1309,7 +1387,7 @@ getJasmineRequireObj().ObjectContaining = function(j$) {
|
|
1309
1387
|
}
|
1310
1388
|
|
1311
1389
|
ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) {
|
1312
|
-
if (typeof(this.sample) !==
|
1390
|
+
if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); }
|
1313
1391
|
|
1314
1392
|
mismatchKeys = mismatchKeys || [];
|
1315
1393
|
mismatchValues = mismatchValues || [];
|
@@ -1320,10 +1398,10 @@ getJasmineRequireObj().ObjectContaining = function(j$) {
|
|
1320
1398
|
|
1321
1399
|
for (var property in this.sample) {
|
1322
1400
|
if (!hasKey(other, property) && hasKey(this.sample, property)) {
|
1323
|
-
mismatchKeys.push(
|
1401
|
+
mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.');
|
1324
1402
|
}
|
1325
|
-
else if (!j$.matchersUtil.equals(
|
1326
|
-
mismatchValues.push(
|
1403
|
+
else if (!j$.matchersUtil.equals(other[property], this.sample[property])) {
|
1404
|
+
mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.');
|
1327
1405
|
}
|
1328
1406
|
}
|
1329
1407
|
|
@@ -1331,7 +1409,7 @@ getJasmineRequireObj().ObjectContaining = function(j$) {
|
|
1331
1409
|
};
|
1332
1410
|
|
1333
1411
|
ObjectContaining.prototype.jasmineToString = function() {
|
1334
|
-
return
|
1412
|
+
return '<jasmine.objectContaining(' + j$.pp(this.sample) + ')>';
|
1335
1413
|
};
|
1336
1414
|
|
1337
1415
|
return ObjectContaining;
|
@@ -1341,6 +1419,7 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1341
1419
|
|
1342
1420
|
function PrettyPrinter() {
|
1343
1421
|
this.ppNestLevel_ = 0;
|
1422
|
+
this.seen = [];
|
1344
1423
|
}
|
1345
1424
|
|
1346
1425
|
PrettyPrinter.prototype.format = function(value) {
|
@@ -1350,6 +1429,8 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1350
1429
|
this.emitScalar('undefined');
|
1351
1430
|
} else if (value === null) {
|
1352
1431
|
this.emitScalar('null');
|
1432
|
+
} else if (value === 0 && 1/value === -Infinity) {
|
1433
|
+
this.emitScalar('-0');
|
1353
1434
|
} else if (value === j$.getGlobal()) {
|
1354
1435
|
this.emitScalar('<global>');
|
1355
1436
|
} else if (value.jasmineToString) {
|
@@ -1357,7 +1438,7 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1357
1438
|
} else if (typeof value === 'string') {
|
1358
1439
|
this.emitString(value);
|
1359
1440
|
} else if (j$.isSpy(value)) {
|
1360
|
-
this.emitScalar(
|
1441
|
+
this.emitScalar('spy on ' + value.and.identity());
|
1361
1442
|
} else if (value instanceof RegExp) {
|
1362
1443
|
this.emitScalar(value.toString());
|
1363
1444
|
} else if (typeof value === 'function') {
|
@@ -1366,16 +1447,16 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1366
1447
|
this.emitScalar('HTMLNode');
|
1367
1448
|
} else if (value instanceof Date) {
|
1368
1449
|
this.emitScalar('Date(' + value + ')');
|
1369
|
-
} else if (value
|
1450
|
+
} else if (j$.util.arrayContains(this.seen, value)) {
|
1370
1451
|
this.emitScalar('<circular reference: ' + (j$.isArray_(value) ? 'Array' : 'Object') + '>');
|
1371
1452
|
} else if (j$.isArray_(value) || j$.isA_('Object', value)) {
|
1372
|
-
value
|
1453
|
+
this.seen.push(value);
|
1373
1454
|
if (j$.isArray_(value)) {
|
1374
1455
|
this.emitArray(value);
|
1375
1456
|
} else {
|
1376
1457
|
this.emitObject(value);
|
1377
1458
|
}
|
1378
|
-
|
1459
|
+
this.seen.pop();
|
1379
1460
|
} else {
|
1380
1461
|
this.emitScalar(value.toString());
|
1381
1462
|
}
|
@@ -1386,8 +1467,7 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1386
1467
|
|
1387
1468
|
PrettyPrinter.prototype.iterateObject = function(obj, fn) {
|
1388
1469
|
for (var property in obj) {
|
1389
|
-
if (!
|
1390
|
-
if (property == '__Jasmine_been_here_before__') { continue; }
|
1470
|
+
if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; }
|
1391
1471
|
fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) &&
|
1392
1472
|
obj.__lookupGetter__(property) !== null) : false);
|
1393
1473
|
}
|
@@ -1411,28 +1491,31 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1411
1491
|
};
|
1412
1492
|
|
1413
1493
|
StringPrettyPrinter.prototype.emitString = function(value) {
|
1414
|
-
this.append(
|
1494
|
+
this.append('\'' + value + '\'');
|
1415
1495
|
};
|
1416
1496
|
|
1417
1497
|
StringPrettyPrinter.prototype.emitArray = function(array) {
|
1418
1498
|
if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
|
1419
|
-
this.append(
|
1499
|
+
this.append('Array');
|
1420
1500
|
return;
|
1421
1501
|
}
|
1422
|
-
|
1502
|
+
var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);
|
1423
1503
|
this.append('[ ');
|
1424
|
-
for (var i = 0; i <
|
1504
|
+
for (var i = 0; i < length; i++) {
|
1425
1505
|
if (i > 0) {
|
1426
1506
|
this.append(', ');
|
1427
1507
|
}
|
1428
1508
|
this.format(array[i]);
|
1429
1509
|
}
|
1510
|
+
if(array.length > length){
|
1511
|
+
this.append(', ...');
|
1512
|
+
}
|
1430
1513
|
this.append(' ]');
|
1431
1514
|
};
|
1432
1515
|
|
1433
1516
|
StringPrettyPrinter.prototype.emitObject = function(obj) {
|
1434
1517
|
if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
|
1435
|
-
this.append(
|
1518
|
+
this.append('Object');
|
1436
1519
|
return;
|
1437
1520
|
}
|
1438
1521
|
|
@@ -1448,7 +1531,7 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1448
1531
|
}
|
1449
1532
|
|
1450
1533
|
self.append(property);
|
1451
|
-
self.append('
|
1534
|
+
self.append(': ');
|
1452
1535
|
if (isGetter) {
|
1453
1536
|
self.append('<getter>');
|
1454
1537
|
} else {
|
@@ -1470,7 +1553,17 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1470
1553
|
};
|
1471
1554
|
};
|
1472
1555
|
|
1473
|
-
getJasmineRequireObj().QueueRunner = function() {
|
1556
|
+
getJasmineRequireObj().QueueRunner = function(j$) {
|
1557
|
+
|
1558
|
+
function once(fn) {
|
1559
|
+
var called = false;
|
1560
|
+
return function() {
|
1561
|
+
if (!called) {
|
1562
|
+
called = true;
|
1563
|
+
fn();
|
1564
|
+
}
|
1565
|
+
};
|
1566
|
+
}
|
1474
1567
|
|
1475
1568
|
function QueueRunner(attrs) {
|
1476
1569
|
this.fns = attrs.fns || [];
|
@@ -1478,7 +1571,9 @@ getJasmineRequireObj().QueueRunner = function() {
|
|
1478
1571
|
this.clearStack = attrs.clearStack || function(fn) {fn();};
|
1479
1572
|
this.onException = attrs.onException || function() {};
|
1480
1573
|
this.catchException = attrs.catchException || function() { return true; };
|
1574
|
+
this.enforceTimeout = attrs.enforceTimeout || function() { return false; };
|
1481
1575
|
this.userContext = {};
|
1576
|
+
this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout};
|
1482
1577
|
}
|
1483
1578
|
|
1484
1579
|
QueueRunner.prototype.execute = function() {
|
@@ -1514,7 +1609,21 @@ getJasmineRequireObj().QueueRunner = function() {
|
|
1514
1609
|
}
|
1515
1610
|
|
1516
1611
|
function attemptAsync(fn) {
|
1517
|
-
var
|
1612
|
+
var clearTimeout = function () {
|
1613
|
+
Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]);
|
1614
|
+
},
|
1615
|
+
next = once(function () {
|
1616
|
+
clearTimeout(timeoutId);
|
1617
|
+
self.run(fns, iterativeIndex + 1);
|
1618
|
+
}),
|
1619
|
+
timeoutId;
|
1620
|
+
|
1621
|
+
if (self.enforceTimeout()) {
|
1622
|
+
timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() {
|
1623
|
+
self.onException(new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'));
|
1624
|
+
next();
|
1625
|
+
}, j$.DEFAULT_TIMEOUT_INTERVAL]]);
|
1626
|
+
}
|
1518
1627
|
|
1519
1628
|
try {
|
1520
1629
|
fn.call(self.userContext, next);
|
@@ -1578,7 +1687,7 @@ getJasmineRequireObj().SpyStrategy = function() {
|
|
1578
1687
|
function SpyStrategy(options) {
|
1579
1688
|
options = options || {};
|
1580
1689
|
|
1581
|
-
var identity = options.name ||
|
1690
|
+
var identity = options.name || 'unknown',
|
1582
1691
|
originalFn = options.fn || function() {},
|
1583
1692
|
getSpy = options.getSpy || function() {},
|
1584
1693
|
plan = function() {};
|
@@ -1712,16 +1821,20 @@ getJasmineRequireObj().Suite = function() {
|
|
1712
1821
|
return Suite;
|
1713
1822
|
};
|
1714
1823
|
|
1715
|
-
if (typeof window == void 0 && typeof exports ==
|
1824
|
+
if (typeof window == void 0 && typeof exports == 'object') {
|
1716
1825
|
exports.Suite = jasmineRequire.Suite;
|
1717
1826
|
}
|
1718
1827
|
|
1719
1828
|
getJasmineRequireObj().Timer = function() {
|
1829
|
+
var defaultNow = (function(Date) {
|
1830
|
+
return function() { return new Date().getTime(); };
|
1831
|
+
})(Date);
|
1832
|
+
|
1720
1833
|
function Timer(options) {
|
1721
1834
|
options = options || {};
|
1722
1835
|
|
1723
|
-
var now = options.now ||
|
1724
|
-
|
1836
|
+
var now = options.now || defaultNow,
|
1837
|
+
startTime;
|
1725
1838
|
|
1726
1839
|
this.start = function() {
|
1727
1840
|
startTime = now();
|
@@ -1748,7 +1861,7 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
1748
1861
|
contains: function(haystack, needle, customTesters) {
|
1749
1862
|
customTesters = customTesters || [];
|
1750
1863
|
|
1751
|
-
if (Object.prototype.toString.apply(haystack) ===
|
1864
|
+
if (Object.prototype.toString.apply(haystack) === '[object Array]') {
|
1752
1865
|
for (var i = 0; i < haystack.length; i++) {
|
1753
1866
|
if (eq(haystack[i], needle, [], [], customTesters)) {
|
1754
1867
|
return true;
|
@@ -1756,7 +1869,7 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
1756
1869
|
}
|
1757
1870
|
return false;
|
1758
1871
|
}
|
1759
|
-
return haystack.indexOf(needle) >= 0;
|
1872
|
+
return !!haystack && haystack.indexOf(needle) >= 0;
|
1760
1873
|
},
|
1761
1874
|
|
1762
1875
|
buildFailureMessage: function() {
|
@@ -1767,21 +1880,21 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
1767
1880
|
expected = args.slice(3),
|
1768
1881
|
englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); });
|
1769
1882
|
|
1770
|
-
var message =
|
1883
|
+
var message = 'Expected ' +
|
1771
1884
|
j$.pp(actual) +
|
1772
|
-
(isNot ?
|
1885
|
+
(isNot ? ' not ' : ' ') +
|
1773
1886
|
englishyPredicate;
|
1774
1887
|
|
1775
1888
|
if (expected.length > 0) {
|
1776
1889
|
for (var i = 0; i < expected.length; i++) {
|
1777
1890
|
if (i > 0) {
|
1778
|
-
message +=
|
1891
|
+
message += ',';
|
1779
1892
|
}
|
1780
|
-
message +=
|
1893
|
+
message += ' ' + j$.pp(expected[i]);
|
1781
1894
|
}
|
1782
1895
|
}
|
1783
1896
|
|
1784
|
-
return message +
|
1897
|
+
return message + '.';
|
1785
1898
|
}
|
1786
1899
|
};
|
1787
1900
|
|
@@ -2018,9 +2131,9 @@ getJasmineRequireObj().toBeNaN = function(j$) {
|
|
2018
2131
|
};
|
2019
2132
|
|
2020
2133
|
if (result.pass) {
|
2021
|
-
result.message =
|
2134
|
+
result.message = 'Expected actual not to be NaN.';
|
2022
2135
|
} else {
|
2023
|
-
result.message =
|
2136
|
+
result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; };
|
2024
2137
|
}
|
2025
2138
|
|
2026
2139
|
return result;
|
@@ -2132,8 +2245,8 @@ getJasmineRequireObj().toHaveBeenCalled = function(j$) {
|
|
2132
2245
|
result.pass = actual.calls.any();
|
2133
2246
|
|
2134
2247
|
result.message = result.pass ?
|
2135
|
-
|
2136
|
-
|
2248
|
+
'Expected spy ' + actual.and.identity() + ' not to have been called.' :
|
2249
|
+
'Expected spy ' + actual.and.identity() + ' to have been called.';
|
2137
2250
|
|
2138
2251
|
return result;
|
2139
2252
|
}
|
@@ -2145,7 +2258,7 @@ getJasmineRequireObj().toHaveBeenCalled = function(j$) {
|
|
2145
2258
|
|
2146
2259
|
getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
|
2147
2260
|
|
2148
|
-
function toHaveBeenCalledWith(util) {
|
2261
|
+
function toHaveBeenCalledWith(util, customEqualityTesters) {
|
2149
2262
|
return {
|
2150
2263
|
compare: function() {
|
2151
2264
|
var args = Array.prototype.slice.call(arguments, 0),
|
@@ -2158,15 +2271,15 @@ getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
|
|
2158
2271
|
}
|
2159
2272
|
|
2160
2273
|
if (!actual.calls.any()) {
|
2161
|
-
result.message =
|
2274
|
+
result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; };
|
2162
2275
|
return result;
|
2163
2276
|
}
|
2164
2277
|
|
2165
|
-
if (util.contains(actual.calls.allArgs(), expectedArgs)) {
|
2278
|
+
if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) {
|
2166
2279
|
result.pass = true;
|
2167
|
-
result.message =
|
2280
|
+
result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; };
|
2168
2281
|
} else {
|
2169
|
-
result.message =
|
2282
|
+
result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; };
|
2170
2283
|
}
|
2171
2284
|
|
2172
2285
|
return result;
|
@@ -2203,8 +2316,8 @@ getJasmineRequireObj().toThrow = function(j$) {
|
|
2203
2316
|
threw = false,
|
2204
2317
|
thrown;
|
2205
2318
|
|
2206
|
-
if (typeof actual !=
|
2207
|
-
throw new Error(
|
2319
|
+
if (typeof actual != 'function') {
|
2320
|
+
throw new Error('Actual is not a Function');
|
2208
2321
|
}
|
2209
2322
|
|
2210
2323
|
try {
|
@@ -2215,22 +2328,22 @@ getJasmineRequireObj().toThrow = function(j$) {
|
|
2215
2328
|
}
|
2216
2329
|
|
2217
2330
|
if (!threw) {
|
2218
|
-
result.message =
|
2331
|
+
result.message = 'Expected function to throw an exception.';
|
2219
2332
|
return result;
|
2220
2333
|
}
|
2221
2334
|
|
2222
2335
|
if (arguments.length == 1) {
|
2223
2336
|
result.pass = true;
|
2224
|
-
result.message =
|
2337
|
+
result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; };
|
2225
2338
|
|
2226
2339
|
return result;
|
2227
2340
|
}
|
2228
2341
|
|
2229
2342
|
if (util.equals(thrown, expected)) {
|
2230
2343
|
result.pass = true;
|
2231
|
-
result.message =
|
2344
|
+
result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; };
|
2232
2345
|
} else {
|
2233
|
-
result.message =
|
2346
|
+
result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; };
|
2234
2347
|
}
|
2235
2348
|
|
2236
2349
|
return result;
|
@@ -2246,6 +2359,8 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2246
2359
|
return {
|
2247
2360
|
compare: function(actual) {
|
2248
2361
|
var threw = false,
|
2362
|
+
pass = {pass: true},
|
2363
|
+
fail = {pass: false},
|
2249
2364
|
thrown,
|
2250
2365
|
errorType,
|
2251
2366
|
message,
|
@@ -2253,8 +2368,8 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2253
2368
|
name,
|
2254
2369
|
constructorName;
|
2255
2370
|
|
2256
|
-
if (typeof actual !=
|
2257
|
-
throw new Error(
|
2371
|
+
if (typeof actual != 'function') {
|
2372
|
+
throw new Error('Actual is not a Function');
|
2258
2373
|
}
|
2259
2374
|
|
2260
2375
|
extractExpectedParams.apply(null, arguments);
|
@@ -2267,15 +2382,18 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2267
2382
|
}
|
2268
2383
|
|
2269
2384
|
if (!threw) {
|
2270
|
-
|
2385
|
+
fail.message = 'Expected function to throw an Error.';
|
2386
|
+
return fail;
|
2271
2387
|
}
|
2272
2388
|
|
2273
2389
|
if (!(thrown instanceof Error)) {
|
2274
|
-
return
|
2390
|
+
fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; };
|
2391
|
+
return fail;
|
2275
2392
|
}
|
2276
2393
|
|
2277
2394
|
if (arguments.length == 1) {
|
2278
|
-
|
2395
|
+
pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.';
|
2396
|
+
return pass;
|
2279
2397
|
}
|
2280
2398
|
|
2281
2399
|
if (errorType) {
|
@@ -2285,45 +2403,55 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2285
2403
|
|
2286
2404
|
if (errorType && message) {
|
2287
2405
|
if (thrown.constructor == errorType && util.equals(thrown.message, message)) {
|
2288
|
-
return
|
2406
|
+
pass.message = function() { return 'Expected function not to throw ' + name + ' with message ' + j$.pp(message) + '.'; };
|
2407
|
+
return pass;
|
2289
2408
|
} else {
|
2290
|
-
return
|
2291
|
-
|
2409
|
+
fail.message = function() { return 'Expected function to throw ' + name + ' with message ' + j$.pp(message) +
|
2410
|
+
', but it threw ' + constructorName + ' with message ' + j$.pp(thrown.message) + '.'; };
|
2411
|
+
return fail;
|
2292
2412
|
}
|
2293
2413
|
}
|
2294
2414
|
|
2295
2415
|
if (errorType && regexp) {
|
2296
2416
|
if (thrown.constructor == errorType && regexp.test(thrown.message)) {
|
2297
|
-
return
|
2417
|
+
pass.message = function() { return 'Expected function not to throw ' + name + ' with message matching ' + j$.pp(regexp) + '.'; };
|
2418
|
+
return pass;
|
2298
2419
|
} else {
|
2299
|
-
return
|
2300
|
-
|
2420
|
+
fail.message = function() { return 'Expected function to throw ' + name + ' with message matching ' + j$.pp(regexp) +
|
2421
|
+
', but it threw ' + constructorName + ' with message ' + j$.pp(thrown.message) + '.'; };
|
2422
|
+
return fail;
|
2301
2423
|
}
|
2302
2424
|
}
|
2303
2425
|
|
2304
2426
|
if (errorType) {
|
2305
2427
|
if (thrown.constructor == errorType) {
|
2306
|
-
|
2428
|
+
pass.message = 'Expected function not to throw ' + name + '.';
|
2429
|
+
return pass;
|
2307
2430
|
} else {
|
2308
|
-
|
2431
|
+
fail.message = 'Expected function to throw ' + name + ', but it threw ' + constructorName + '.';
|
2432
|
+
return fail;
|
2309
2433
|
}
|
2310
2434
|
}
|
2311
2435
|
|
2312
2436
|
if (message) {
|
2313
2437
|
if (thrown.message == message) {
|
2314
|
-
return
|
2438
|
+
pass.message = function() { return 'Expected function not to throw an exception with message ' + j$.pp(message) + '.'; };
|
2439
|
+
return pass;
|
2315
2440
|
} else {
|
2316
|
-
return
|
2317
|
-
|
2441
|
+
fail.message = function() { return 'Expected function to throw an exception with message ' + j$.pp(message) +
|
2442
|
+
', but it threw an exception with message ' + j$.pp(thrown.message) + '.'; };
|
2443
|
+
return fail;
|
2318
2444
|
}
|
2319
2445
|
}
|
2320
2446
|
|
2321
2447
|
if (regexp) {
|
2322
2448
|
if (regexp.test(thrown.message)) {
|
2323
|
-
return
|
2449
|
+
pass.message = function() { return 'Expected function not to throw an exception with a message matching ' + j$.pp(regexp) + '.'; };
|
2450
|
+
return pass;
|
2324
2451
|
} else {
|
2325
|
-
return
|
2326
|
-
|
2452
|
+
fail.message = function() { return 'Expected function to throw an exception with a message matching ' + j$.pp(regexp) +
|
2453
|
+
', but it threw an exception with message ' + j$.pp(thrown.message) + '.'; };
|
2454
|
+
return fail;
|
2327
2455
|
}
|
2328
2456
|
}
|
2329
2457
|
|
@@ -2331,20 +2459,6 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2331
2459
|
return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1];
|
2332
2460
|
}
|
2333
2461
|
|
2334
|
-
function pass(notMessage) {
|
2335
|
-
return {
|
2336
|
-
pass: true,
|
2337
|
-
message: notMessage
|
2338
|
-
};
|
2339
|
-
}
|
2340
|
-
|
2341
|
-
function fail(message) {
|
2342
|
-
return {
|
2343
|
-
pass: false,
|
2344
|
-
message: message
|
2345
|
-
};
|
2346
|
-
}
|
2347
|
-
|
2348
2462
|
function extractExpectedParams() {
|
2349
2463
|
if (arguments.length == 1) {
|
2350
2464
|
return;
|
@@ -2355,34 +2469,34 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2355
2469
|
|
2356
2470
|
if (expected instanceof RegExp) {
|
2357
2471
|
regexp = expected;
|
2358
|
-
} else if (typeof expected ==
|
2472
|
+
} else if (typeof expected == 'string') {
|
2359
2473
|
message = expected;
|
2360
2474
|
} else if (checkForAnErrorType(expected)) {
|
2361
2475
|
errorType = expected;
|
2362
2476
|
}
|
2363
2477
|
|
2364
2478
|
if (!(errorType || message || regexp)) {
|
2365
|
-
throw new Error(
|
2479
|
+
throw new Error('Expected is not an Error, string, or RegExp.');
|
2366
2480
|
}
|
2367
2481
|
} else {
|
2368
2482
|
if (checkForAnErrorType(arguments[1])) {
|
2369
2483
|
errorType = arguments[1];
|
2370
2484
|
} else {
|
2371
|
-
throw new Error(
|
2485
|
+
throw new Error('Expected error type is not an Error.');
|
2372
2486
|
}
|
2373
2487
|
|
2374
2488
|
if (arguments[2] instanceof RegExp) {
|
2375
2489
|
regexp = arguments[2];
|
2376
|
-
} else if (typeof arguments[2] ==
|
2490
|
+
} else if (typeof arguments[2] == 'string') {
|
2377
2491
|
message = arguments[2];
|
2378
2492
|
} else {
|
2379
|
-
throw new Error(
|
2493
|
+
throw new Error('Expected error message is not a string or RegExp.');
|
2380
2494
|
}
|
2381
2495
|
}
|
2382
2496
|
}
|
2383
2497
|
|
2384
2498
|
function checkForAnErrorType(type) {
|
2385
|
-
if (typeof type !==
|
2499
|
+
if (typeof type !== 'function') {
|
2386
2500
|
return false;
|
2387
2501
|
}
|
2388
2502
|
|
@@ -2398,5 +2512,5 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2398
2512
|
};
|
2399
2513
|
|
2400
2514
|
getJasmineRequireObj().version = function() {
|
2401
|
-
return
|
2515
|
+
return '2.0.1';
|
2402
2516
|
};
|