jasmine-core 1.3.1 → 2.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/jasmine-core.rb +14 -1
- data/lib/jasmine-core/boot.js +131 -0
- data/lib/jasmine-core/boot/boot.js +109 -0
- data/lib/jasmine-core/example/spec/PlayerSpec.js +2 -2
- data/lib/jasmine-core/example/spec/SpecHelper.js +14 -8
- data/lib/jasmine-core/jasmine-html.js +289 -616
- data/lib/jasmine-core/jasmine.css +52 -80
- data/lib/jasmine-core/jasmine.js +1972 -2211
- data/lib/jasmine-core/spec/console/ConsoleReporterSpec.js +161 -386
- data/lib/jasmine-core/spec/core/AnySpec.js +45 -0
- data/lib/jasmine-core/spec/core/CallTrackerSpec.js +105 -0
- data/lib/jasmine-core/spec/core/ClockSpec.js +314 -0
- data/lib/jasmine-core/spec/core/CustomMatchersSpec.js +96 -97
- data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +179 -0
- data/lib/jasmine-core/spec/core/EnvSpec.js +454 -102
- data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +56 -0
- data/lib/jasmine-core/spec/core/ExceptionsSpec.js +15 -126
- data/lib/jasmine-core/spec/core/ExpectationResultSpec.js +61 -0
- data/lib/jasmine-core/spec/core/ExpectationSpec.js +320 -0
- data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +150 -38
- data/lib/jasmine-core/spec/core/ObjectContainingSpec.js +64 -0
- data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +43 -42
- data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +147 -0
- data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +40 -0
- data/lib/jasmine-core/spec/core/SpecRunningSpec.js +92 -1075
- data/lib/jasmine-core/spec/core/SpecSpec.js +215 -95
- data/lib/jasmine-core/spec/core/SpySpec.js +28 -196
- data/lib/jasmine-core/spec/core/SpyStrategySpec.js +101 -0
- data/lib/jasmine-core/spec/core/SuiteSpec.js +216 -106
- data/lib/jasmine-core/spec/core/TimerSpec.js +13 -0
- data/lib/jasmine-core/spec/core/UtilSpec.js +19 -30
- data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +219 -0
- data/lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js +51 -0
- data/lib/jasmine-core/spec/core/matchers/toBeDefinedSpec.js +18 -0
- data/lib/jasmine-core/spec/core/matchers/toBeFalsySpec.js +38 -0
- data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +19 -0
- data/lib/jasmine-core/spec/core/matchers/toBeLessThanSpec.js +20 -0
- data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +36 -0
- data/lib/jasmine-core/spec/core/matchers/toBeNullSpec.js +17 -0
- data/lib/jasmine-core/spec/core/matchers/toBeSpec.js +17 -0
- data/lib/jasmine-core/spec/core/matchers/toBeTruthySpec.js +38 -0
- data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +17 -0
- data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +24 -0
- data/lib/jasmine-core/spec/core/matchers/toEqualSpec.js +28 -0
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +46 -0
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +57 -0
- data/lib/jasmine-core/spec/core/matchers/toMatchSpec.js +34 -0
- data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +280 -0
- data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +98 -0
- data/lib/jasmine-core/spec/helpers/BrowserFlags.js +19 -0
- data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +494 -0
- data/lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js +18 -0
- data/lib/jasmine-core/spec/html/MatchersHtmlSpec.js +8 -8
- data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +3 -3
- data/lib/jasmine-core/spec/html/QueryStringSpec.js +43 -0
- data/lib/jasmine-core/spec/html/ResultsNodeSpec.js +62 -0
- data/lib/jasmine-core/spec/node_suite.js +137 -79
- data/lib/jasmine-core/spec/performance/performance_test.js +10 -0
- data/lib/jasmine-core/spec/support/dev_boot.js +118 -0
- data/lib/jasmine-core/version.rb +5 -2
- metadata +47 -103
- data/lib/jasmine-core/example/SpecRunner.html +0 -54
- data/lib/jasmine-core/spec/core/BaseSpec.js +0 -27
- data/lib/jasmine-core/spec/core/MatchersSpec.js +0 -1157
- data/lib/jasmine-core/spec/core/MockClockSpec.js +0 -38
- data/lib/jasmine-core/spec/core/MultiReporterSpec.js +0 -45
- data/lib/jasmine-core/spec/core/NestedResultsSpec.js +0 -54
- data/lib/jasmine-core/spec/core/QueueSpec.js +0 -23
- data/lib/jasmine-core/spec/core/ReporterSpec.js +0 -56
- data/lib/jasmine-core/spec/core/RunnerSpec.js +0 -280
- data/lib/jasmine-core/spec/core/WaitsForBlockSpec.js +0 -118
- data/lib/jasmine-core/spec/html/HTMLReporterSpec.js +0 -209
- data/lib/jasmine-core/spec/html/TrivialReporterSpec.js +0 -239
@@ -0,0 +1,101 @@
|
|
1
|
+
describe("SpyStrategy", function() {
|
2
|
+
|
3
|
+
it("defaults its name to unknown", function() {
|
4
|
+
var spyStrategy = new j$.SpyStrategy();
|
5
|
+
|
6
|
+
expect(spyStrategy.identity()).toEqual("unknown");
|
7
|
+
});
|
8
|
+
|
9
|
+
it("takes a name", function() {
|
10
|
+
var spyStrategy = new j$.SpyStrategy({name: "foo"});
|
11
|
+
|
12
|
+
expect(spyStrategy.identity()).toEqual("foo");
|
13
|
+
});
|
14
|
+
|
15
|
+
it("stubs an original function, if provided", function() {
|
16
|
+
var originalFn = jasmine.createSpy("original"),
|
17
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn});
|
18
|
+
|
19
|
+
spyStrategy.exec();
|
20
|
+
|
21
|
+
expect(originalFn).not.toHaveBeenCalled();
|
22
|
+
});
|
23
|
+
|
24
|
+
it("allows an original function to be called, passed through the params and returns it's value", function() {
|
25
|
+
var originalFn = jasmine.createSpy("original").and.callReturn(42),
|
26
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn}),
|
27
|
+
returnValue;
|
28
|
+
|
29
|
+
spyStrategy.callThrough();
|
30
|
+
returnValue = spyStrategy.exec("foo");
|
31
|
+
|
32
|
+
expect(originalFn).toHaveBeenCalled();
|
33
|
+
expect(originalFn.calls.mostRecent().args).toEqual(["foo"]);
|
34
|
+
expect(returnValue).toEqual(42);
|
35
|
+
});
|
36
|
+
|
37
|
+
it("can return a specified value when executed", function() {
|
38
|
+
var originalFn = jasmine.createSpy("original"),
|
39
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn}),
|
40
|
+
returnValue;
|
41
|
+
|
42
|
+
spyStrategy.callReturn(17);
|
43
|
+
returnValue = spyStrategy.exec();
|
44
|
+
|
45
|
+
expect(originalFn).not.toHaveBeenCalled();
|
46
|
+
expect(returnValue).toEqual(17);
|
47
|
+
});
|
48
|
+
|
49
|
+
it("allows an exception to be thrown when executed", function() {
|
50
|
+
var originalFn = jasmine.createSpy("original"),
|
51
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn});
|
52
|
+
|
53
|
+
spyStrategy.callThrow("bar");
|
54
|
+
|
55
|
+
expect(function() { spyStrategy.exec(); }).toThrow("bar");
|
56
|
+
expect(originalFn).not.toHaveBeenCalled();
|
57
|
+
});
|
58
|
+
|
59
|
+
it("allows a fake function to be called instead", function() {
|
60
|
+
var originalFn = jasmine.createSpy("original"),
|
61
|
+
fakeFn = jasmine.createSpy("fake").and.callReturn(67),
|
62
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn}),
|
63
|
+
returnValue;
|
64
|
+
|
65
|
+
spyStrategy.callFake(fakeFn);
|
66
|
+
returnValue = spyStrategy.exec();
|
67
|
+
|
68
|
+
expect(originalFn).not.toHaveBeenCalled();
|
69
|
+
expect(returnValue).toEqual(67);
|
70
|
+
});
|
71
|
+
|
72
|
+
it("allows a return to plan stubbing after another strategy", function() {
|
73
|
+
var originalFn = jasmine.createSpy("original"),
|
74
|
+
fakeFn = jasmine.createSpy("fake").and.callReturn(67),
|
75
|
+
spyStrategy = new j$.SpyStrategy({fn: originalFn}),
|
76
|
+
returnValue;
|
77
|
+
|
78
|
+
spyStrategy.callFake(fakeFn);
|
79
|
+
returnValue = spyStrategy.exec();
|
80
|
+
|
81
|
+
expect(originalFn).not.toHaveBeenCalled();
|
82
|
+
expect(returnValue).toEqual(67);
|
83
|
+
|
84
|
+
spyStrategy.stub();
|
85
|
+
returnValue = spyStrategy.exec();
|
86
|
+
|
87
|
+
expect(returnValue).toEqual(void 0);
|
88
|
+
});
|
89
|
+
|
90
|
+
it("returns the spy after changing the strategy", function(){
|
91
|
+
var spy = {},
|
92
|
+
spyFn = jasmine.createSpy('spyFn').and.callReturn(spy),
|
93
|
+
spyStrategy = new j$.SpyStrategy({getSpy: spyFn});
|
94
|
+
|
95
|
+
expect(spyStrategy.callThrough()).toBe(spy);
|
96
|
+
expect(spyStrategy.callReturn()).toBe(spy);
|
97
|
+
expect(spyStrategy.callThrow()).toBe(spy);
|
98
|
+
expect(spyStrategy.callFake()).toBe(spy);
|
99
|
+
expect(spyStrategy.stub()).toBe(spy);
|
100
|
+
});
|
101
|
+
});
|
@@ -1,120 +1,230 @@
|
|
1
|
-
describe(
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
env.setInterval = fakeTimer.setInterval;
|
13
|
-
env.clearInterval = fakeTimer.clearInterval;
|
1
|
+
describe("Suite", function() {
|
2
|
+
|
3
|
+
it("keeps its id", function() {
|
4
|
+
var env = new j$.Env(),
|
5
|
+
suite = new j$.Suite({
|
6
|
+
env: env,
|
7
|
+
id: 456,
|
8
|
+
description: "I am a suite"
|
9
|
+
});
|
10
|
+
|
11
|
+
expect(suite.id).toEqual(456);
|
14
12
|
});
|
15
13
|
|
16
|
-
|
17
|
-
var
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
env.it('Spec 1', function() {
|
22
|
-
this.runs(function () {
|
23
|
-
this.expect(true).toEqual(true);
|
24
|
-
});
|
25
|
-
});
|
26
|
-
env.it('Spec 2', function() {
|
27
|
-
this.runs(function () {
|
28
|
-
this.expect(true).toEqual(true);
|
29
|
-
});
|
30
|
-
});
|
31
|
-
env.describe('Suite 2', function () {
|
32
|
-
env.it('Spec 3', function() {
|
33
|
-
this.runs(function () {
|
34
|
-
this.expect(true).toEqual(true);
|
35
|
-
});
|
36
|
-
});
|
37
|
-
});
|
38
|
-
env.it('Spec 4', function() {
|
39
|
-
this.runs(function () {
|
40
|
-
this.expect(true).toEqual(true);
|
41
|
-
});
|
42
|
-
});
|
14
|
+
it("returns its full name", function() {
|
15
|
+
var env = new j$.Env(),
|
16
|
+
suite = new j$.Suite({
|
17
|
+
env: env,
|
18
|
+
description: "I am a suite"
|
43
19
|
});
|
44
|
-
});
|
45
|
-
|
46
|
-
it('#specs should return all immediate children that are specs.', function () {
|
47
|
-
var suiteSpecs = suite.specs();
|
48
|
-
expect(suiteSpecs.length).toEqual(3);
|
49
|
-
expect(suiteSpecs[0].description).toEqual('Spec 1');
|
50
|
-
expect(suiteSpecs[1].description).toEqual('Spec 2');
|
51
|
-
expect(suiteSpecs[2].description).toEqual('Spec 4');
|
52
|
-
});
|
53
20
|
|
54
|
-
|
55
|
-
|
56
|
-
expect(nestedSuites.length).toEqual(1);
|
57
|
-
expect(nestedSuites[0].description).toEqual('Suite 2');
|
58
|
-
});
|
21
|
+
expect(suite.getFullName()).toEqual("I am a suite");
|
22
|
+
});
|
59
23
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
24
|
+
it("returns its full name when it has parent suites", function() {
|
25
|
+
var env = new j$.Env(),
|
26
|
+
parentSuite = new j$.Suite({
|
27
|
+
env: env,
|
28
|
+
description: "I am a parent suite",
|
29
|
+
parentSuite: jasmine.createSpy('pretend top level suite')
|
30
|
+
}),
|
31
|
+
suite = new j$.Suite({
|
32
|
+
env: env,
|
33
|
+
description: "I am a suite",
|
34
|
+
parentSuite: parentSuite
|
35
|
+
});
|
36
|
+
|
37
|
+
expect(suite.getFullName()).toEqual("I am a parent suite I am a suite");
|
68
38
|
});
|
69
39
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
40
|
+
it("adds before functions in order of needed execution", function() {
|
41
|
+
var env = new j$.Env(),
|
42
|
+
suite = new j$.Suite({
|
43
|
+
env: env,
|
44
|
+
description: "I am a suite"
|
45
|
+
}),
|
46
|
+
outerBefore = jasmine.createSpy('outerBeforeEach'),
|
47
|
+
innerBefore = jasmine.createSpy('insideBeforeEach');
|
48
|
+
|
49
|
+
suite.beforeEach(outerBefore);
|
50
|
+
suite.beforeEach(innerBefore);
|
51
|
+
|
52
|
+
expect(suite.beforeFns).toEqual([innerBefore, outerBefore]);
|
53
|
+
});
|
54
|
+
|
55
|
+
it("adds after functions in order of needed execution", function() {
|
56
|
+
var env = new j$.Env(),
|
57
|
+
suite = new j$.Suite({
|
58
|
+
env: env,
|
59
|
+
description: "I am a suite"
|
60
|
+
}),
|
61
|
+
outerAfter = jasmine.createSpy('outerAfterEach'),
|
62
|
+
innerAfter = jasmine.createSpy('insideAfterEach');
|
63
|
+
|
64
|
+
suite.afterEach(outerAfter);
|
65
|
+
suite.afterEach(innerAfter);
|
66
|
+
|
67
|
+
expect(suite.afterFns).toEqual([innerAfter, outerAfter]);
|
68
|
+
});
|
69
|
+
|
70
|
+
it("adds specs", function() {
|
71
|
+
var env = new j$.Env(),
|
72
|
+
fakeQueue = {
|
73
|
+
add: jasmine.createSpy()
|
74
|
+
},
|
75
|
+
suite = new j$.Suite({
|
76
|
+
env: env,
|
77
|
+
description: "I am a suite",
|
78
|
+
queueFactory: function() {
|
79
|
+
return fakeQueue
|
80
|
+
}
|
81
|
+
}),
|
82
|
+
fakeSpec = {};
|
83
|
+
|
84
|
+
expect(suite.specs.length).toEqual(0);
|
85
|
+
|
86
|
+
suite.addSpec(fakeSpec);
|
87
|
+
|
88
|
+
expect(suite.specs.length).toEqual(1);
|
89
|
+
});
|
90
|
+
|
91
|
+
it("adds suites", function() {
|
92
|
+
var env = new j$.Env(),
|
93
|
+
fakeQueue = {
|
94
|
+
add: jasmine.createSpy()
|
95
|
+
},
|
96
|
+
suite = new j$.Suite({
|
97
|
+
env: env,
|
98
|
+
description: "I am a suite",
|
99
|
+
queueFactory: function() {
|
100
|
+
return fakeQueue
|
101
|
+
}
|
102
|
+
}),
|
103
|
+
anotherSuite = new j$.Suite({
|
104
|
+
env: env,
|
105
|
+
description: "I am another suite",
|
106
|
+
queueFactory: function() {
|
107
|
+
return fakeQueue
|
108
|
+
}
|
89
109
|
});
|
90
110
|
|
91
|
-
|
92
|
-
|
111
|
+
expect(suite.suites.length).toEqual(0);
|
112
|
+
|
113
|
+
suite.addSuite(anotherSuite);
|
93
114
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
env
|
102
|
-
|
103
|
-
|
104
|
-
});
|
105
|
-
this.waits(10);
|
106
|
-
this.runs(function () {
|
107
|
-
this.expect(true).toEqual(true);
|
108
|
-
});
|
109
|
-
});
|
110
|
-
env.it('should be a third test', function() {
|
111
|
-
this.runs(function () {
|
112
|
-
this.expect(true).toEqual(true);
|
113
|
-
});
|
114
|
-
});
|
115
|
+
expect(suite.suites.length).toEqual(1);
|
116
|
+
});
|
117
|
+
|
118
|
+
it("can be disabled", function() {
|
119
|
+
var env = new j$.Env(),
|
120
|
+
fakeQueueRunner = jasmine.createSpy('fake queue runner'),
|
121
|
+
suite = new j$.Suite({
|
122
|
+
env: env,
|
123
|
+
description: "with a child suite",
|
124
|
+
queueRunner: fakeQueueRunner
|
115
125
|
});
|
116
126
|
|
117
|
-
|
127
|
+
suite.disable();
|
128
|
+
|
129
|
+
expect(suite.disabled).toBe(true);
|
130
|
+
|
131
|
+
suite.execute();
|
132
|
+
|
133
|
+
expect(fakeQueueRunner).not.toHaveBeenCalled();
|
134
|
+
});
|
135
|
+
|
136
|
+
it("delegates execution of its specs and suites", function() {
|
137
|
+
var env = new j$.Env(),
|
138
|
+
parentSuiteDone = jasmine.createSpy('parent suite done'),
|
139
|
+
fakeQueueRunnerForParent = jasmine.createSpy('fake parent queue runner'),
|
140
|
+
parentSuite = new j$.Suite({
|
141
|
+
env: env,
|
142
|
+
description: "I am a parent suite",
|
143
|
+
queueRunner: fakeQueueRunnerForParent
|
144
|
+
}),
|
145
|
+
fakeQueueRunner = jasmine.createSpy('fake queue runner'),
|
146
|
+
suite = new j$.Suite({
|
147
|
+
env: env,
|
148
|
+
description: "with a child suite",
|
149
|
+
queueRunner: fakeQueueRunner
|
150
|
+
}),
|
151
|
+
fakeSpec1 = {
|
152
|
+
execute: jasmine.createSpy('fakeSpec1')
|
153
|
+
};
|
154
|
+
|
155
|
+
spyOn(suite, "execute");
|
156
|
+
|
157
|
+
parentSuite.addSpec(fakeSpec1);
|
158
|
+
parentSuite.addSuite(suite);
|
159
|
+
|
160
|
+
parentSuite.execute(parentSuiteDone);
|
161
|
+
|
162
|
+
var parentSuiteFns = fakeQueueRunnerForParent.calls.mostRecent().args[0].fns;
|
163
|
+
|
164
|
+
parentSuiteFns[0]();
|
165
|
+
expect(fakeSpec1.execute).toHaveBeenCalled();
|
166
|
+
parentSuiteFns[1]();
|
167
|
+
expect(suite.execute).toHaveBeenCalled();
|
168
|
+
});
|
169
|
+
|
170
|
+
it("calls a provided onStart callback when starting", function() {
|
171
|
+
var env = new j$.Env(),
|
172
|
+
suiteStarted = jasmine.createSpy('suiteStarted'),
|
173
|
+
fakeQueueRunner = function(attrs) { attrs.onComplete(); },
|
174
|
+
suite = new j$.Suite({
|
175
|
+
env: env,
|
176
|
+
description: "with a child suite",
|
177
|
+
onStart: suiteStarted,
|
178
|
+
queueRunner: fakeQueueRunner
|
179
|
+
}),
|
180
|
+
fakeSpec1 = {
|
181
|
+
execute: jasmine.createSpy('fakeSpec1')
|
182
|
+
};
|
183
|
+
|
184
|
+
suite.execute();
|
185
|
+
|
186
|
+
expect(suiteStarted).toHaveBeenCalledWith(suite);
|
187
|
+
});
|
188
|
+
|
189
|
+
it("calls a provided onComplete callback when done", function() {
|
190
|
+
var env = new j$.Env(),
|
191
|
+
suiteCompleted = jasmine.createSpy('parent suite done'),
|
192
|
+
fakeQueueRunner = function(attrs) { attrs.onComplete(); },
|
193
|
+
suite = new j$.Suite({
|
194
|
+
env: env,
|
195
|
+
description: "with a child suite",
|
196
|
+
queueRunner: fakeQueueRunner
|
197
|
+
}),
|
198
|
+
fakeSpec1 = {
|
199
|
+
execute: jasmine.createSpy('fakeSpec1')
|
200
|
+
};
|
201
|
+
|
202
|
+
suite.execute(suiteCompleted);
|
203
|
+
|
204
|
+
expect(suiteCompleted).toHaveBeenCalled();
|
205
|
+
});
|
206
|
+
|
207
|
+
it("calls a provided result callback when done", function() {
|
208
|
+
var env = new j$.Env(),
|
209
|
+
suiteResultsCallback = jasmine.createSpy('suite result callback'),
|
210
|
+
fakeQueueRunner = function(attrs) { attrs.onComplete(); },
|
211
|
+
suite = new j$.Suite({
|
212
|
+
env: env,
|
213
|
+
description: "with a child suite",
|
214
|
+
queueRunner: fakeQueueRunner,
|
215
|
+
resultCallback: suiteResultsCallback
|
216
|
+
}),
|
217
|
+
fakeSpec1 = {
|
218
|
+
execute: jasmine.createSpy('fakeSpec1')
|
219
|
+
};
|
220
|
+
|
221
|
+
suite.execute();
|
222
|
+
|
223
|
+
expect(suiteResultsCallback).toHaveBeenCalledWith({
|
224
|
+
id: suite.id,
|
225
|
+
status: '',
|
226
|
+
description: "with a child suite",
|
227
|
+
fullName: "with a child suite"
|
118
228
|
});
|
119
229
|
});
|
120
|
-
});
|
230
|
+
});
|
@@ -0,0 +1,13 @@
|
|
1
|
+
describe("Timer", function() {
|
2
|
+
it("reports the time elapsed", function() {
|
3
|
+
var fakeNow = jasmine.createSpy('fake Date.now'),
|
4
|
+
timer = new j$.Timer({now: fakeNow});
|
5
|
+
|
6
|
+
fakeNow.and.callReturn(100);
|
7
|
+
timer.start();
|
8
|
+
|
9
|
+
fakeNow.and.callReturn(200);
|
10
|
+
|
11
|
+
expect(timer.elapsed()).toEqual(100);
|
12
|
+
});
|
13
|
+
});
|