import { when } from "../Source/Cesium.js"; import addDefaultMatchers from "./addDefaultMatchers.js"; import equalsMethodEqualityTester from "./equalsMethodEqualityTester.js"; function customizeJasmine( env, includedCategory, excludedCategory, webglValidation, webglStub, release ) { // set this for uniform test resolution across devices window.devicePixelRatio = 1; window.specsUsingRelease = release; var originalDescribe = window.describe; window.describe = function (name, suite, categories) { // exclude this spec if we're filtering by category and it's not the selected category // otherwise if we have an excluded category, exclude this test if the category of this spec matches if (includedCategory && categories !== includedCategory) { return; } else if (excludedCategory && categories === excludedCategory) { return; } originalDescribe(name, suite, categories); }; // Override beforeEach(), afterEach(), beforeAll(), afterAll(), and it() to automatically // call done() when a returned promise resolves. var originalIt = window.it; window.it = function (description, f, timeout, categories) { originalIt( description, function (done) { var result = f(); when( result, function () { done(); }, function (e) { done.fail("promise rejected: " + e.toString()); } ); }, timeout, categories ); }; var originalBeforeEach = window.beforeEach; window.beforeEach = function (f) { originalBeforeEach(function (done) { var result = f(); when( result, function () { done(); }, function (e) { done.fail("promise rejected: " + e.toString()); } ); }); }; var originalAfterEach = window.afterEach; window.afterEach = function (f) { originalAfterEach(function (done) { var result = f(); when( result, function () { done(); }, function (e) { done.fail("promise rejected: " + e.toString()); } ); }); }; var originalBeforeAll = window.beforeAll; window.beforeAll = function (f) { originalBeforeAll(function (done) { var result = f(); when( result, function () { done(); }, function (e) { done.fail("promise rejected: " + e.toString()); } ); }); }; var originalAfterAll = window.afterAll; window.afterAll = function (f) { originalAfterAll(function (done) { var result = f(); when( result, function () { done(); }, function (e) { done.fail("promise rejected: " + e.toString()); } ); }); }; if (webglValidation) { window.webglValidation = true; } if (webglStub) { window.webglStub = true; } //env.catchExceptions(true); env.beforeEach(function () { addDefaultMatchers(!release).call(env); env.addCustomEqualityTester(equalsMethodEqualityTester); }); } export default customizeJasmine;