jasmine-core 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jasmine-core/boot/node_boot.js +1 -1
  3. data/lib/jasmine-core/jasmine-html.js +0 -35
  4. data/lib/jasmine-core/jasmine.css +0 -6
  5. data/lib/jasmine-core/jasmine.js +246 -36
  6. data/lib/jasmine-core/node_boot.js +1 -1
  7. data/lib/jasmine-core/version.rb +1 -1
  8. metadata +3 -88
  9. data/lib/jasmine-core/spec/core/CallTrackerSpec.js +0 -130
  10. data/lib/jasmine-core/spec/core/ClearStackSpec.js +0 -137
  11. data/lib/jasmine-core/spec/core/ClockSpec.js +0 -710
  12. data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +0 -286
  13. data/lib/jasmine-core/spec/core/EnvSpec.js +0 -200
  14. data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +0 -120
  15. data/lib/jasmine-core/spec/core/ExceptionsSpec.js +0 -46
  16. data/lib/jasmine-core/spec/core/ExpectationResultSpec.js +0 -61
  17. data/lib/jasmine-core/spec/core/ExpectationSpec.js +0 -434
  18. data/lib/jasmine-core/spec/core/GlobalErrorsSpec.js +0 -110
  19. data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +0 -259
  20. data/lib/jasmine-core/spec/core/MockDateSpec.js +0 -200
  21. data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +0 -332
  22. data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +0 -670
  23. data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +0 -140
  24. data/lib/jasmine-core/spec/core/SpecSpec.js +0 -407
  25. data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +0 -364
  26. data/lib/jasmine-core/spec/core/SpySpec.js +0 -177
  27. data/lib/jasmine-core/spec/core/SpyStrategySpec.js +0 -202
  28. data/lib/jasmine-core/spec/core/StackTraceSpec.js +0 -166
  29. data/lib/jasmine-core/spec/core/SuiteSpec.js +0 -123
  30. data/lib/jasmine-core/spec/core/TimerSpec.js +0 -31
  31. data/lib/jasmine-core/spec/core/TreeProcessorSpec.js +0 -794
  32. data/lib/jasmine-core/spec/core/UserContextSpec.js +0 -54
  33. data/lib/jasmine-core/spec/core/UtilSpec.js +0 -105
  34. data/lib/jasmine-core/spec/core/asymmetric_equality/AnySpec.js +0 -91
  35. data/lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js +0 -76
  36. data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js +0 -52
  37. data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayWithExactContentsSpec.js +0 -47
  38. data/lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js +0 -99
  39. data/lib/jasmine-core/spec/core/asymmetric_equality/StringMatchingSpec.js +0 -27
  40. data/lib/jasmine-core/spec/core/formatErrorMsgSpec.js +0 -13
  41. data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +0 -200
  42. data/lib/jasmine-core/spec/core/integration/CustomSpyStrategiesSpec.js +0 -138
  43. data/lib/jasmine-core/spec/core/integration/EnvSpec.js +0 -2344
  44. data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +0 -976
  45. data/lib/jasmine-core/spec/core/matchers/DiffBuilderSpec.js +0 -47
  46. data/lib/jasmine-core/spec/core/matchers/NullDiffBuilderSpec.js +0 -13
  47. data/lib/jasmine-core/spec/core/matchers/ObjectPathSpec.js +0 -43
  48. data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +0 -645
  49. data/lib/jasmine-core/spec/core/matchers/nothingSpec.js +0 -8
  50. data/lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js +0 -93
  51. data/lib/jasmine-core/spec/core/matchers/toBeDefinedSpec.js +0 -18
  52. data/lib/jasmine-core/spec/core/matchers/toBeFalsySpec.js +0 -38
  53. data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanOrEqualSpec.js +0 -29
  54. data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +0 -20
  55. data/lib/jasmine-core/spec/core/matchers/toBeLessThanOrEqualSpec.js +0 -29
  56. data/lib/jasmine-core/spec/core/matchers/toBeLessThanSpec.js +0 -20
  57. data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +0 -37
  58. data/lib/jasmine-core/spec/core/matchers/toBeNegativeInfinitySpec.js +0 -31
  59. data/lib/jasmine-core/spec/core/matchers/toBeNullSpec.js +0 -17
  60. data/lib/jasmine-core/spec/core/matchers/toBePositiveInfinitySpec.js +0 -31
  61. data/lib/jasmine-core/spec/core/matchers/toBeSpec.js +0 -17
  62. data/lib/jasmine-core/spec/core/matchers/toBeTruthySpec.js +0 -38
  63. data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +0 -18
  64. data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +0 -26
  65. data/lib/jasmine-core/spec/core/matchers/toEqualSpec.js +0 -785
  66. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledBeforeSpec.js +0 -99
  67. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +0 -47
  68. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledTimesSpec.js +0 -86
  69. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +0 -67
  70. data/lib/jasmine-core/spec/core/matchers/toMatchSpec.js +0 -43
  71. data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +0 -315
  72. data/lib/jasmine-core/spec/core/matchers/toThrowMatchingSpec.js +0 -73
  73. data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +0 -100
  74. data/lib/jasmine-core/spec/helpers/BrowserFlags.js +0 -15
  75. data/lib/jasmine-core/spec/helpers/asyncAwait.js +0 -27
  76. data/lib/jasmine-core/spec/helpers/checkForMap.js +0 -37
  77. data/lib/jasmine-core/spec/helpers/checkForSet.js +0 -41
  78. data/lib/jasmine-core/spec/helpers/checkForSymbol.js +0 -28
  79. data/lib/jasmine-core/spec/helpers/checkForTypedArrays.js +0 -20
  80. data/lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js +0 -6
  81. data/lib/jasmine-core/spec/helpers/integrationMatchers.js +0 -43
  82. data/lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js +0 -30
  83. data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +0 -1261
  84. data/lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js +0 -18
  85. data/lib/jasmine-core/spec/html/MatchersHtmlSpec.js +0 -37
  86. data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +0 -27
  87. data/lib/jasmine-core/spec/html/QueryStringSpec.js +0 -72
  88. data/lib/jasmine-core/spec/html/ResultsNodeSpec.js +0 -62
  89. data/lib/jasmine-core/spec/html/SpyRegistryHtmlSpec.js +0 -39
  90. data/lib/jasmine-core/spec/html/matchers/toHaveClassSpec.js +0 -48
  91. data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +0 -101
  92. data/lib/jasmine-core/spec/performance/large_object_test.js +0 -36
  93. data/lib/jasmine-core/spec/performance/performance_test.js +0 -10
@@ -1,47 +0,0 @@
1
- describe("DiffBuilder", function() {
2
- it("records the actual and expected objects", function() {
3
- var diffBuilder = jasmineUnderTest.DiffBuilder();
4
- diffBuilder.record({x: 'actual'}, {x: 'expected'});
5
-
6
- expect(diffBuilder.getMessage()).toEqual("Expected Object({ x: 'actual' }) to equal Object({ x: 'expected' }).");
7
- });
8
-
9
- it("prints the path at which the difference was found", function() {
10
- var diffBuilder = jasmineUnderTest.DiffBuilder();
11
-
12
- diffBuilder.withPath('foo', function() {
13
- diffBuilder.record({x: 'actual'}, {x: 'expected'});
14
- });
15
-
16
- expect(diffBuilder.getMessage()).toEqual("Expected $.foo = Object({ x: 'actual' }) to equal Object({ x: 'expected' }).");
17
- });
18
-
19
- it("prints multiple messages, separated by newlines", function() {
20
- var diffBuilder = jasmineUnderTest.DiffBuilder();
21
-
22
- diffBuilder.withPath('foo', function() {
23
- diffBuilder.record(1, 2);
24
- });
25
-
26
- var message =
27
- "Expected $.foo = 1 to equal 2.\n" +
28
- "Expected 3 to equal 4.";
29
-
30
- diffBuilder.record(3, 4);
31
- expect(diffBuilder.getMessage()).toEqual(message);
32
- });
33
-
34
- it("allows customization of the message", function() {
35
- var diffBuilder = jasmineUnderTest.DiffBuilder();
36
-
37
- function darthVaderFormatter(actual, expected, path) {
38
- return "I find your lack of " + expected + " disturbing. (was " + actual + ", at " + path + ")"
39
- }
40
-
41
- diffBuilder.withPath('x', function() {
42
- diffBuilder.record('bar', 'foo', darthVaderFormatter);
43
- });
44
-
45
- expect(diffBuilder.getMessage()).toEqual("I find your lack of foo disturbing. (was bar, at $.x)");
46
- });
47
- });
@@ -1,13 +0,0 @@
1
- describe('NullDiffBuilder', function() {
2
- it('responds to withPath() by calling the passed function', function() {
3
- var spy = jasmine.createSpy('callback');
4
- jasmineUnderTest.NullDiffBuilder().withPath('does not matter', spy);
5
- expect(spy).toHaveBeenCalled();
6
- });
7
-
8
- it('responds to record()', function() {
9
- expect(function() {
10
- jasmineUnderTest.NullDiffBuilder().record('does not matter');
11
- }).not.toThrow();
12
- })
13
- });
@@ -1,43 +0,0 @@
1
- describe('ObjectPath', function() {
2
- var ObjectPath = jasmineUnderTest.ObjectPath;
3
-
4
- it('represents the path to a node in an object tree', function() {
5
- expect(new ObjectPath(['foo', 'bar']).toString()).toEqual('$.foo.bar');
6
- });
7
-
8
- it('has a depth', function() {
9
- expect(new ObjectPath().depth()).toEqual(0);
10
- expect(new ObjectPath(['foo']).depth()).toEqual(1);
11
- });
12
-
13
- it('renders numbers as array access', function() {
14
- expect(new ObjectPath(['foo', 0]).toString()).toEqual('$.foo[0]');
15
- });
16
-
17
- it('renders properties that are valid identifiers with dot notation', function() {
18
- expect(new ObjectPath(['foo123']).toString()).toEqual('$.foo123');
19
- expect(new ObjectPath(['x_y']).toString()).toEqual('$.x_y');
20
- expect(new ObjectPath(['A$B']).toString()).toEqual('$.A$B');
21
- });
22
-
23
- it('renders properties with non-identifier-safe characters with square bracket notation', function() {
24
- expect(new ObjectPath(['a b c']).toString()).toEqual("$['a b c']");
25
- expect(new ObjectPath(['1hello']).toString()).toEqual("$['1hello']");
26
- });
27
-
28
- it('renders as the empty string when empty', function() {
29
- expect(new ObjectPath().toString()).toEqual('');
30
- });
31
-
32
- it('stringifies properties that are not strings or numbers', function() {
33
- expect(new ObjectPath([{}]).toString()).toEqual("$['[object Object]']");
34
- });
35
-
36
- it('can be created based on another path', function() {
37
- var root = new ObjectPath();
38
- var path = root.add('foo');
39
-
40
- expect(path.toString()).toEqual('$.foo');
41
- expect(root.toString()).toEqual('');
42
- })
43
- });
@@ -1,645 +0,0 @@
1
- describe("matchersUtil", function() {
2
- describe("equals", function() {
3
- it("passes for literals that are triple-equal", function() {
4
- expect(jasmineUnderTest.matchersUtil.equals(null, null)).toBe(true);
5
- expect(jasmineUnderTest.matchersUtil.equals(void 0, void 0)).toBe(true);
6
- });
7
-
8
- it("fails for things that are not equivalent", function() {
9
- expect(jasmineUnderTest.matchersUtil.equals({a: "foo"}, 1)).toBe(false);
10
- });
11
-
12
- it("passes for Strings that are equivalent", function() {
13
- expect(jasmineUnderTest.matchersUtil.equals("foo", "foo")).toBe(true);
14
- });
15
-
16
- it("fails for Strings that are not equivalent", function() {
17
- expect(jasmineUnderTest.matchersUtil.equals("foo", "bar")).toBe(false);
18
- });
19
-
20
- it("passes for Numbers that are equivalent", function() {
21
- expect(jasmineUnderTest.matchersUtil.equals(123, 123)).toBe(true);
22
- });
23
-
24
- it("fails for Numbers that are not equivalent", function() {
25
- expect(jasmineUnderTest.matchersUtil.equals(123, 456)).toBe(false);
26
- });
27
-
28
- it("passes for Dates that are equivalent", function() {
29
- expect(jasmineUnderTest.matchersUtil.equals(new Date("Jan 1, 1970"), new Date("Jan 1, 1970"))).toBe(true);
30
- });
31
-
32
- it("fails for Dates that are not equivalent", function() {
33
- expect(jasmineUnderTest.matchersUtil.equals(new Date("Jan 1, 1970"), new Date("Feb 3, 1991"))).toBe(false);
34
- });
35
-
36
- it("passes for Booleans that are equivalent", function() {
37
- expect(jasmineUnderTest.matchersUtil.equals(true, true)).toBe(true);
38
- });
39
-
40
- it("fails for Booleans that are not equivalent", function() {
41
- expect(jasmineUnderTest.matchersUtil.equals(true, false)).toBe(false);
42
- });
43
-
44
- it("passes for RegExps that are equivalent", function() {
45
- expect(jasmineUnderTest.matchersUtil.equals(/foo/, /foo/)).toBe(true);
46
- });
47
-
48
- it("fails for RegExps that are not equivalent", function() {
49
- expect(jasmineUnderTest.matchersUtil.equals(/foo/, /bar/)).toBe(false);
50
- expect(jasmineUnderTest.matchersUtil.equals(new RegExp("foo", "i"), new RegExp("foo"))).toBe(false);
51
- });
52
-
53
- it("passes for Arrays that are equivalent", function() {
54
- expect(jasmineUnderTest.matchersUtil.equals([1, 2], [1, 2])).toBe(true);
55
- });
56
-
57
- it("passes for Arrays that are equivalent, with elements added by changing length", function() {
58
- var foo = [];
59
- foo.length = 1;
60
-
61
- expect(jasmineUnderTest.matchersUtil.equals(foo, [undefined])).toBe(true);
62
- });
63
-
64
- it("fails for Arrays that have different lengths", function() {
65
- expect(jasmineUnderTest.matchersUtil.equals([1, 2], [1, 2, 3])).toBe(false);
66
- });
67
-
68
- it("fails for Arrays that have different elements", function() {
69
- expect(jasmineUnderTest.matchersUtil.equals([1, 2, 3], [1, 5, 3])).toBe(false);
70
- });
71
-
72
- it("fails for Arrays whose contents are equivalent, but have differing properties", function() {
73
- var one = [1,2,3],
74
- two = [1,2,3];
75
-
76
- one.foo = 'bar';
77
- two.foo = 'baz';
78
-
79
- expect(jasmineUnderTest.matchersUtil.equals(one, two)).toBe(false);
80
- });
81
-
82
- it("passes for Arrays with equivalent contents and properties", function() {
83
- var one = [1,2,3],
84
- two = [1,2,3];
85
-
86
- one.foo = 'bar';
87
- two.foo = 'bar';
88
-
89
- expect(jasmineUnderTest.matchersUtil.equals(one, two)).toBe(true);
90
- });
91
-
92
- it("passes for Errors that are the same type and have the same message", function() {
93
- expect(jasmineUnderTest.matchersUtil.equals(new Error("foo"), new Error("foo"))).toBe(true);
94
- });
95
-
96
- it("fails for Errors that are the same type and have different messages", function() {
97
- expect(jasmineUnderTest.matchersUtil.equals(new Error("foo"), new Error("bar"))).toBe(false);
98
- });
99
-
100
- it("fails for objects with different constructors", function() {
101
- function One() {}
102
- function Two() {}
103
-
104
- expect(jasmineUnderTest.matchersUtil.equals(new One(), new Two())).toBe(false);
105
- });
106
-
107
- it("passes for Objects that are equivalent (simple case)", function() {
108
- expect(jasmineUnderTest.matchersUtil.equals({a: "foo"}, {a: "foo"})).toBe(true);
109
- });
110
-
111
- it("fails for Objects that are not equivalent (simple case)", function() {
112
- expect(jasmineUnderTest.matchersUtil.equals({a: "foo"}, {a: "bar"})).toBe(false);
113
- });
114
-
115
- it("passes for Objects that are equivalent (deep case)", function() {
116
- expect(jasmineUnderTest.matchersUtil.equals({a: "foo", b: { c: "bar"}}, {a: "foo", b: { c: "bar"}})).toBe(true);
117
- });
118
-
119
- it("fails for Objects that are not equivalent (deep case)", function() {
120
- expect(jasmineUnderTest.matchersUtil.equals({a: "foo", b: { c: "baz"}}, {a: "foo", b: { c: "bar"}})).toBe(false);
121
- });
122
-
123
- it("passes for Objects that are equivalent (with cycles)", function() {
124
- var actual = { a: "foo" },
125
- expected = { a: "foo" };
126
-
127
- actual.b = actual;
128
- expected.b = actual;
129
-
130
- expect(jasmineUnderTest.matchersUtil.equals(actual, expected)).toBe(true);
131
- });
132
-
133
- it("fails for Objects that are not equivalent (with cycles)", function() {
134
- var actual = { a: "foo" },
135
- expected = { a: "bar" };
136
-
137
- actual.b = actual;
138
- expected.b = actual;
139
-
140
- expect(jasmineUnderTest.matchersUtil.equals(actual, expected)).toBe(false);
141
- });
142
-
143
- it("fails for Objects that have the same number of keys, but different keys/values", function () {
144
- var expected = { a: undefined },
145
- actual = { b: 1 };
146
-
147
- expect(jasmineUnderTest.matchersUtil.equals(actual, expected)).toBe(false);
148
- })
149
-
150
- it("fails when comparing an empty object to an empty array (issue #114)", function() {
151
- var emptyObject = {},
152
- emptyArray = [];
153
-
154
- expect(jasmineUnderTest.matchersUtil.equals(emptyObject, emptyArray)).toBe(false);
155
- expect(jasmineUnderTest.matchersUtil.equals(emptyArray, emptyObject)).toBe(false);
156
- });
157
-
158
- it("passes for equivalent frozen objects (GitHub issue #266)", function() {
159
- var a = { foo: 1 },
160
- b = {foo: 1 };
161
-
162
- Object.freeze(a);
163
- Object.freeze(b);
164
-
165
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(true);
166
- });
167
-
168
- it("passes for equivalent Promises (GitHub issue #1314)", function() {
169
- if (typeof Promise === 'undefined') { return; }
170
-
171
- var p1 = new Promise(function () {}),
172
- p2 = new Promise(function () {});
173
-
174
- expect(jasmineUnderTest.matchersUtil.equals(p1, p1)).toBe(true);
175
- expect(jasmineUnderTest.matchersUtil.equals(p1, p2)).toBe(false);
176
- });
177
-
178
- describe("when running in a browser", function() {
179
- function isNotRunningInBrowser() {
180
- return typeof document === 'undefined'
181
- }
182
-
183
- it("passes for equivalent DOM nodes", function() {
184
- if (isNotRunningInBrowser()) {
185
- return;
186
- }
187
- var a = document.createElement("div");
188
- a.setAttribute("test-attr", "attr-value");
189
- a.appendChild(document.createTextNode('test'));
190
-
191
- var b = document.createElement("div");
192
- b.setAttribute("test-attr", "attr-value");
193
- b.appendChild(document.createTextNode('test'));
194
-
195
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(true);
196
- });
197
-
198
- it("passes for equivalent objects from different frames", function() {
199
- if (isNotRunningInBrowser()) {
200
- return;
201
- }
202
- var iframe = document.createElement('iframe');
203
- document.body.appendChild(iframe);
204
- iframe.contentWindow.eval('window.testObject = {}');
205
- expect(jasmineUnderTest.matchersUtil.equals({}, iframe.contentWindow.testObject)).toBe(true);
206
- document.body.removeChild(iframe);
207
- });
208
-
209
- it("fails for DOM nodes with different attributes or child nodes", function() {
210
- if (isNotRunningInBrowser()) {
211
- return;
212
- }
213
- var a = document.createElement("div");
214
- a.setAttribute("test-attr", "attr-value")
215
- a.appendChild(document.createTextNode('test'));
216
-
217
- var b = document.createElement("div");
218
- b.setAttribute("test-attr", "attr-value2")
219
- b.appendChild(document.createTextNode('test'));
220
-
221
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(false);
222
-
223
- b.setAttribute("test-attr", "attr-value");
224
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(true);
225
-
226
- b.appendChild(document.createTextNode('2'));
227
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(false);
228
-
229
- a.appendChild(document.createTextNode('2'));
230
- expect(jasmineUnderTest.matchersUtil.equals(a,b)).toBe(true);
231
- });
232
- });
233
-
234
- describe("when running in Node", function() {
235
- function isNotRunningInNode() {
236
- return typeof require !== 'function'
237
- }
238
-
239
- it("passes for equivalent objects from different vm contexts", function() {
240
- if (isNotRunningInNode()) {
241
- return;
242
- }
243
- var vm = require('vm');
244
- var sandbox = {
245
- obj: null
246
- };
247
- vm.runInNewContext('obj = {a: 1, b: 2}', sandbox);
248
-
249
- expect(jasmineUnderTest.matchersUtil.equals(sandbox.obj, {a: 1, b: 2})).toBe(true);
250
- });
251
-
252
- it("passes for equivalent arrays from different vm contexts", function() {
253
- if (isNotRunningInNode()) {
254
- return;
255
- }
256
- var vm = require('vm');
257
- var sandbox = {
258
- arr: null
259
- };
260
- vm.runInNewContext('arr = [1, 2]', sandbox);
261
-
262
- expect(jasmineUnderTest.matchersUtil.equals(sandbox.arr, [1, 2])).toBe(true);
263
- });
264
- });
265
-
266
- it("passes when Any is used", function() {
267
- var number = 3,
268
- anyNumber = new jasmineUnderTest.Any(Number);
269
-
270
- expect(jasmineUnderTest.matchersUtil.equals(number, anyNumber)).toBe(true);
271
- expect(jasmineUnderTest.matchersUtil.equals(anyNumber, number)).toBe(true);
272
- });
273
-
274
- it("fails when Any is compared to something unexpected", function() {
275
- var number = 3,
276
- anyString = new jasmineUnderTest.Any(String);
277
-
278
- expect(jasmineUnderTest.matchersUtil.equals(number, anyString)).toBe(false);
279
- expect(jasmineUnderTest.matchersUtil.equals(anyString, number)).toBe(false);
280
- });
281
-
282
- it("passes when ObjectContaining is used", function() {
283
- var obj = {
284
- foo: 3,
285
- bar: 7
286
- },
287
- containing = new jasmineUnderTest.ObjectContaining({foo: 3});
288
-
289
- expect(jasmineUnderTest.matchersUtil.equals(obj, containing)).toBe(true);
290
- expect(jasmineUnderTest.matchersUtil.equals(containing, obj)).toBe(true);
291
- });
292
-
293
- it("passes when an asymmetric equality tester returns true", function() {
294
- var tester = { asymmetricMatch: function(other) { return true; } };
295
-
296
- expect(jasmineUnderTest.matchersUtil.equals(false, tester)).toBe(true);
297
- expect(jasmineUnderTest.matchersUtil.equals(tester, false)).toBe(true);
298
- });
299
-
300
- it("fails when an asymmetric equality tester returns false", function() {
301
- var tester = { asymmetricMatch: function(other) { return false; } };
302
-
303
- expect(jasmineUnderTest.matchersUtil.equals(true, tester)).toBe(false);
304
- expect(jasmineUnderTest.matchersUtil.equals(tester, true)).toBe(false);
305
- });
306
-
307
- it("passes when ArrayContaining is used", function() {
308
- var arr = ["foo", "bar"];
309
-
310
- expect(jasmineUnderTest.matchersUtil.equals(arr, new jasmineUnderTest.ArrayContaining(["bar"]))).toBe(true);
311
- });
312
-
313
- it("passes when a custom equality matcher returns true", function() {
314
- var tester = function(a, b) { return true; };
315
-
316
- expect(jasmineUnderTest.matchersUtil.equals(1, 2, [tester])).toBe(true);
317
- });
318
-
319
- it("passes for two empty Objects", function () {
320
- expect(jasmineUnderTest.matchersUtil.equals({}, {})).toBe(true);
321
- });
322
-
323
- describe("when a custom equality matcher is installed that returns 'undefined'", function () {
324
- var tester = function(a, b) { return jasmine.undefined; };
325
-
326
- it("passes for two empty Objects", function () {
327
- expect(jasmineUnderTest.matchersUtil.equals({}, {}, [tester])).toBe(true);
328
- });
329
- });
330
-
331
- it("fails for equivalents when a custom equality matcher returns false", function() {
332
- var tester = function(a, b) { return false; };
333
-
334
- expect(jasmineUnderTest.matchersUtil.equals(1, 1, [tester])).toBe(false);
335
- });
336
-
337
- it("passes for an asymmetric equality tester that returns true when a custom equality tester return false", function() {
338
- var asymmetricTester = { asymmetricMatch: function(other) { return true; } },
339
- symmetricTester = function(a, b) { return false; };
340
-
341
- expect(jasmineUnderTest.matchersUtil.equals(asymmetricTester, true, [symmetricTester])).toBe(true);
342
- expect(jasmineUnderTest.matchersUtil.equals(true, asymmetricTester, [symmetricTester])).toBe(true);
343
- });
344
-
345
- it("passes custom equality matchers to asymmetric equality testers", function() {
346
- var tester = function(a, b) {};
347
- var asymmetricTester = { asymmetricMatch: jasmine.createSpy('asymmetricMatch') };
348
- asymmetricTester.asymmetricMatch.and.returnValue(true);
349
- var other = {};
350
-
351
- expect(jasmineUnderTest.matchersUtil.equals(asymmetricTester, other, [tester])).toBe(true);
352
- expect(asymmetricTester.asymmetricMatch).toHaveBeenCalledWith(other, [tester]);
353
- });
354
-
355
- it("passes when an Any is compared to an Any that checks for the same type", function() {
356
- var any1 = new jasmineUnderTest.Any(Function),
357
- any2 = new jasmineUnderTest.Any(Function);
358
-
359
- expect(jasmineUnderTest.matchersUtil.equals(any1, any2)).toBe(true);
360
- });
361
-
362
- it("passes for null prototype objects with same properties", function () {
363
- var objA = Object.create(null),
364
- objB = Object.create(null);
365
-
366
- objA.name = 'test';
367
- objB.name = 'test';
368
-
369
- expect(jasmineUnderTest.matchersUtil.equals(objA, objB)).toBe(true);
370
- });
371
-
372
- it("fails for null prototype objects with different properties", function () {
373
- var objA = Object.create(null),
374
- objB = Object.create(null);
375
-
376
- objA.name = 'test';
377
- objB.test = 'name';
378
-
379
- expect(jasmineUnderTest.matchersUtil.equals(objA, objB)).toBe(false);
380
- });
381
-
382
- it("passes when comparing two empty sets", function() {
383
- jasmine.getEnv().requireFunctioningSets();
384
- expect(jasmineUnderTest.matchersUtil.equals(new Set(), new Set())).toBe(true);
385
- });
386
-
387
- it("passes when comparing identical sets", function() {
388
- jasmine.getEnv().requireFunctioningSets();
389
-
390
- var setA = new Set();
391
- setA.add(6);
392
- setA.add(5);
393
- var setB = new Set();
394
- setB.add(6);
395
- setB.add(5);
396
-
397
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(true);
398
- });
399
-
400
- it("passes when comparing identical sets with different insertion order and simple elements", function() {
401
- jasmine.getEnv().requireFunctioningSets();
402
-
403
- var setA = new Set();
404
- setA.add(3);
405
- setA.add(6);
406
- var setB = new Set();
407
- setB.add(6);
408
- setB.add(3);
409
-
410
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(true);
411
- });
412
-
413
- it("passes when comparing identical sets with different insertion order and complex elements 1", function() {
414
- jasmine.getEnv().requireFunctioningSets();
415
-
416
- var setA1 = new Set();
417
- setA1.add(['a',3]);
418
- setA1.add([6,1]);
419
- var setA2 = new Set();
420
- setA1.add(['y',3]);
421
- setA1.add([6,1]);
422
- var setA = new Set();
423
- setA.add(setA1);
424
- setA.add(setA2);
425
-
426
-
427
- var setB1 = new Set();
428
- setB1.add([6,1]);
429
- setB1.add(['a',3]);
430
- var setB2 = new Set();
431
- setB1.add([6,1]);
432
- setB1.add(['y',3]);
433
- var setB = new Set();
434
- setB.add(setB1);
435
- setB.add(setB2);
436
-
437
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(true);
438
- });
439
-
440
- it("passes when comparing identical sets with different insertion order and complex elements 2", function() {
441
- jasmine.getEnv().requireFunctioningSets();
442
-
443
- var setA = new Set();
444
- setA.add([[1,2], [3,4]]);
445
- setA.add([[5,6], [7,8]]);
446
- var setB = new Set();
447
- setB.add([[5,6], [7,8]]);
448
- setB.add([[1,2], [3,4]]);
449
-
450
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(true);
451
- });
452
-
453
- it("fails for sets with different elements", function() {
454
- jasmine.getEnv().requireFunctioningSets();
455
- var setA = new Set();
456
- setA.add(6);
457
- setA.add(3);
458
- setA.add(5);
459
- var setB = new Set();
460
- setB.add(6);
461
- setB.add(4);
462
- setB.add(5);
463
-
464
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
465
- });
466
-
467
- it("fails for sets of different size", function() {
468
- jasmine.getEnv().requireFunctioningSets();
469
- var setA = new Set();
470
- setA.add(6);
471
- setA.add(3);
472
- var setB = new Set();
473
- setB.add(6);
474
- setB.add(4);
475
- setB.add(5);
476
-
477
- expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
478
- });
479
-
480
- it("passes when comparing two empty maps", function() {
481
- jasmine.getEnv().requireFunctioningMaps();
482
- expect(jasmineUnderTest.matchersUtil.equals(new Map(), new Map())).toBe(true);
483
- });
484
-
485
- it("passes when comparing identical maps", function() {
486
- jasmine.getEnv().requireFunctioningMaps();
487
- var mapA = new Map();
488
- mapA.set(6, 5);
489
- var mapB = new Map();
490
- mapB.set(6, 5);
491
- expect(jasmineUnderTest.matchersUtil.equals(mapA, mapB)).toBe(true);
492
- });
493
-
494
- it("passes when comparing identical maps with different insertion order", function() {
495
- jasmine.getEnv().requireFunctioningMaps();
496
- var mapA = new Map();
497
- mapA.set("a", 3);
498
- mapA.set(6, 1);
499
- var mapB = new Map();
500
- mapB.set(6, 1);
501
- mapB.set("a", 3);
502
- expect(jasmineUnderTest.matchersUtil.equals(mapA, mapB)).toBe(true);
503
- });
504
-
505
- it("fails for maps with different elements", function() {
506
- jasmine.getEnv().requireFunctioningMaps();
507
- var mapA = new Map();
508
- mapA.set(6, 3);
509
- mapA.set(5, 1);
510
- var mapB = new Map();
511
- mapB.set(6, 4);
512
- mapB.set(5, 1);
513
-
514
- expect(jasmineUnderTest.matchersUtil.equals(mapA, mapB)).toBe(false);
515
- });
516
-
517
- it("fails for maps of different size", function() {
518
- jasmine.getEnv().requireFunctioningMaps();
519
- var mapA = new Map();
520
- mapA.set(6, 3);
521
- var mapB = new Map();
522
- mapB.set(6, 4);
523
- mapB.set(5, 1);
524
- expect(jasmineUnderTest.matchersUtil.equals(mapA, mapB)).toBe(false);
525
- });
526
-
527
- describe("when running in an environment with array polyfills", function() {
528
- var findIndexDescriptor = Object.getOwnPropertyDescriptor(Array.prototype, 'findIndex');
529
- if (!findIndexDescriptor) {
530
- return;
531
- }
532
-
533
- beforeEach(function() {
534
- Object.defineProperty(Array.prototype, 'findIndex', {
535
- enumerable: true,
536
- value: function (predicate) {
537
- if (this === null) {
538
- throw new TypeError('Array.prototype.findIndex called on null or undefined');
539
- }
540
-
541
- if (typeof predicate !== 'function') {
542
- throw new TypeError('predicate must be a function');
543
- }
544
-
545
- var list = Object(this);
546
- var length = list.length >>> 0;
547
- var thisArg = arguments[1];
548
- var value;
549
-
550
- for (var i = 0; i < length; i++) {
551
- value = list[i];
552
- if (predicate.call(thisArg, value, i, list)) {
553
- return i;
554
- }
555
- }
556
-
557
- return -1;
558
- }
559
- });
560
- });
561
-
562
- afterEach(function() {
563
- Object.defineProperty(Array.prototype, 'findIndex', findIndexDescriptor);
564
- });
565
-
566
- it("passes when there's an array polyfill", function() {
567
- expect(['foo']).toEqual(['foo']);
568
- });
569
- });
570
- });
571
-
572
- describe("contains", function() {
573
- it("passes when expected is a substring of actual", function() {
574
- expect(jasmineUnderTest.matchersUtil.contains("ABC", "BC")).toBe(true);
575
- });
576
-
577
- it("fails when expected is a not substring of actual", function() {
578
- expect(jasmineUnderTest.matchersUtil.contains("ABC", "X")).toBe(false);
579
- });
580
-
581
- it("passes when expected is an element in an actual array", function() {
582
- expect(jasmineUnderTest.matchersUtil.contains(['foo', 'bar'], 'foo')).toBe(true);
583
- });
584
-
585
- it("fails when expected is not an element in an actual array", function() {
586
- expect(jasmineUnderTest.matchersUtil.contains(['foo', 'bar'], 'baz')).toBe(false);
587
- });
588
-
589
- it("passes with mixed-element arrays", function() {
590
- expect(jasmineUnderTest.matchersUtil.contains(["foo", {some: "bar"}], "foo")).toBe(true);
591
- expect(jasmineUnderTest.matchersUtil.contains(["foo", {some: "bar"}], {some: "bar"})).toBe(true);
592
- });
593
-
594
- it("uses custom equality testers if passed in and actual is an Array", function() {
595
- var customTester = function(a, b) {return true;};
596
-
597
- expect(jasmineUnderTest.matchersUtil.contains([1, 2], 2, [customTester])).toBe(true);
598
- });
599
-
600
- it("fails when actual is undefined", function() {
601
- expect(jasmineUnderTest.matchersUtil.contains(undefined, 'A')).toBe(false);
602
- });
603
-
604
- it("fails when actual is null", function() {
605
- expect(jasmineUnderTest.matchersUtil.contains(null, 'A')).toBe(false);
606
- });
607
-
608
- it("passes with array-like objects", function() {
609
- var capturedArgs = null;
610
- function testFunction(){
611
- capturedArgs = arguments;
612
- }
613
- testFunction('foo', 'bar');
614
- expect(jasmineUnderTest.matchersUtil.contains(capturedArgs, 'bar')).toBe(true);
615
- });
616
- });
617
-
618
- describe("buildMessage", function() {
619
-
620
- it("builds an English sentence for a failure case", function() {
621
- var actual = "foo",
622
- name = "toBar",
623
- message = jasmineUnderTest.matchersUtil.buildFailureMessage(name, false, actual);
624
-
625
- expect(message).toEqual("Expected 'foo' to bar.");
626
- });
627
-
628
- it("builds an English sentence for a 'not' failure case", function() {
629
- var actual = "foo",
630
- name = "toBar",
631
- isNot = true,
632
- message = message = jasmineUnderTest.matchersUtil.buildFailureMessage(name, isNot, actual);
633
-
634
- expect(message).toEqual("Expected 'foo' not to bar.");
635
- });
636
-
637
- it("builds an English sentence for an arbitrary array of expected arguments", function() {
638
- var actual = "foo",
639
- name = "toBar",
640
- message = jasmineUnderTest.matchersUtil.buildFailureMessage(name, false, actual, "quux", "corge");
641
-
642
- expect(message).toEqual("Expected 'foo' to bar 'quux', 'corge'.");
643
- });
644
- });
645
- });