@@ -5540,12 +5540,12 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
}
|
||||
|
||||
// Deep compare objects.
|
||||
var aKeys = keys(a, className == '[object Array]'),
|
||||
var aKeys = MatchersUtil.keys(a, className == '[object Array]'),
|
||||
key;
|
||||
size = aKeys.length;
|
||||
|
||||
// Ensure that both objects contain the same number of properties before comparing deep equality.
|
||||
if (keys(b, className == '[object Array]').length !== size) {
|
||||
if (MatchersUtil.keys(b, className == '[object Array]').length !== size) {
|
||||
diffBuilder.recordMismatch(
|
||||
objectKeysAreDifferentFormatter.bind(null, this.pp)
|
||||
);
|
||||
@@ -5581,7 +5581,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
return result;
|
||||
};
|
||||
|
||||
function keys(obj, isArray) {
|
||||
MatchersUtil.keys = function(obj, isArray) {
|
||||
var allKeys = (function(o) {
|
||||
var keys = [];
|
||||
for (var key in o) {
|
||||
@@ -5609,7 +5609,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
}
|
||||
|
||||
return extraKeys;
|
||||
}
|
||||
};
|
||||
|
||||
function isFunction(obj) {
|
||||
return typeof obj === 'function';
|
||||
@@ -7643,7 +7643,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
};
|
||||
|
||||
SinglePrettyPrintRun.prototype.iterateObject = function(obj, fn) {
|
||||
var objKeys = keys(obj, j$.isArray_(obj));
|
||||
var objKeys = j$.MatchersUtil.keys(obj, j$.isArray_(obj));
|
||||
var isGetter = function isGetter(prop) {};
|
||||
|
||||
if (obj.__lookupGetter__) {
|
||||
@@ -7838,8 +7838,14 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
property,
|
||||
isGetter
|
||||
) {
|
||||
this.append(property);
|
||||
if (typeof property === 'symbol') {
|
||||
this.append(property.toString());
|
||||
} else {
|
||||
this.append(property);
|
||||
}
|
||||
|
||||
this.append(': ');
|
||||
|
||||
if (isGetter) {
|
||||
this.append('<getter>');
|
||||
} else {
|
||||
@@ -7881,37 +7887,6 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
|
||||
MaxCharsReachedError.prototype = new Error();
|
||||
|
||||
function keys(obj, isArray) {
|
||||
var allKeys = Object.keys
|
||||
? Object.keys(obj)
|
||||
: (function(o) {
|
||||
var keys = [];
|
||||
for (var key in o) {
|
||||
if (j$.util.has(o, key)) {
|
||||
keys.push(key);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
})(obj);
|
||||
|
||||
if (!isArray) {
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
if (allKeys.length === 0) {
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
var extraKeys = [];
|
||||
for (var i = 0; i < allKeys.length; i++) {
|
||||
if (!/^[0-9]+$/.test(allKeys[i])) {
|
||||
extraKeys.push(allKeys[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return extraKeys;
|
||||
}
|
||||
|
||||
function customFormat(value, customObjectFormatters) {
|
||||
var i, result;
|
||||
|
||||
|
||||
@@ -84,6 +84,11 @@ describe('PrettyPrinter', function() {
|
||||
);
|
||||
});
|
||||
|
||||
it('includes symbols', function() {
|
||||
const pp = jasmineUnderTest.makePrettyPrinter();
|
||||
expect(pp([1, Symbol('foo'), 2])).toEqual('[ 1, Symbol(foo), 2 ]');
|
||||
});
|
||||
|
||||
it('should truncate arrays that are longer than jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH', function() {
|
||||
const originalMaxLength = jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH;
|
||||
const array = [1, 2, 3];
|
||||
@@ -163,6 +168,25 @@ describe('PrettyPrinter', function() {
|
||||
);
|
||||
});
|
||||
|
||||
it('includes symbol keys in objects', function() {
|
||||
const pp = jasmineUnderTest.makePrettyPrinter();
|
||||
const obj = {};
|
||||
obj[Symbol('foo')] = 'bar';
|
||||
expect(pp(obj)).toEqual("Object({ Symbol(foo): 'bar' })");
|
||||
});
|
||||
|
||||
it('stringifies string and symbol keys differently', function() {
|
||||
const pp = jasmineUnderTest.makePrettyPrinter();
|
||||
const symObj = {};
|
||||
const strObj = {};
|
||||
const k = 'foo';
|
||||
const v = 'bar';
|
||||
symObj[Symbol(k)] = v;
|
||||
strObj[k] = v;
|
||||
|
||||
expect(pp(symObj)).not.toEqual(pp(strObj));
|
||||
});
|
||||
|
||||
it('should stringify objects that almost look like DOM nodes', function() {
|
||||
const pp = jasmineUnderTest.makePrettyPrinter();
|
||||
expect(pp({ nodeType: 1 })).toEqual('Object({ nodeType: 1 })');
|
||||
|
||||
@@ -106,7 +106,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
};
|
||||
|
||||
SinglePrettyPrintRun.prototype.iterateObject = function(obj, fn) {
|
||||
var objKeys = keys(obj, j$.isArray_(obj));
|
||||
var objKeys = j$.MatchersUtil.keys(obj, j$.isArray_(obj));
|
||||
var isGetter = function isGetter(prop) {};
|
||||
|
||||
if (obj.__lookupGetter__) {
|
||||
@@ -301,8 +301,14 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
property,
|
||||
isGetter
|
||||
) {
|
||||
this.append(property);
|
||||
if (typeof property === 'symbol') {
|
||||
this.append(property.toString());
|
||||
} else {
|
||||
this.append(property);
|
||||
}
|
||||
|
||||
this.append(': ');
|
||||
|
||||
if (isGetter) {
|
||||
this.append('<getter>');
|
||||
} else {
|
||||
@@ -344,37 +350,6 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
|
||||
|
||||
MaxCharsReachedError.prototype = new Error();
|
||||
|
||||
function keys(obj, isArray) {
|
||||
var allKeys = Object.keys
|
||||
? Object.keys(obj)
|
||||
: (function(o) {
|
||||
var keys = [];
|
||||
for (var key in o) {
|
||||
if (j$.util.has(o, key)) {
|
||||
keys.push(key);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
})(obj);
|
||||
|
||||
if (!isArray) {
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
if (allKeys.length === 0) {
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
var extraKeys = [];
|
||||
for (var i = 0; i < allKeys.length; i++) {
|
||||
if (!/^[0-9]+$/.test(allKeys[i])) {
|
||||
extraKeys.push(allKeys[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return extraKeys;
|
||||
}
|
||||
|
||||
function customFormat(value, customObjectFormatters) {
|
||||
var i, result;
|
||||
|
||||
|
||||
@@ -483,12 +483,12 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
}
|
||||
|
||||
// Deep compare objects.
|
||||
var aKeys = keys(a, className == '[object Array]'),
|
||||
var aKeys = MatchersUtil.keys(a, className == '[object Array]'),
|
||||
key;
|
||||
size = aKeys.length;
|
||||
|
||||
// Ensure that both objects contain the same number of properties before comparing deep equality.
|
||||
if (keys(b, className == '[object Array]').length !== size) {
|
||||
if (MatchersUtil.keys(b, className == '[object Array]').length !== size) {
|
||||
diffBuilder.recordMismatch(
|
||||
objectKeysAreDifferentFormatter.bind(null, this.pp)
|
||||
);
|
||||
@@ -524,7 +524,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
return result;
|
||||
};
|
||||
|
||||
function keys(obj, isArray) {
|
||||
MatchersUtil.keys = function(obj, isArray) {
|
||||
var allKeys = (function(o) {
|
||||
var keys = [];
|
||||
for (var key in o) {
|
||||
@@ -552,7 +552,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
|
||||
}
|
||||
|
||||
return extraKeys;
|
||||
}
|
||||
};
|
||||
|
||||
function isFunction(obj) {
|
||||
return typeof obj === 'function';
|
||||
|
||||
Reference in New Issue
Block a user