Fixed toHaveSize matcher on IE 10 & 11
This commit is contained in:
@@ -315,6 +315,24 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
j$.isWeakMap = function(obj) {
|
||||||
|
return (
|
||||||
|
obj !== null &&
|
||||||
|
typeof obj !== 'undefined' &&
|
||||||
|
typeof jasmineGlobal.WeakMap !== 'undefined' &&
|
||||||
|
obj.constructor === jasmineGlobal.WeakMap
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
j$.isDataView = function(obj) {
|
||||||
|
return (
|
||||||
|
obj !== null &&
|
||||||
|
typeof obj !== 'undefined' &&
|
||||||
|
typeof jasmineGlobal.DataView !== 'undefined' &&
|
||||||
|
obj.constructor === jasmineGlobal.DataView
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
j$.isPromise = function(obj) {
|
j$.isPromise = function(obj) {
|
||||||
return (
|
return (
|
||||||
typeof jasmineGlobal.Promise !== 'undefined' &&
|
typeof jasmineGlobal.Promise !== 'undefined' &&
|
||||||
@@ -5908,11 +5926,11 @@ getJasmineRequireObj().toHaveSize = function(j$) {
|
|||||||
pass: false
|
pass: false
|
||||||
};
|
};
|
||||||
|
|
||||||
if (j$.isA_('WeakSet', actual) || j$.isA_('WeakMap', actual) || j$.isA_('DataView', actual)) {
|
if (j$.isA_('WeakSet', actual) || j$.isWeakMap(actual) || j$.isDataView(actual)) {
|
||||||
throw new Error('Cannot get size of ' + actual + '.');
|
throw new Error('Cannot get size of ' + actual + '.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actual instanceof Set || actual instanceof Map) {
|
if (j$.isSet(actual) || j$.isMap(actual)) {
|
||||||
result.pass = actual.size === expected;
|
result.pass = actual.size === expected;
|
||||||
} else if (isLength(actual.length)) {
|
} else if (isLength(actual.length)) {
|
||||||
result.pass = actual.length === expected;
|
result.pass = actual.length === expected;
|
||||||
|
|||||||
@@ -51,4 +51,15 @@ describe('base helpers', function() {
|
|||||||
expect(jasmineUnderTest.isAsymmetricEqualityTester_(obj)).toBe(true);
|
expect(jasmineUnderTest.isAsymmetricEqualityTester_(obj)).toBe(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('isSet', function() {
|
||||||
|
it('returns true when the object is a Set', function() {
|
||||||
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
|
expect(jasmineUnderTest.isSet(new Set())).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns false when the object is not a Set', function() {
|
||||||
|
expect(jasmineUnderTest.isSet({})).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ describe('toHaveSize', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('throws an error for WeakSet', function() {
|
it('throws an error for WeakSet', function() {
|
||||||
|
jasmine.getEnv().requireWeakSets();
|
||||||
var matcher = jasmineUnderTest.matchers.toHaveSize();
|
var matcher = jasmineUnderTest.matchers.toHaveSize();
|
||||||
|
|
||||||
expect(function() {
|
expect(function() {
|
||||||
@@ -118,11 +119,12 @@ describe('toHaveSize', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('throws an error for WeakMap', function() {
|
it('throws an error for WeakMap', function() {
|
||||||
|
jasmine.getEnv().requireWeakMaps();
|
||||||
var matcher = jasmineUnderTest.matchers.toHaveSize();
|
var matcher = jasmineUnderTest.matchers.toHaveSize();
|
||||||
|
|
||||||
expect(function() {
|
expect(function() {
|
||||||
matcher.compare(new WeakMap(), 2);
|
matcher.compare(new WeakMap(), 2);
|
||||||
}).toThrowError('Cannot get size of [object WeakMap].');
|
}).toThrowError(/Cannot get size of \[object (WeakMap|Object)\]\./);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('throws an error for DataView', function() {
|
it('throws an error for DataView', function() {
|
||||||
@@ -130,6 +132,6 @@ describe('toHaveSize', function() {
|
|||||||
|
|
||||||
expect(function() {
|
expect(function() {
|
||||||
matcher.compare(new DataView(new ArrayBuffer(128)), 2);
|
matcher.compare(new DataView(new ArrayBuffer(128)), 2);
|
||||||
}).toThrowError('Cannot get size of [object DataView].');
|
}).toThrowError(/Cannot get size of \[object (DataView|Object)\]\./);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -43,4 +43,10 @@
|
|||||||
env.pending('Browser has incomplete or missing support for Maps');
|
env.pending('Browser has incomplete or missing support for Maps');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
env.requireWeakMaps = function() {
|
||||||
|
if (typeof WeakMap === 'undefined') {
|
||||||
|
env.pending('Browser does not have support for WeakMap');
|
||||||
|
}
|
||||||
|
};
|
||||||
})(jasmine.getEnv());
|
})(jasmine.getEnv());
|
||||||
|
|||||||
@@ -47,4 +47,10 @@
|
|||||||
env.pending('Browser has incomplete or missing support for Sets');
|
env.pending('Browser has incomplete or missing support for Sets');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
env.requireWeakSets = function() {
|
||||||
|
if (typeof WeakSet === 'undefined') {
|
||||||
|
env.pending('Browser does not have support for WeakSet');
|
||||||
|
}
|
||||||
|
};
|
||||||
})(jasmine.getEnv());
|
})(jasmine.getEnv());
|
||||||
|
|||||||
@@ -148,6 +148,24 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
j$.isWeakMap = function(obj) {
|
||||||
|
return (
|
||||||
|
obj !== null &&
|
||||||
|
typeof obj !== 'undefined' &&
|
||||||
|
typeof jasmineGlobal.WeakMap !== 'undefined' &&
|
||||||
|
obj.constructor === jasmineGlobal.WeakMap
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
j$.isDataView = function(obj) {
|
||||||
|
return (
|
||||||
|
obj !== null &&
|
||||||
|
typeof obj !== 'undefined' &&
|
||||||
|
typeof jasmineGlobal.DataView !== 'undefined' &&
|
||||||
|
obj.constructor === jasmineGlobal.DataView
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
j$.isPromise = function(obj) {
|
j$.isPromise = function(obj) {
|
||||||
return (
|
return (
|
||||||
typeof jasmineGlobal.Promise !== 'undefined' &&
|
typeof jasmineGlobal.Promise !== 'undefined' &&
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ getJasmineRequireObj().toHaveSize = function(j$) {
|
|||||||
pass: false
|
pass: false
|
||||||
};
|
};
|
||||||
|
|
||||||
if (j$.isA_('WeakSet', actual) || j$.isA_('WeakMap', actual) || j$.isA_('DataView', actual)) {
|
if (j$.isA_('WeakSet', actual) || j$.isWeakMap(actual) || j$.isDataView(actual)) {
|
||||||
throw new Error('Cannot get size of ' + actual + '.');
|
throw new Error('Cannot get size of ' + actual + '.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actual instanceof Set || actual instanceof Map) {
|
if (j$.isSet(actual) || j$.isMap(actual)) {
|
||||||
result.pass = actual.size === expected;
|
result.pass = actual.size === expected;
|
||||||
} else if (isLength(actual.length)) {
|
} else if (isLength(actual.length)) {
|
||||||
result.pass = actual.length === expected;
|
result.pass = actual.length === expected;
|
||||||
|
|||||||
Reference in New Issue
Block a user