Properly skip Set tests in browsers that don't really support it
This commit is contained in:
@@ -15,13 +15,13 @@ describe("jasmineUnderTest.pp", function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('stringify sets', function() {
|
describe('stringify sets', function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
|
||||||
|
|
||||||
it("should stringify sets properly", function() {
|
it("should stringify sets properly", function() {
|
||||||
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
expect(jasmineUnderTest.pp(new Set([1, 2]))).toEqual("Set( 1, 2 )");
|
expect(jasmineUnderTest.pp(new Set([1, 2]))).toEqual("Set( 1, 2 )");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should truncate sets with more elments than jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH", function() {
|
it("should truncate sets with more elments than jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH", function() {
|
||||||
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
var originalMaxSize = jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH;
|
var originalMaxSize = jasmineUnderTest.MAX_PRETTY_PRINT_ARRAY_LENGTH;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -369,12 +369,12 @@ describe("matchersUtil", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("passes when comparing two empty sets", function() {
|
it("passes when comparing two empty sets", function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
expect(jasmineUnderTest.matchersUtil.equals(new Set(), new Set())).toBe(true);
|
expect(jasmineUnderTest.matchersUtil.equals(new Set(), new Set())).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("passes when comparing identical sets", function() {
|
it("passes when comparing identical sets", function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
var setA = new Set([6, 5]);
|
var setA = new Set([6, 5]);
|
||||||
var setB = new Set();
|
var setB = new Set();
|
||||||
setB.add(6);
|
setB.add(6);
|
||||||
@@ -383,26 +383,25 @@ describe("matchersUtil", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("fails for sets with different elements", function() {
|
it("fails for sets with different elements", function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
var setA = new Set([6, 3, 5]);
|
var setA = new Set([6, 3, 5]);
|
||||||
var setB = new Set([6, 4, 5]);
|
var setB = new Set([6, 4, 5]);
|
||||||
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("fails for sets of different size", function() {
|
it("fails for sets of different size", function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
var setA = new Set([6, 3]);
|
var setA = new Set([6, 3]);
|
||||||
var setB = new Set([6, 4, 5]);
|
var setB = new Set([6, 4, 5]);
|
||||||
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("fails for sets with different insertion order", function() {
|
it("fails for sets with different insertion order", function() {
|
||||||
if (typeof Set === 'undefined') { return; }
|
jasmine.getEnv().requireFunctioningSets();
|
||||||
var setA = new Set([3, 6]);
|
var setA = new Set([3, 6]);
|
||||||
var setB = new Set([6, 3]);
|
var setB = new Set([6, 3]);
|
||||||
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
expect(jasmineUnderTest.matchersUtil.equals(setA, setB)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("contains", function() {
|
describe("contains", function() {
|
||||||
|
|||||||
@@ -20,4 +20,23 @@
|
|||||||
return /Firefox\/([0-9]{0,})/.exec(userAgent);
|
return /Firefox\/([0-9]{0,})/.exec(userAgent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function hasFunctioningSets() {
|
||||||
|
if (typeof Set !== 'undefined') { return false; }
|
||||||
|
|
||||||
|
try {
|
||||||
|
var s = new Set([4]);
|
||||||
|
if (s.size !== 1) { return false; }
|
||||||
|
if (s.values().next().value !== 4) { return false; }
|
||||||
|
return true;
|
||||||
|
} catch(e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
env.requireFunctioningSets = function() {
|
||||||
|
if (!hasFunctioningSets()) {
|
||||||
|
pending("Browser has incomplete or missing support for Sets");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
})(jasmine.getEnv());
|
})(jasmine.getEnv());
|
||||||
|
|||||||
Reference in New Issue
Block a user