* Merges #1879 from @laeleoni
* Fixes #1879
This commit is contained in:
Steve Gravrock
2022-01-15 11:36:56 -08:00
3 changed files with 111 additions and 22 deletions

View File

@@ -5576,17 +5576,16 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
}; };
function keys(obj, isArray) { function keys(obj, isArray) {
var allKeys = Object.keys var allKeys = (function(o) {
? Object.keys(obj) var keys = [];
: (function(o) { for (var key in o) {
var keys = []; if (j$.util.has(o, key)) {
for (var key in o) { keys.push(key);
if (j$.util.has(o, key)) { }
keys.push(key); }
} // eslint-disable-next-line compat/compat
} return keys.concat(Object.getOwnPropertySymbols(o));
return keys; })(obj);
})(obj);
if (!isArray) { if (!isArray) {
return allKeys; return allKeys;

View File

@@ -1,3 +1,4 @@
/* eslint-disable compat/compat */
describe('toEqual', function() { describe('toEqual', function() {
'use strict'; 'use strict';
@@ -1039,4 +1040,94 @@ describe('toEqual', function() {
expect(compareEquals(actual, expected).message).toEqual(message); expect(compareEquals(actual, expected).message).toEqual(message);
}); });
}); });
// == Symbols ==
describe('Symbols', function() {
it('Fails if Symbol compared to Object', function() {
var sym = Symbol('foo');
var obj = {};
expect(sym).not.toEqual(obj);
});
it('Passes Symbol with itself', function() {
var sym = Symbol('foo');
expect(sym).toEqual(sym);
});
it('Fails if two Symbols with same value are compared', function() {
var symA = Symbol('foo');
var symB = Symbol('foo');
expect(symA).not.toEqual(symB);
});
it('Fails if two Symbols with different value are compared', function() {
var symA = Symbol('foo');
var symB = Symbol('bar');
expect(symA).not.toEqual(symB);
});
it('Fails if Symbol compared to NaN', function() {
var sym = Symbol('foo');
expect(sym).not.toEqual(NaN);
});
it('Fails if Symbol compared to Infinity', function() {
var sym = Symbol('foo');
expect(sym).not.toEqual(Infinity);
});
it('Fails if Symbol compared to String', function() {
var sym = Symbol('foo');
var str = 'foo';
expect(sym).not.toEqual(str);
});
it('Fails if Symbol compared to Number', function() {
var sym = Symbol('foo');
var num = Math.random();
expect(sym).not.toEqual(num);
});
it('Fails if Symbol compared to Boolean', function() {
var sym = Symbol('foo');
expect(sym).not.toEqual(true);
expect(sym).not.toEqual(false);
});
it('Fails if Symbol compared to Undefined', function() {
var sym = Symbol('foo');
expect(sym).not.toEqual(undefined);
});
it('Fails if Symbol compared to null', function() {
var sym = Symbol('foo');
expect(sym).not.toEqual(null);
});
it('Fails if Symbol compared to []', function() {
var sym = Symbol('foo');
var arr = ['foo'];
expect(sym).not.toEqual(arr);
});
it('Fails if Symbol compared to Function', function() {
var sym = Symbol('foo');
var f = function func() {};
expect(sym).not.toEqual(f);
});
});
}); });

View File

@@ -525,17 +525,16 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
}; };
function keys(obj, isArray) { function keys(obj, isArray) {
var allKeys = Object.keys var allKeys = (function(o) {
? Object.keys(obj) var keys = [];
: (function(o) { for (var key in o) {
var keys = []; if (j$.util.has(o, key)) {
for (var key in o) { keys.push(key);
if (j$.util.has(o, key)) { }
keys.push(key); }
} // eslint-disable-next-line compat/compat
} return keys.concat(Object.getOwnPropertySymbols(o));
return keys; })(obj);
})(obj);
if (!isArray) { if (!isArray) {
return allKeys; return allKeys;