jasmine-core 3.0.0 → 3.1.0
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/jasmine-core/boot/node_boot.js +1 -1
- data/lib/jasmine-core/jasmine-html.js +0 -35
- data/lib/jasmine-core/jasmine.css +0 -6
- data/lib/jasmine-core/jasmine.js +246 -36
- data/lib/jasmine-core/node_boot.js +1 -1
- data/lib/jasmine-core/version.rb +1 -1
- metadata +3 -88
- data/lib/jasmine-core/spec/core/CallTrackerSpec.js +0 -130
- data/lib/jasmine-core/spec/core/ClearStackSpec.js +0 -137
- data/lib/jasmine-core/spec/core/ClockSpec.js +0 -710
- data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +0 -286
- data/lib/jasmine-core/spec/core/EnvSpec.js +0 -200
- data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +0 -120
- data/lib/jasmine-core/spec/core/ExceptionsSpec.js +0 -46
- data/lib/jasmine-core/spec/core/ExpectationResultSpec.js +0 -61
- data/lib/jasmine-core/spec/core/ExpectationSpec.js +0 -434
- data/lib/jasmine-core/spec/core/GlobalErrorsSpec.js +0 -110
- data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +0 -259
- data/lib/jasmine-core/spec/core/MockDateSpec.js +0 -200
- data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +0 -332
- data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +0 -670
- data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +0 -140
- data/lib/jasmine-core/spec/core/SpecSpec.js +0 -407
- data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +0 -364
- data/lib/jasmine-core/spec/core/SpySpec.js +0 -177
- data/lib/jasmine-core/spec/core/SpyStrategySpec.js +0 -202
- data/lib/jasmine-core/spec/core/StackTraceSpec.js +0 -166
- data/lib/jasmine-core/spec/core/SuiteSpec.js +0 -123
- data/lib/jasmine-core/spec/core/TimerSpec.js +0 -31
- data/lib/jasmine-core/spec/core/TreeProcessorSpec.js +0 -794
- data/lib/jasmine-core/spec/core/UserContextSpec.js +0 -54
- data/lib/jasmine-core/spec/core/UtilSpec.js +0 -105
- data/lib/jasmine-core/spec/core/asymmetric_equality/AnySpec.js +0 -91
- data/lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js +0 -76
- data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js +0 -52
- data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayWithExactContentsSpec.js +0 -47
- data/lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js +0 -99
- data/lib/jasmine-core/spec/core/asymmetric_equality/StringMatchingSpec.js +0 -27
- data/lib/jasmine-core/spec/core/formatErrorMsgSpec.js +0 -13
- data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +0 -200
- data/lib/jasmine-core/spec/core/integration/CustomSpyStrategiesSpec.js +0 -138
- data/lib/jasmine-core/spec/core/integration/EnvSpec.js +0 -2344
- data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +0 -976
- data/lib/jasmine-core/spec/core/matchers/DiffBuilderSpec.js +0 -47
- data/lib/jasmine-core/spec/core/matchers/NullDiffBuilderSpec.js +0 -13
- data/lib/jasmine-core/spec/core/matchers/ObjectPathSpec.js +0 -43
- data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +0 -645
- data/lib/jasmine-core/spec/core/matchers/nothingSpec.js +0 -8
- data/lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js +0 -93
- data/lib/jasmine-core/spec/core/matchers/toBeDefinedSpec.js +0 -18
- data/lib/jasmine-core/spec/core/matchers/toBeFalsySpec.js +0 -38
- data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanOrEqualSpec.js +0 -29
- data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +0 -20
- data/lib/jasmine-core/spec/core/matchers/toBeLessThanOrEqualSpec.js +0 -29
- data/lib/jasmine-core/spec/core/matchers/toBeLessThanSpec.js +0 -20
- data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +0 -37
- data/lib/jasmine-core/spec/core/matchers/toBeNegativeInfinitySpec.js +0 -31
- data/lib/jasmine-core/spec/core/matchers/toBeNullSpec.js +0 -17
- data/lib/jasmine-core/spec/core/matchers/toBePositiveInfinitySpec.js +0 -31
- data/lib/jasmine-core/spec/core/matchers/toBeSpec.js +0 -17
- data/lib/jasmine-core/spec/core/matchers/toBeTruthySpec.js +0 -38
- data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +0 -18
- data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +0 -26
- data/lib/jasmine-core/spec/core/matchers/toEqualSpec.js +0 -785
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledBeforeSpec.js +0 -99
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +0 -47
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledTimesSpec.js +0 -86
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +0 -67
- data/lib/jasmine-core/spec/core/matchers/toMatchSpec.js +0 -43
- data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +0 -315
- data/lib/jasmine-core/spec/core/matchers/toThrowMatchingSpec.js +0 -73
- data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +0 -100
- data/lib/jasmine-core/spec/helpers/BrowserFlags.js +0 -15
- data/lib/jasmine-core/spec/helpers/asyncAwait.js +0 -27
- data/lib/jasmine-core/spec/helpers/checkForMap.js +0 -37
- data/lib/jasmine-core/spec/helpers/checkForSet.js +0 -41
- data/lib/jasmine-core/spec/helpers/checkForSymbol.js +0 -28
- data/lib/jasmine-core/spec/helpers/checkForTypedArrays.js +0 -20
- data/lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js +0 -6
- data/lib/jasmine-core/spec/helpers/integrationMatchers.js +0 -43
- data/lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js +0 -30
- data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +0 -1261
- data/lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js +0 -18
- data/lib/jasmine-core/spec/html/MatchersHtmlSpec.js +0 -37
- data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +0 -27
- data/lib/jasmine-core/spec/html/QueryStringSpec.js +0 -72
- data/lib/jasmine-core/spec/html/ResultsNodeSpec.js +0 -62
- data/lib/jasmine-core/spec/html/SpyRegistryHtmlSpec.js +0 -39
- data/lib/jasmine-core/spec/html/matchers/toHaveClassSpec.js +0 -48
- data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +0 -101
- data/lib/jasmine-core/spec/performance/large_object_test.js +0 -36
- data/lib/jasmine-core/spec/performance/performance_test.js +0 -10
@@ -23,7 +23,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
23
|
module.exports = function(jasmineRequire) {
|
24
24
|
var jasmine = jasmineRequire.core(jasmineRequire);
|
25
25
|
|
26
|
-
var env = jasmine.getEnv();
|
26
|
+
var env = jasmine.getEnv({suppressLoadErrors: true});
|
27
27
|
|
28
28
|
var jasmineInterface = jasmineRequire.interface(jasmine, env);
|
29
29
|
|
data/lib/jasmine-core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Van Hove
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -93,91 +93,6 @@ files:
|
|
93
93
|
- "./lib/jasmine-core/jasmine.js"
|
94
94
|
- "./lib/jasmine-core/json2.js"
|
95
95
|
- "./lib/jasmine-core/node_boot.js"
|
96
|
-
- "./lib/jasmine-core/spec/core/CallTrackerSpec.js"
|
97
|
-
- "./lib/jasmine-core/spec/core/ClearStackSpec.js"
|
98
|
-
- "./lib/jasmine-core/spec/core/ClockSpec.js"
|
99
|
-
- "./lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js"
|
100
|
-
- "./lib/jasmine-core/spec/core/EnvSpec.js"
|
101
|
-
- "./lib/jasmine-core/spec/core/ExceptionFormatterSpec.js"
|
102
|
-
- "./lib/jasmine-core/spec/core/ExceptionsSpec.js"
|
103
|
-
- "./lib/jasmine-core/spec/core/ExpectationResultSpec.js"
|
104
|
-
- "./lib/jasmine-core/spec/core/ExpectationSpec.js"
|
105
|
-
- "./lib/jasmine-core/spec/core/GlobalErrorsSpec.js"
|
106
|
-
- "./lib/jasmine-core/spec/core/JsApiReporterSpec.js"
|
107
|
-
- "./lib/jasmine-core/spec/core/MockDateSpec.js"
|
108
|
-
- "./lib/jasmine-core/spec/core/PrettyPrintSpec.js"
|
109
|
-
- "./lib/jasmine-core/spec/core/QueueRunnerSpec.js"
|
110
|
-
- "./lib/jasmine-core/spec/core/ReportDispatcherSpec.js"
|
111
|
-
- "./lib/jasmine-core/spec/core/SpecSpec.js"
|
112
|
-
- "./lib/jasmine-core/spec/core/SpyRegistrySpec.js"
|
113
|
-
- "./lib/jasmine-core/spec/core/SpySpec.js"
|
114
|
-
- "./lib/jasmine-core/spec/core/SpyStrategySpec.js"
|
115
|
-
- "./lib/jasmine-core/spec/core/StackTraceSpec.js"
|
116
|
-
- "./lib/jasmine-core/spec/core/SuiteSpec.js"
|
117
|
-
- "./lib/jasmine-core/spec/core/TimerSpec.js"
|
118
|
-
- "./lib/jasmine-core/spec/core/TreeProcessorSpec.js"
|
119
|
-
- "./lib/jasmine-core/spec/core/UserContextSpec.js"
|
120
|
-
- "./lib/jasmine-core/spec/core/UtilSpec.js"
|
121
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/AnySpec.js"
|
122
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js"
|
123
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js"
|
124
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/ArrayWithExactContentsSpec.js"
|
125
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js"
|
126
|
-
- "./lib/jasmine-core/spec/core/asymmetric_equality/StringMatchingSpec.js"
|
127
|
-
- "./lib/jasmine-core/spec/core/formatErrorMsgSpec.js"
|
128
|
-
- "./lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js"
|
129
|
-
- "./lib/jasmine-core/spec/core/integration/CustomSpyStrategiesSpec.js"
|
130
|
-
- "./lib/jasmine-core/spec/core/integration/EnvSpec.js"
|
131
|
-
- "./lib/jasmine-core/spec/core/integration/SpecRunningSpec.js"
|
132
|
-
- "./lib/jasmine-core/spec/core/matchers/DiffBuilderSpec.js"
|
133
|
-
- "./lib/jasmine-core/spec/core/matchers/NullDiffBuilderSpec.js"
|
134
|
-
- "./lib/jasmine-core/spec/core/matchers/ObjectPathSpec.js"
|
135
|
-
- "./lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js"
|
136
|
-
- "./lib/jasmine-core/spec/core/matchers/nothingSpec.js"
|
137
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js"
|
138
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeDefinedSpec.js"
|
139
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeFalsySpec.js"
|
140
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeGreaterThanOrEqualSpec.js"
|
141
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js"
|
142
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeLessThanOrEqualSpec.js"
|
143
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeLessThanSpec.js"
|
144
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js"
|
145
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeNegativeInfinitySpec.js"
|
146
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeNullSpec.js"
|
147
|
-
- "./lib/jasmine-core/spec/core/matchers/toBePositiveInfinitySpec.js"
|
148
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeSpec.js"
|
149
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeTruthySpec.js"
|
150
|
-
- "./lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js"
|
151
|
-
- "./lib/jasmine-core/spec/core/matchers/toContainSpec.js"
|
152
|
-
- "./lib/jasmine-core/spec/core/matchers/toEqualSpec.js"
|
153
|
-
- "./lib/jasmine-core/spec/core/matchers/toHaveBeenCalledBeforeSpec.js"
|
154
|
-
- "./lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js"
|
155
|
-
- "./lib/jasmine-core/spec/core/matchers/toHaveBeenCalledTimesSpec.js"
|
156
|
-
- "./lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js"
|
157
|
-
- "./lib/jasmine-core/spec/core/matchers/toMatchSpec.js"
|
158
|
-
- "./lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js"
|
159
|
-
- "./lib/jasmine-core/spec/core/matchers/toThrowMatchingSpec.js"
|
160
|
-
- "./lib/jasmine-core/spec/core/matchers/toThrowSpec.js"
|
161
|
-
- "./lib/jasmine-core/spec/helpers/BrowserFlags.js"
|
162
|
-
- "./lib/jasmine-core/spec/helpers/asyncAwait.js"
|
163
|
-
- "./lib/jasmine-core/spec/helpers/checkForMap.js"
|
164
|
-
- "./lib/jasmine-core/spec/helpers/checkForSet.js"
|
165
|
-
- "./lib/jasmine-core/spec/helpers/checkForSymbol.js"
|
166
|
-
- "./lib/jasmine-core/spec/helpers/checkForTypedArrays.js"
|
167
|
-
- "./lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js"
|
168
|
-
- "./lib/jasmine-core/spec/helpers/integrationMatchers.js"
|
169
|
-
- "./lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js"
|
170
|
-
- "./lib/jasmine-core/spec/html/HtmlReporterSpec.js"
|
171
|
-
- "./lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js"
|
172
|
-
- "./lib/jasmine-core/spec/html/MatchersHtmlSpec.js"
|
173
|
-
- "./lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js"
|
174
|
-
- "./lib/jasmine-core/spec/html/QueryStringSpec.js"
|
175
|
-
- "./lib/jasmine-core/spec/html/ResultsNodeSpec.js"
|
176
|
-
- "./lib/jasmine-core/spec/html/SpyRegistryHtmlSpec.js"
|
177
|
-
- "./lib/jasmine-core/spec/html/matchers/toHaveClassSpec.js"
|
178
|
-
- "./lib/jasmine-core/spec/npmPackage/npmPackageSpec.js"
|
179
|
-
- "./lib/jasmine-core/spec/performance/large_object_test.js"
|
180
|
-
- "./lib/jasmine-core/spec/performance/performance_test.js"
|
181
96
|
- "./lib/jasmine-core/version.rb"
|
182
97
|
homepage: http://jasmine.github.io
|
183
98
|
licenses:
|
@@ -199,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
114
|
version: '0'
|
200
115
|
requirements: []
|
201
116
|
rubyforge_project: jasmine-core
|
202
|
-
rubygems_version: 2.
|
117
|
+
rubygems_version: 2.6.11
|
203
118
|
signing_key:
|
204
119
|
specification_version: 4
|
205
120
|
summary: JavaScript BDD framework
|
@@ -1,130 +0,0 @@
|
|
1
|
-
describe("CallTracker", function() {
|
2
|
-
it("tracks that it was called when executed", function() {
|
3
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
4
|
-
|
5
|
-
expect(callTracker.any()).toBe(false);
|
6
|
-
|
7
|
-
callTracker.track();
|
8
|
-
|
9
|
-
expect(callTracker.any()).toBe(true);
|
10
|
-
});
|
11
|
-
|
12
|
-
it("tracks that number of times that it is executed", function() {
|
13
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
14
|
-
|
15
|
-
expect(callTracker.count()).toEqual(0);
|
16
|
-
|
17
|
-
callTracker.track();
|
18
|
-
|
19
|
-
expect(callTracker.count()).toEqual(1);
|
20
|
-
});
|
21
|
-
|
22
|
-
it("tracks the params from each execution", function() {
|
23
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
24
|
-
|
25
|
-
callTracker.track({object: void 0, args: []});
|
26
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
27
|
-
|
28
|
-
expect(callTracker.argsFor(0)).toEqual([]);
|
29
|
-
|
30
|
-
expect(callTracker.argsFor(1)).toEqual([0, "foo"]);
|
31
|
-
});
|
32
|
-
|
33
|
-
it("returns any empty array when there was no call", function() {
|
34
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
35
|
-
|
36
|
-
expect(callTracker.argsFor(0)).toEqual([]);
|
37
|
-
});
|
38
|
-
|
39
|
-
it("allows access for the arguments for all calls", function() {
|
40
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
41
|
-
|
42
|
-
callTracker.track({object: {}, args: []});
|
43
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
44
|
-
|
45
|
-
expect(callTracker.allArgs()).toEqual([[], [0, "foo"]]);
|
46
|
-
});
|
47
|
-
|
48
|
-
it("tracks the context and arguments for each call", function() {
|
49
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
50
|
-
|
51
|
-
callTracker.track({object: {}, args: []});
|
52
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
53
|
-
|
54
|
-
expect(callTracker.all()[0]).toEqual({object: {}, args: []});
|
55
|
-
|
56
|
-
expect(callTracker.all()[1]).toEqual({object: {}, args: [0, "foo"]});
|
57
|
-
});
|
58
|
-
|
59
|
-
it("simplifies access to the arguments for the last (most recent) call", function() {
|
60
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
61
|
-
|
62
|
-
callTracker.track();
|
63
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
64
|
-
|
65
|
-
expect(callTracker.mostRecent()).toEqual({
|
66
|
-
object: {},
|
67
|
-
args: [0, "foo"]
|
68
|
-
});
|
69
|
-
});
|
70
|
-
|
71
|
-
it("returns a useful falsy value when there isn't a last (most recent) call", function() {
|
72
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
73
|
-
|
74
|
-
expect(callTracker.mostRecent()).toBeFalsy();
|
75
|
-
});
|
76
|
-
|
77
|
-
it("simplifies access to the arguments for the first (oldest) call", function() {
|
78
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
79
|
-
|
80
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
81
|
-
|
82
|
-
expect(callTracker.first()).toEqual({object: {}, args: [0, "foo"]})
|
83
|
-
});
|
84
|
-
|
85
|
-
it("returns a useful falsy value when there isn't a first (oldest) call", function() {
|
86
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
87
|
-
|
88
|
-
expect(callTracker.first()).toBeFalsy();
|
89
|
-
});
|
90
|
-
|
91
|
-
|
92
|
-
it("allows the tracking to be reset", function() {
|
93
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
94
|
-
|
95
|
-
callTracker.track();
|
96
|
-
callTracker.track({object: {}, args: [0, "foo"]});
|
97
|
-
callTracker.reset();
|
98
|
-
|
99
|
-
expect(callTracker.any()).toBe(false);
|
100
|
-
expect(callTracker.count()).toEqual(0);
|
101
|
-
expect(callTracker.argsFor(0)).toEqual([]);
|
102
|
-
expect(callTracker.all()).toEqual([]);
|
103
|
-
expect(callTracker.mostRecent()).toBeFalsy();
|
104
|
-
});
|
105
|
-
|
106
|
-
it("allows object arguments to be shallow cloned", function() {
|
107
|
-
var callTracker = new jasmineUnderTest.CallTracker();
|
108
|
-
callTracker.saveArgumentsByValue();
|
109
|
-
|
110
|
-
var objectArg = {"foo": "bar"},
|
111
|
-
arrayArg = ["foo", "bar"];
|
112
|
-
|
113
|
-
callTracker.track({object: {}, args: [objectArg, arrayArg, false, undefined, null, NaN, "", 0, 1.0]});
|
114
|
-
|
115
|
-
expect(callTracker.mostRecent().args[0]).not.toBe(objectArg);
|
116
|
-
expect(callTracker.mostRecent().args[0]).toEqual(objectArg);
|
117
|
-
expect(callTracker.mostRecent().args[1]).not.toBe(arrayArg);
|
118
|
-
expect(callTracker.mostRecent().args[1]).toEqual(arrayArg);
|
119
|
-
});
|
120
|
-
|
121
|
-
it('saves primitive arguments by value', function() {
|
122
|
-
var callTracker = new jasmineUnderTest.CallTracker(),
|
123
|
-
args = [undefined, null, false, '', /\s/, 0, 1.2, NaN];
|
124
|
-
|
125
|
-
callTracker.saveArgumentsByValue();
|
126
|
-
callTracker.track({ object: {}, args: args });
|
127
|
-
|
128
|
-
expect(callTracker.mostRecent().args).toEqual(args);
|
129
|
-
});
|
130
|
-
});
|
@@ -1,137 +0,0 @@
|
|
1
|
-
describe("ClearStack", function() {
|
2
|
-
it("works in an integrationy way", function(done) {
|
3
|
-
var clearStack = jasmineUnderTest.getClearStack(jasmineUnderTest.getGlobal());
|
4
|
-
|
5
|
-
clearStack(function() {
|
6
|
-
done();
|
7
|
-
});
|
8
|
-
});
|
9
|
-
|
10
|
-
it("uses setImmediate when available", function() {
|
11
|
-
var setImmediate = jasmine.createSpy('setImmediate').and.callFake(function(fn) { fn() }),
|
12
|
-
global = { setImmediate: setImmediate },
|
13
|
-
clearStack = jasmineUnderTest.getClearStack(global),
|
14
|
-
called = false;
|
15
|
-
|
16
|
-
clearStack(function() {
|
17
|
-
called = true;
|
18
|
-
});
|
19
|
-
|
20
|
-
expect(called).toBe(true);
|
21
|
-
expect(setImmediate).toHaveBeenCalled();
|
22
|
-
});
|
23
|
-
|
24
|
-
it("uses setTimeout instead of setImmediate every 10 calls to make sure we release the CPU", function() {
|
25
|
-
var setImmediate = jasmine.createSpy('setImmediate'),
|
26
|
-
setTimeout = jasmine.createSpy('setTimeout'),
|
27
|
-
global = { setImmediate: setImmediate, setTimeout: setTimeout },
|
28
|
-
clearStack = jasmineUnderTest.getClearStack(global);
|
29
|
-
|
30
|
-
clearStack(function() { });
|
31
|
-
clearStack(function() { });
|
32
|
-
clearStack(function() { });
|
33
|
-
clearStack(function() { });
|
34
|
-
clearStack(function() { });
|
35
|
-
clearStack(function() { });
|
36
|
-
clearStack(function() { });
|
37
|
-
clearStack(function() { });
|
38
|
-
clearStack(function() { });
|
39
|
-
|
40
|
-
expect(setImmediate).toHaveBeenCalled();
|
41
|
-
expect(setTimeout).not.toHaveBeenCalled();
|
42
|
-
|
43
|
-
clearStack(function() { });
|
44
|
-
expect(setImmediate.calls.count()).toEqual(9);
|
45
|
-
expect(setTimeout.calls.count()).toEqual(1);
|
46
|
-
|
47
|
-
clearStack(function() { });
|
48
|
-
expect(setImmediate.calls.count()).toEqual(10);
|
49
|
-
expect(setTimeout.calls.count()).toEqual(1);
|
50
|
-
});
|
51
|
-
|
52
|
-
it("uses MessageChannels when available", function() {
|
53
|
-
var fakeChannel = {
|
54
|
-
port1: {},
|
55
|
-
port2: { postMessage: function() { fakeChannel.port1.onmessage(); } }
|
56
|
-
},
|
57
|
-
global = { MessageChannel: function() { return fakeChannel; } },
|
58
|
-
clearStack = jasmineUnderTest.getClearStack(global),
|
59
|
-
called = false;
|
60
|
-
|
61
|
-
clearStack(function() {
|
62
|
-
called = true;
|
63
|
-
});
|
64
|
-
|
65
|
-
expect(called).toBe(true);
|
66
|
-
});
|
67
|
-
|
68
|
-
it("uses setTimeout instead of MessageChannel every 10 calls to make sure we release the CPU", function() {
|
69
|
-
var fakeChannel = {
|
70
|
-
port1: {},
|
71
|
-
port2: {
|
72
|
-
postMessage: jasmine.createSpy('postMessage').and.callFake(function() {
|
73
|
-
fakeChannel.port1.onmessage();
|
74
|
-
})
|
75
|
-
}
|
76
|
-
},
|
77
|
-
setTimeout = jasmine.createSpy('setTimeout'),
|
78
|
-
global = { MessageChannel: function() { return fakeChannel; }, setTimeout: setTimeout },
|
79
|
-
clearStack = jasmineUnderTest.getClearStack(global);
|
80
|
-
|
81
|
-
clearStack(function() { });
|
82
|
-
clearStack(function() { });
|
83
|
-
clearStack(function() { });
|
84
|
-
clearStack(function() { });
|
85
|
-
clearStack(function() { });
|
86
|
-
clearStack(function() { });
|
87
|
-
clearStack(function() { });
|
88
|
-
clearStack(function() { });
|
89
|
-
clearStack(function() { });
|
90
|
-
|
91
|
-
expect(fakeChannel.port2.postMessage).toHaveBeenCalled();
|
92
|
-
expect(setTimeout).not.toHaveBeenCalled();
|
93
|
-
|
94
|
-
clearStack(function() { });
|
95
|
-
expect(fakeChannel.port2.postMessage.calls.count()).toEqual(9);
|
96
|
-
expect(setTimeout.calls.count()).toEqual(1);
|
97
|
-
|
98
|
-
clearStack(function() { });
|
99
|
-
expect(fakeChannel.port2.postMessage.calls.count()).toEqual(10);
|
100
|
-
expect(setTimeout.calls.count()).toEqual(1);
|
101
|
-
});
|
102
|
-
|
103
|
-
it("calls setTimeout when onmessage is called recursively", function() {
|
104
|
-
var fakeChannel = {
|
105
|
-
port1: {},
|
106
|
-
port2: { postMessage: function() { fakeChannel.port1.onmessage(); } }
|
107
|
-
},
|
108
|
-
setTimeout = jasmine.createSpy('setTimeout'),
|
109
|
-
global = {
|
110
|
-
MessageChannel: function() { return fakeChannel; },
|
111
|
-
setTimeout: setTimeout,
|
112
|
-
},
|
113
|
-
clearStack = jasmineUnderTest.getClearStack(global),
|
114
|
-
fn = jasmine.createSpy("second clearStack function");
|
115
|
-
|
116
|
-
clearStack(function() {
|
117
|
-
clearStack(fn);
|
118
|
-
});
|
119
|
-
|
120
|
-
expect(fn).not.toHaveBeenCalled();
|
121
|
-
expect(setTimeout).toHaveBeenCalledWith(fn, 0);
|
122
|
-
});
|
123
|
-
|
124
|
-
it("falls back to setTimeout", function() {
|
125
|
-
var setTimeout = jasmine.createSpy('setTimeout').and.callFake(function(fn) { fn() }),
|
126
|
-
global = { setTimeout: setTimeout },
|
127
|
-
clearStack = jasmineUnderTest.getClearStack(global),
|
128
|
-
called = false;
|
129
|
-
|
130
|
-
clearStack(function() {
|
131
|
-
called = true;
|
132
|
-
});
|
133
|
-
|
134
|
-
expect(called).toBe(true);
|
135
|
-
expect(setTimeout).toHaveBeenCalledWith(jasmine.any(Function), 0);
|
136
|
-
});
|
137
|
-
});
|
@@ -1,710 +0,0 @@
|
|
1
|
-
describe("Clock", function() {
|
2
|
-
|
3
|
-
var NODE_JS = typeof process !== 'undefined' && process.versions && typeof process.versions.node === 'string';
|
4
|
-
|
5
|
-
it("does not replace setTimeout until it is installed", function() {
|
6
|
-
var fakeSetTimeout = jasmine.createSpy("global setTimeout"),
|
7
|
-
fakeGlobal = { setTimeout: fakeSetTimeout },
|
8
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["scheduleFunction"]),
|
9
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
10
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
11
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
12
|
-
|
13
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
14
|
-
|
15
|
-
expect(fakeSetTimeout).toHaveBeenCalledWith(delayedFn, 0);
|
16
|
-
expect(delayedFunctionScheduler.scheduleFunction).not.toHaveBeenCalled();
|
17
|
-
|
18
|
-
fakeSetTimeout.calls.reset();
|
19
|
-
|
20
|
-
clock.install();
|
21
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
22
|
-
|
23
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalled();
|
24
|
-
expect(fakeSetTimeout).not.toHaveBeenCalled();
|
25
|
-
});
|
26
|
-
|
27
|
-
it("does not replace clearTimeout until it is installed", function() {
|
28
|
-
var fakeClearTimeout = jasmine.createSpy("global cleartimeout"),
|
29
|
-
fakeGlobal = { clearTimeout: fakeClearTimeout },
|
30
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["removeFunctionWithId"]),
|
31
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
32
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
33
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
34
|
-
|
35
|
-
fakeGlobal.clearTimeout("foo");
|
36
|
-
|
37
|
-
expect(fakeClearTimeout).toHaveBeenCalledWith("foo");
|
38
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).not.toHaveBeenCalled();
|
39
|
-
|
40
|
-
fakeClearTimeout.calls.reset();
|
41
|
-
|
42
|
-
clock.install();
|
43
|
-
fakeGlobal.clearTimeout("foo");
|
44
|
-
|
45
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).toHaveBeenCalled();
|
46
|
-
expect(fakeClearTimeout).not.toHaveBeenCalled();
|
47
|
-
});
|
48
|
-
|
49
|
-
it("does not replace setInterval until it is installed", function() {
|
50
|
-
var fakeSetInterval = jasmine.createSpy("global setInterval"),
|
51
|
-
fakeGlobal = { setInterval: fakeSetInterval },
|
52
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["scheduleFunction"]),
|
53
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
54
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
55
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
56
|
-
|
57
|
-
fakeGlobal.setInterval(delayedFn, 0);
|
58
|
-
|
59
|
-
expect(fakeSetInterval).toHaveBeenCalledWith(delayedFn, 0);
|
60
|
-
expect(delayedFunctionScheduler.scheduleFunction).not.toHaveBeenCalled();
|
61
|
-
|
62
|
-
fakeSetInterval.calls.reset();
|
63
|
-
|
64
|
-
clock.install();
|
65
|
-
fakeGlobal.setInterval(delayedFn, 0);
|
66
|
-
|
67
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalled();
|
68
|
-
expect(fakeSetInterval).not.toHaveBeenCalled();
|
69
|
-
});
|
70
|
-
|
71
|
-
it("does not replace clearInterval until it is installed", function() {
|
72
|
-
var fakeClearInterval = jasmine.createSpy("global clearinterval"),
|
73
|
-
fakeGlobal = { clearInterval: fakeClearInterval },
|
74
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["removeFunctionWithId"]),
|
75
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
76
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
77
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
78
|
-
|
79
|
-
fakeGlobal.clearInterval("foo");
|
80
|
-
|
81
|
-
expect(fakeClearInterval).toHaveBeenCalledWith("foo");
|
82
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).not.toHaveBeenCalled();
|
83
|
-
|
84
|
-
fakeClearInterval.calls.reset();
|
85
|
-
|
86
|
-
clock.install();
|
87
|
-
fakeGlobal.clearInterval("foo");
|
88
|
-
|
89
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).toHaveBeenCalled();
|
90
|
-
expect(fakeClearInterval).not.toHaveBeenCalled();
|
91
|
-
});
|
92
|
-
|
93
|
-
it("does not install if the current setTimeout is not the original function on the global", function() {
|
94
|
-
var originalFakeSetTimeout = function() {},
|
95
|
-
replacedSetTimeout = function() {},
|
96
|
-
fakeGlobal = { setTimeout: originalFakeSetTimeout },
|
97
|
-
delayedFunctionSchedulerFactory = jasmine.createSpy('delayedFunctionSchedulerFactory'),
|
98
|
-
mockDate = {},
|
99
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, delayedFunctionSchedulerFactory, mockDate);
|
100
|
-
|
101
|
-
fakeGlobal.setTimeout = replacedSetTimeout;
|
102
|
-
|
103
|
-
expect(function() {
|
104
|
-
clock.install();
|
105
|
-
}).toThrowError(/unable to install/);
|
106
|
-
|
107
|
-
expect(delayedFunctionSchedulerFactory).not.toHaveBeenCalled();
|
108
|
-
expect(fakeGlobal.setTimeout).toBe(replacedSetTimeout);
|
109
|
-
});
|
110
|
-
|
111
|
-
it("does not install if the current clearTimeout is not the original function on the global", function() {
|
112
|
-
var originalFakeClearTimeout = function() {},
|
113
|
-
replacedClearTimeout = function() {},
|
114
|
-
fakeGlobal = { clearTimeout: originalFakeClearTimeout },
|
115
|
-
delayedFunctionSchedulerFactory = jasmine.createSpy('delayedFunctionSchedulerFactory'),
|
116
|
-
mockDate = {},
|
117
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, delayedFunctionSchedulerFactory, mockDate);
|
118
|
-
|
119
|
-
fakeGlobal.clearTimeout = replacedClearTimeout;
|
120
|
-
|
121
|
-
expect(function() {
|
122
|
-
clock.install();
|
123
|
-
}).toThrowError(/unable to install/);
|
124
|
-
|
125
|
-
expect(delayedFunctionSchedulerFactory).not.toHaveBeenCalled();
|
126
|
-
expect(fakeGlobal.clearTimeout).toBe(replacedClearTimeout);
|
127
|
-
});
|
128
|
-
|
129
|
-
it("does not install if the current setInterval is not the original function on the global", function() {
|
130
|
-
var originalFakeSetInterval = function() {},
|
131
|
-
replacedSetInterval = function() {},
|
132
|
-
fakeGlobal = { setInterval: originalFakeSetInterval },
|
133
|
-
delayedFunctionSchedulerFactory = jasmine.createSpy('delayedFunctionSchedulerFactory'),
|
134
|
-
mockDate = {},
|
135
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, delayedFunctionSchedulerFactory, mockDate);
|
136
|
-
|
137
|
-
fakeGlobal.setInterval = replacedSetInterval;
|
138
|
-
|
139
|
-
expect(function() {
|
140
|
-
clock.install();
|
141
|
-
}).toThrowError(/unable to install/);
|
142
|
-
|
143
|
-
expect(delayedFunctionSchedulerFactory).not.toHaveBeenCalled();
|
144
|
-
expect(fakeGlobal.setInterval).toBe(replacedSetInterval);
|
145
|
-
});
|
146
|
-
|
147
|
-
it("does not install if the current clearInterval is not the original function on the global", function() {
|
148
|
-
var originalFakeClearInterval = function() {},
|
149
|
-
replacedClearInterval = function() {},
|
150
|
-
fakeGlobal = { clearInterval: originalFakeClearInterval },
|
151
|
-
delayedFunctionSchedulerFactory = jasmine.createSpy('delayedFunctionSchedulerFactory'),
|
152
|
-
mockDate = {},
|
153
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, delayedFunctionSchedulerFactory, mockDate);
|
154
|
-
|
155
|
-
fakeGlobal.clearInterval = replacedClearInterval;
|
156
|
-
|
157
|
-
expect(function() {
|
158
|
-
clock.install();
|
159
|
-
}).toThrowError(/unable to install/);
|
160
|
-
|
161
|
-
expect(delayedFunctionSchedulerFactory).not.toHaveBeenCalled();
|
162
|
-
expect(fakeGlobal.clearInterval).toBe(replacedClearInterval);
|
163
|
-
});
|
164
|
-
|
165
|
-
it("replaces the global timer functions on uninstall", function() {
|
166
|
-
var fakeSetTimeout = jasmine.createSpy("global setTimeout"),
|
167
|
-
fakeClearTimeout = jasmine.createSpy("global clearTimeout"),
|
168
|
-
fakeSetInterval = jasmine.createSpy("global setInterval"),
|
169
|
-
fakeClearInterval = jasmine.createSpy("global clearInterval"),
|
170
|
-
fakeGlobal = {
|
171
|
-
setTimeout: fakeSetTimeout,
|
172
|
-
clearTimeout: fakeClearTimeout,
|
173
|
-
setInterval: fakeSetInterval,
|
174
|
-
clearInterval: fakeClearInterval
|
175
|
-
},
|
176
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["scheduleFunction", "reset"]),
|
177
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
178
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
179
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
180
|
-
|
181
|
-
clock.install();
|
182
|
-
clock.uninstall();
|
183
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
184
|
-
fakeGlobal.clearTimeout("foo");
|
185
|
-
fakeGlobal.setInterval(delayedFn, 10);
|
186
|
-
fakeGlobal.clearInterval("bar");
|
187
|
-
|
188
|
-
expect(fakeSetTimeout).toHaveBeenCalledWith(delayedFn, 0);
|
189
|
-
expect(fakeClearTimeout).toHaveBeenCalledWith("foo");
|
190
|
-
expect(fakeSetInterval).toHaveBeenCalledWith(delayedFn, 10);
|
191
|
-
expect(fakeClearInterval).toHaveBeenCalledWith("bar");
|
192
|
-
expect(delayedFunctionScheduler.scheduleFunction).not.toHaveBeenCalled();
|
193
|
-
});
|
194
|
-
|
195
|
-
it("can be installed for the duration of a passed in function and uninstalled when done", function() {
|
196
|
-
var fakeSetTimeout = jasmine.createSpy("global setTimeout"),
|
197
|
-
fakeClearTimeout = jasmine.createSpy("global clearTimeout"),
|
198
|
-
fakeSetInterval = jasmine.createSpy("global setInterval"),
|
199
|
-
fakeClearInterval = jasmine.createSpy("global clearInterval"),
|
200
|
-
fakeGlobal = {
|
201
|
-
setTimeout: fakeSetTimeout,
|
202
|
-
clearTimeout: fakeClearTimeout,
|
203
|
-
setInterval: fakeSetInterval,
|
204
|
-
clearInterval: fakeClearInterval
|
205
|
-
},
|
206
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["scheduleFunction", "reset", "removeFunctionWithId"]),
|
207
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
208
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
209
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
210
|
-
passedFunctionCalled = false;
|
211
|
-
|
212
|
-
clock.withMock(function() {
|
213
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
214
|
-
fakeGlobal.clearTimeout("foo");
|
215
|
-
fakeGlobal.setInterval(delayedFn, 10);
|
216
|
-
fakeGlobal.clearInterval("bar");
|
217
|
-
passedFunctionCalled = true;
|
218
|
-
});
|
219
|
-
|
220
|
-
expect(passedFunctionCalled).toBe(true);
|
221
|
-
|
222
|
-
expect(fakeSetTimeout).not.toHaveBeenCalled();
|
223
|
-
expect(fakeClearTimeout).not.toHaveBeenCalled();
|
224
|
-
expect(fakeSetInterval).not.toHaveBeenCalled();
|
225
|
-
expect(fakeClearInterval).not.toHaveBeenCalled();
|
226
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalled();
|
227
|
-
|
228
|
-
delayedFunctionScheduler.scheduleFunction.calls.reset();
|
229
|
-
|
230
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
231
|
-
fakeGlobal.clearTimeout("foo");
|
232
|
-
fakeGlobal.setInterval(delayedFn, 10);
|
233
|
-
fakeGlobal.clearInterval("bar");
|
234
|
-
|
235
|
-
expect(fakeSetTimeout).toHaveBeenCalledWith(delayedFn, 0);
|
236
|
-
expect(fakeClearTimeout).toHaveBeenCalledWith("foo");
|
237
|
-
expect(fakeSetInterval).toHaveBeenCalledWith(delayedFn, 10);
|
238
|
-
expect(fakeClearInterval).toHaveBeenCalledWith("bar");
|
239
|
-
expect(delayedFunctionScheduler.scheduleFunction).not.toHaveBeenCalled();
|
240
|
-
});
|
241
|
-
|
242
|
-
it("can be installed for the duration of a passed in function and uninstalled if an error is thrown", function() {
|
243
|
-
var fakeSetTimeout = jasmine.createSpy("global setTimeout"),
|
244
|
-
fakeClearTimeout = jasmine.createSpy("global clearTimeout"),
|
245
|
-
fakeSetInterval = jasmine.createSpy("global setInterval"),
|
246
|
-
fakeClearInterval = jasmine.createSpy("global clearInterval"),
|
247
|
-
fakeGlobal = {
|
248
|
-
setTimeout: fakeSetTimeout,
|
249
|
-
clearTimeout: fakeClearTimeout,
|
250
|
-
setInterval: fakeSetInterval,
|
251
|
-
clearInterval: fakeClearInterval
|
252
|
-
},
|
253
|
-
delayedFunctionScheduler = jasmine.createSpyObj("delayedFunctionScheduler", ["scheduleFunction", "reset", "removeFunctionWithId"]),
|
254
|
-
delayedFn = jasmine.createSpy("delayedFn"),
|
255
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
256
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
257
|
-
passedFunctionCalled = false;
|
258
|
-
|
259
|
-
expect(function() {
|
260
|
-
clock.withMock(function() {
|
261
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
262
|
-
fakeGlobal.clearTimeout("foo");
|
263
|
-
fakeGlobal.setInterval(delayedFn, 10);
|
264
|
-
fakeGlobal.clearInterval("bar");
|
265
|
-
passedFunctionCalled = true;
|
266
|
-
throw 'oops';
|
267
|
-
});
|
268
|
-
}).toThrow('oops');
|
269
|
-
|
270
|
-
expect(passedFunctionCalled).toBe(true);
|
271
|
-
|
272
|
-
expect(fakeSetTimeout).not.toHaveBeenCalled();
|
273
|
-
expect(fakeClearTimeout).not.toHaveBeenCalled();
|
274
|
-
expect(fakeSetInterval).not.toHaveBeenCalled();
|
275
|
-
expect(fakeClearInterval).not.toHaveBeenCalled();
|
276
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalled();
|
277
|
-
|
278
|
-
delayedFunctionScheduler.scheduleFunction.calls.reset();
|
279
|
-
|
280
|
-
fakeGlobal.setTimeout(delayedFn, 0);
|
281
|
-
fakeGlobal.clearTimeout("foo");
|
282
|
-
fakeGlobal.setInterval(delayedFn, 10);
|
283
|
-
fakeGlobal.clearInterval("bar");
|
284
|
-
|
285
|
-
expect(fakeSetTimeout).toHaveBeenCalledWith(delayedFn, 0);
|
286
|
-
expect(fakeClearTimeout).toHaveBeenCalledWith("foo");
|
287
|
-
expect(fakeSetInterval).toHaveBeenCalledWith(delayedFn, 10);
|
288
|
-
expect(fakeClearInterval).toHaveBeenCalledWith("bar");
|
289
|
-
expect(delayedFunctionScheduler.scheduleFunction).not.toHaveBeenCalled();
|
290
|
-
});
|
291
|
-
|
292
|
-
it("schedules the delayed function (via setTimeout) with the fake timer", function() {
|
293
|
-
var fakeSetTimeout = jasmine.createSpy('setTimeout'),
|
294
|
-
scheduleFunction = jasmine.createSpy('scheduleFunction'),
|
295
|
-
delayedFunctionScheduler = { scheduleFunction: scheduleFunction },
|
296
|
-
fakeGlobal = { setTimeout: fakeSetTimeout },
|
297
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
298
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
299
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
300
|
-
timeout = new clock.FakeTimeout();
|
301
|
-
|
302
|
-
clock.install();
|
303
|
-
clock.setTimeout(delayedFn, 0, 'a', 'b');
|
304
|
-
|
305
|
-
expect(fakeSetTimeout).not.toHaveBeenCalled();
|
306
|
-
|
307
|
-
if (!NODE_JS) {
|
308
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalledWith(delayedFn, 0, ['a', 'b']);
|
309
|
-
} else {
|
310
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalledWith(delayedFn, 0, ['a', 'b'], false, timeout);
|
311
|
-
}
|
312
|
-
});
|
313
|
-
|
314
|
-
it("returns an id for the delayed function", function() {
|
315
|
-
var fakeSetTimeout = jasmine.createSpy('setTimeout'),
|
316
|
-
scheduleId = 123,
|
317
|
-
scheduleFunction = jasmine.createSpy('scheduleFunction').and.returnValue(scheduleId),
|
318
|
-
delayedFunctionScheduler = {scheduleFunction: scheduleFunction},
|
319
|
-
fakeGlobal = { setTimeout: fakeSetTimeout },
|
320
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
321
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
322
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
323
|
-
timeout;
|
324
|
-
|
325
|
-
clock.install();
|
326
|
-
timeout = clock.setTimeout(delayedFn, 0);
|
327
|
-
|
328
|
-
if (!NODE_JS) {
|
329
|
-
expect(timeout).toEqual(123);
|
330
|
-
} else {
|
331
|
-
expect(timeout.constructor.name).toEqual('FakeTimeout');
|
332
|
-
}
|
333
|
-
});
|
334
|
-
|
335
|
-
it("clears the scheduled function with the scheduler", function() {
|
336
|
-
var fakeClearTimeout = jasmine.createSpy('clearTimeout'),
|
337
|
-
delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['removeFunctionWithId']),
|
338
|
-
fakeGlobal = { setTimeout: fakeClearTimeout },
|
339
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
340
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
341
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
342
|
-
|
343
|
-
clock.install();
|
344
|
-
clock.clearTimeout(123);
|
345
|
-
|
346
|
-
expect(fakeClearTimeout).not.toHaveBeenCalled();
|
347
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).toHaveBeenCalledWith(123);
|
348
|
-
});
|
349
|
-
|
350
|
-
it("schedules the delayed function with the fake timer", function() {
|
351
|
-
var fakeSetInterval = jasmine.createSpy('setInterval'),
|
352
|
-
scheduleFunction = jasmine.createSpy('scheduleFunction'),
|
353
|
-
delayedFunctionScheduler = {scheduleFunction: scheduleFunction},
|
354
|
-
fakeGlobal = { setInterval: fakeSetInterval },
|
355
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
356
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
357
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
358
|
-
timeout = new clock.FakeTimeout;
|
359
|
-
|
360
|
-
clock.install();
|
361
|
-
clock.setInterval(delayedFn, 0, 'a', 'b');
|
362
|
-
|
363
|
-
expect(fakeSetInterval).not.toHaveBeenCalled();
|
364
|
-
|
365
|
-
if (!NODE_JS) {
|
366
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalledWith(delayedFn, 0, ['a', 'b'], true);
|
367
|
-
} else {
|
368
|
-
expect(delayedFunctionScheduler.scheduleFunction).toHaveBeenCalledWith(delayedFn, 0, ['a', 'b'], true, timeout);
|
369
|
-
}
|
370
|
-
});
|
371
|
-
|
372
|
-
it("returns an id for the delayed function", function() {
|
373
|
-
var fakeSetInterval = jasmine.createSpy('setInterval'),
|
374
|
-
scheduleId = 123,
|
375
|
-
scheduleFunction = jasmine.createSpy('scheduleFunction').and.returnValue(scheduleId),
|
376
|
-
delayedFunctionScheduler = {scheduleFunction: scheduleFunction},
|
377
|
-
fakeGlobal = { setInterval: fakeSetInterval },
|
378
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
379
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
380
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate),
|
381
|
-
interval;
|
382
|
-
|
383
|
-
clock.install();
|
384
|
-
interval = clock.setInterval(delayedFn, 0);
|
385
|
-
|
386
|
-
if (!NODE_JS) {
|
387
|
-
expect(interval).toEqual(123);
|
388
|
-
} else {
|
389
|
-
expect(interval.constructor.name).toEqual('FakeTimeout');
|
390
|
-
}
|
391
|
-
});
|
392
|
-
|
393
|
-
it("clears the scheduled function with the scheduler", function() {
|
394
|
-
var clearInterval = jasmine.createSpy('clearInterval'),
|
395
|
-
delayedFunctionScheduler = jasmine.createSpyObj('delayedFunctionScheduler', ['removeFunctionWithId']),
|
396
|
-
fakeGlobal = { setInterval: clearInterval },
|
397
|
-
delayedFn = jasmine.createSpy('delayedFn'),
|
398
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
399
|
-
clock = new jasmineUnderTest.Clock(fakeGlobal, function () { return delayedFunctionScheduler; }, mockDate);
|
400
|
-
|
401
|
-
clock.install();
|
402
|
-
clock.clearInterval(123);
|
403
|
-
|
404
|
-
expect(clearInterval).not.toHaveBeenCalled();
|
405
|
-
expect(delayedFunctionScheduler.removeFunctionWithId).toHaveBeenCalledWith(123);
|
406
|
-
});
|
407
|
-
|
408
|
-
it("gives you a friendly reminder if the Clock is not installed and you tick", function() {
|
409
|
-
var clock = new jasmineUnderTest.Clock({}, jasmine.createSpyObj('delayedFunctionScheduler', ['tick']));
|
410
|
-
expect(function() {
|
411
|
-
clock.tick(50);
|
412
|
-
}).toThrow();
|
413
|
-
});
|
414
|
-
});
|
415
|
-
|
416
|
-
describe("Clock (acceptance)", function() {
|
417
|
-
it("can run setTimeouts/setIntervals synchronously", function() {
|
418
|
-
var delayedFn1 = jasmine.createSpy('delayedFn1'),
|
419
|
-
delayedFn2 = jasmine.createSpy('delayedFn2'),
|
420
|
-
delayedFn3 = jasmine.createSpy('delayedFn3'),
|
421
|
-
recurring1 = jasmine.createSpy('recurring1'),
|
422
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
423
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
424
|
-
clock = new jasmineUnderTest.Clock({setTimeout: setTimeout}, function () { return delayedFunctionScheduler; }, mockDate);
|
425
|
-
|
426
|
-
clock.install();
|
427
|
-
|
428
|
-
clock.setTimeout(delayedFn1, 0);
|
429
|
-
var intervalId = clock.setInterval(recurring1, 50);
|
430
|
-
clock.setTimeout(delayedFn2, 100);
|
431
|
-
clock.setTimeout(delayedFn3, 200);
|
432
|
-
|
433
|
-
expect(delayedFn1).not.toHaveBeenCalled();
|
434
|
-
expect(delayedFn2).not.toHaveBeenCalled();
|
435
|
-
expect(delayedFn3).not.toHaveBeenCalled();
|
436
|
-
|
437
|
-
clock.tick(0);
|
438
|
-
|
439
|
-
expect(delayedFn1).toHaveBeenCalled();
|
440
|
-
expect(delayedFn2).not.toHaveBeenCalled();
|
441
|
-
expect(delayedFn3).not.toHaveBeenCalled();
|
442
|
-
|
443
|
-
clock.tick(50);
|
444
|
-
|
445
|
-
expect(recurring1).toHaveBeenCalled();
|
446
|
-
expect(recurring1.calls.count()).toBe(1);
|
447
|
-
expect(delayedFn2).not.toHaveBeenCalled();
|
448
|
-
expect(delayedFn3).not.toHaveBeenCalled();
|
449
|
-
|
450
|
-
clock.tick(50);
|
451
|
-
|
452
|
-
expect(recurring1.calls.count()).toBe(2);
|
453
|
-
expect(delayedFn2).toHaveBeenCalled();
|
454
|
-
expect(delayedFn3).not.toHaveBeenCalled();
|
455
|
-
|
456
|
-
clock.tick(100);
|
457
|
-
|
458
|
-
expect(recurring1.calls.count()).toBe(4);
|
459
|
-
expect(delayedFn3).toHaveBeenCalled();
|
460
|
-
|
461
|
-
clock.clearInterval(intervalId);
|
462
|
-
clock.tick(50);
|
463
|
-
|
464
|
-
expect(recurring1.calls.count()).toBe(4);
|
465
|
-
});
|
466
|
-
|
467
|
-
it("can clear a previously set timeout", function() {
|
468
|
-
var clearedFn = jasmine.createSpy('clearedFn'),
|
469
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
470
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
471
|
-
clock = new jasmineUnderTest.Clock({setTimeout: function() {}}, function () { return delayedFunctionScheduler; }, mockDate),
|
472
|
-
timeoutId;
|
473
|
-
|
474
|
-
clock.install();
|
475
|
-
|
476
|
-
timeoutId = clock.setTimeout(clearedFn, 100);
|
477
|
-
expect(clearedFn).not.toHaveBeenCalled();
|
478
|
-
|
479
|
-
clock.clearTimeout(timeoutId);
|
480
|
-
clock.tick(100);
|
481
|
-
|
482
|
-
expect(clearedFn).not.toHaveBeenCalled();
|
483
|
-
});
|
484
|
-
|
485
|
-
it("can clear a previously set interval using that interval's handler", function() {
|
486
|
-
var spy = jasmine.createSpy('spy'),
|
487
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
488
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
489
|
-
clock = new jasmineUnderTest.Clock({setInterval: function() {}}, function () { return delayedFunctionScheduler; }, mockDate),
|
490
|
-
intervalId;
|
491
|
-
|
492
|
-
clock.install();
|
493
|
-
|
494
|
-
intervalId = clock.setInterval(function() {
|
495
|
-
spy();
|
496
|
-
clock.clearInterval(intervalId);
|
497
|
-
}, 100);
|
498
|
-
clock.tick(200);
|
499
|
-
|
500
|
-
expect(spy.calls.count()).toEqual(1);
|
501
|
-
});
|
502
|
-
|
503
|
-
it("correctly schedules functions after the Clock has advanced", function() {
|
504
|
-
var delayedFn1 = jasmine.createSpy('delayedFn1'),
|
505
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
506
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
507
|
-
clock = new jasmineUnderTest.Clock({setTimeout: function() {}}, function () { return delayedFunctionScheduler; }, mockDate);
|
508
|
-
|
509
|
-
clock.install();
|
510
|
-
|
511
|
-
clock.tick(100);
|
512
|
-
clock.setTimeout(delayedFn1, 10, ['some', 'arg']);
|
513
|
-
clock.tick(5);
|
514
|
-
expect(delayedFn1).not.toHaveBeenCalled();
|
515
|
-
clock.tick(5);
|
516
|
-
expect(delayedFn1).toHaveBeenCalled();
|
517
|
-
});
|
518
|
-
|
519
|
-
it("correctly schedules functions while the Clock is advancing", function() {
|
520
|
-
var delayedFn1 = jasmine.createSpy('delayedFn1'),
|
521
|
-
delayedFn2 = jasmine.createSpy('delayedFn2'),
|
522
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
523
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
524
|
-
clock = new jasmineUnderTest.Clock({setTimeout: function() {}}, function () { return delayedFunctionScheduler; }, mockDate);
|
525
|
-
|
526
|
-
delayedFn1.and.callFake(function() { clock.setTimeout(delayedFn2, 0); });
|
527
|
-
clock.install();
|
528
|
-
clock.setTimeout(delayedFn1, 5);
|
529
|
-
|
530
|
-
clock.tick(5);
|
531
|
-
expect(delayedFn1).toHaveBeenCalled();
|
532
|
-
expect(delayedFn2).not.toHaveBeenCalled();
|
533
|
-
|
534
|
-
clock.tick();
|
535
|
-
expect(delayedFn2).toHaveBeenCalled();
|
536
|
-
});
|
537
|
-
|
538
|
-
it("correctly calls functions scheduled while the Clock is advancing", function() {
|
539
|
-
var delayedFn1 = jasmine.createSpy('delayedFn1'),
|
540
|
-
delayedFn2 = jasmine.createSpy('delayedFn2'),
|
541
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
542
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
543
|
-
clock = new jasmineUnderTest.Clock({setTimeout: function() {}}, function () { return delayedFunctionScheduler; }, mockDate);
|
544
|
-
|
545
|
-
delayedFn1.and.callFake(function() { clock.setTimeout(delayedFn2, 1); });
|
546
|
-
clock.install();
|
547
|
-
clock.setTimeout(delayedFn1, 5);
|
548
|
-
|
549
|
-
clock.tick(6);
|
550
|
-
expect(delayedFn1).toHaveBeenCalled();
|
551
|
-
expect(delayedFn2).toHaveBeenCalled();
|
552
|
-
});
|
553
|
-
|
554
|
-
it("correctly schedules functions scheduled while the Clock is advancing but after the Clock is uninstalled", function() {
|
555
|
-
var delayedFn1 = jasmine.createSpy('delayedFn1'),
|
556
|
-
delayedFn2 = jasmine.createSpy('delayedFn2'),
|
557
|
-
delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
558
|
-
mockDate = { install: function() {}, tick: function() {}, uninstall: function() {} },
|
559
|
-
clock = new jasmineUnderTest.Clock({setTimeout: function() {}}, function () { return delayedFunctionScheduler; }, mockDate);
|
560
|
-
|
561
|
-
delayedFn1.and.callFake(function() {
|
562
|
-
clock.uninstall();
|
563
|
-
clock.install();
|
564
|
-
clock.setTimeout(delayedFn2, 0);
|
565
|
-
});
|
566
|
-
|
567
|
-
clock.install();
|
568
|
-
clock.setTimeout(delayedFn1, 1);
|
569
|
-
|
570
|
-
clock.tick(1);
|
571
|
-
expect(delayedFn1).toHaveBeenCalled();
|
572
|
-
expect(delayedFn2).not.toHaveBeenCalled();
|
573
|
-
|
574
|
-
clock.tick(1);
|
575
|
-
expect(delayedFn2).toHaveBeenCalled();
|
576
|
-
});
|
577
|
-
|
578
|
-
it("does not mock the Date object by default", function() {
|
579
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
580
|
-
global = {Date: Date},
|
581
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
582
|
-
clock = new jasmineUnderTest.Clock({setTimeout: setTimeout}, function () { return delayedFunctionScheduler; }, mockDate);
|
583
|
-
|
584
|
-
clock.install();
|
585
|
-
|
586
|
-
expect(global.Date).toEqual(Date);
|
587
|
-
|
588
|
-
var now = new global.Date().getTime();
|
589
|
-
|
590
|
-
clock.tick(50);
|
591
|
-
|
592
|
-
expect(new global.Date().getTime() - now).not.toEqual(50);
|
593
|
-
});
|
594
|
-
|
595
|
-
it("mocks the Date object and sets it to current time", function() {
|
596
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
597
|
-
global = {Date: Date},
|
598
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
599
|
-
clock = new jasmineUnderTest.Clock({setTimeout: setTimeout}, function () { return delayedFunctionScheduler; }, mockDate);
|
600
|
-
|
601
|
-
clock.install().mockDate();
|
602
|
-
|
603
|
-
var now = new global.Date().getTime();
|
604
|
-
|
605
|
-
clock.tick(50);
|
606
|
-
|
607
|
-
expect(new global.Date().getTime() - now).toEqual(50);
|
608
|
-
|
609
|
-
var timeoutDate = 0;
|
610
|
-
clock.setTimeout(function() {
|
611
|
-
timeoutDate = new global.Date().getTime();
|
612
|
-
}, 100);
|
613
|
-
|
614
|
-
clock.tick(100);
|
615
|
-
|
616
|
-
expect(timeoutDate - now).toEqual(150);
|
617
|
-
});
|
618
|
-
|
619
|
-
it("mocks the Date object and sets it to a given time", function() {
|
620
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
621
|
-
global = {Date: Date},
|
622
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
623
|
-
clock = new jasmineUnderTest.Clock({setTimeout: setTimeout}, function () { return delayedFunctionScheduler; }, mockDate),
|
624
|
-
baseTime = new Date(2013, 9, 23);
|
625
|
-
|
626
|
-
|
627
|
-
clock.install().mockDate(baseTime);
|
628
|
-
|
629
|
-
var now = new global.Date().getTime();
|
630
|
-
|
631
|
-
expect(now).toEqual(baseTime.getTime());
|
632
|
-
|
633
|
-
clock.tick(50);
|
634
|
-
|
635
|
-
expect(new global.Date().getTime()).toEqual(baseTime.getTime() + 50);
|
636
|
-
|
637
|
-
var timeoutDate = 0;
|
638
|
-
clock.setTimeout(function() {
|
639
|
-
timeoutDate = new global.Date().getTime();
|
640
|
-
}, 100);
|
641
|
-
|
642
|
-
clock.tick(100);
|
643
|
-
|
644
|
-
expect(timeoutDate).toEqual(baseTime.getTime() + 150);
|
645
|
-
});
|
646
|
-
|
647
|
-
it("mocks the Date object and updates the date per delayed function", function () {
|
648
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
649
|
-
global = {Date: Date},
|
650
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
651
|
-
clock = new jasmineUnderTest.Clock({setTimeout: setTimeout}, function () { return delayedFunctionScheduler; }, mockDate),
|
652
|
-
baseTime = new Date();
|
653
|
-
|
654
|
-
clock.install().mockDate(baseTime);
|
655
|
-
|
656
|
-
var actualTimes = [];
|
657
|
-
var pushCurrentTime = function() { actualTimes.push(global.Date().getTime()); };
|
658
|
-
delayedFunctionScheduler.scheduleFunction(pushCurrentTime);
|
659
|
-
delayedFunctionScheduler.scheduleFunction(pushCurrentTime, 1);
|
660
|
-
delayedFunctionScheduler.scheduleFunction(pushCurrentTime, 3);
|
661
|
-
|
662
|
-
clock.tick(1);
|
663
|
-
expect(global.Date().getTime()).toEqual(baseTime.getTime() + 1);
|
664
|
-
|
665
|
-
clock.tick(3);
|
666
|
-
expect(global.Date().getTime()).toEqual(baseTime.getTime() + 4);
|
667
|
-
|
668
|
-
clock.tick(1);
|
669
|
-
expect(global.Date().getTime()).toEqual(baseTime.getTime() + 5);
|
670
|
-
|
671
|
-
expect(actualTimes).toEqual([baseTime.getTime(), baseTime.getTime() + 1, baseTime.getTime() + 3]);
|
672
|
-
})
|
673
|
-
|
674
|
-
it('correctly clears a scheduled timeout while the Clock is advancing', function () {
|
675
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
676
|
-
global = {Date: Date, setTimeout: undefined},
|
677
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
678
|
-
clock = new jasmineUnderTest.Clock(global, function () { return delayedFunctionScheduler; }, mockDate);
|
679
|
-
|
680
|
-
clock.install();
|
681
|
-
|
682
|
-
var timerId2;
|
683
|
-
|
684
|
-
global.setTimeout(function () {
|
685
|
-
global.clearTimeout(timerId2);
|
686
|
-
}, 100);
|
687
|
-
|
688
|
-
timerId2 = global.setTimeout(fail, 100);
|
689
|
-
|
690
|
-
clock.tick(100);
|
691
|
-
});
|
692
|
-
|
693
|
-
it('correctly clears a scheduled interval while the Clock is advancing', function () {
|
694
|
-
var delayedFunctionScheduler = new jasmineUnderTest.DelayedFunctionScheduler(),
|
695
|
-
global = {Date: Date, setTimeout: undefined},
|
696
|
-
mockDate = new jasmineUnderTest.MockDate(global),
|
697
|
-
clock = new jasmineUnderTest.Clock(global, function () { return delayedFunctionScheduler; }, mockDate);
|
698
|
-
|
699
|
-
clock.install();
|
700
|
-
|
701
|
-
var timerId2;
|
702
|
-
var timerId1 = global.setInterval(function () {
|
703
|
-
global.clearInterval(timerId2);
|
704
|
-
}, 100);
|
705
|
-
|
706
|
-
timerId2 = global.setInterval(fail, 100);
|
707
|
-
|
708
|
-
clock.tick(400);
|
709
|
-
});
|
710
|
-
});
|