jasmine-core 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
};
|