@deck.gl/test-utils 9.0.0-alpha.7 → 9.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generate-layer-tests.d.ts +20 -0
- package/dist/generate-layer-tests.d.ts.map +1 -0
- package/dist/generate-layer-tests.js +209 -0
- package/dist/index.cjs +645 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/interaction-test-runner.d.ts +29 -0
- package/dist/interaction-test-runner.d.ts.map +1 -0
- package/dist/interaction-test-runner.js +57 -0
- package/dist/lifecycle-test.d.ts +119 -0
- package/dist/lifecycle-test.d.ts.map +1 -0
- package/dist/lifecycle-test.js +232 -0
- package/dist/snapshot-test-runner.d.ts +46 -0
- package/dist/snapshot-test-runner.d.ts.map +1 -0
- package/dist/snapshot-test-runner.js +101 -0
- package/dist/test-runner.d.ts +56 -0
- package/dist/test-runner.d.ts.map +1 -0
- package/dist/test-runner.js +143 -0
- package/dist/utils/dom.d.ts +7 -0
- package/dist/utils/dom.d.ts.map +1 -0
- package/dist/utils/dom.js +11 -0
- package/dist/utils/precision.d.ts +4 -0
- package/dist/utils/precision.d.ts.map +1 -0
- package/dist/utils/precision.js +19 -0
- package/dist/utils/setup-gl.d.ts +5 -0
- package/dist/utils/setup-gl.d.ts.map +1 -0
- package/dist/utils/setup-gl.js +15 -0
- package/package.json +17 -8
- package/src/generate-layer-tests.ts +55 -15
- package/src/index.ts +7 -3
- package/src/interaction-test-runner.ts +29 -13
- package/src/lifecycle-test.ts +214 -27
- package/src/snapshot-test-runner.ts +79 -47
- package/src/test-runner.ts +77 -59
- package/src/utils/dom.ts +6 -1
- package/src/utils/precision.ts +13 -6
- package/src/utils/setup-gl.ts +2 -2
- package/dist/es5/generate-layer-tests.js +0 -243
- package/dist/es5/generate-layer-tests.js.map +0 -1
- package/dist/es5/index.js +0 -88
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/interaction-test-runner.js +0 -119
- package/dist/es5/interaction-test-runner.js.map +0 -1
- package/dist/es5/lifecycle-test.js +0 -456
- package/dist/es5/lifecycle-test.js.map +0 -1
- package/dist/es5/snapshot-test-runner.js +0 -145
- package/dist/es5/snapshot-test-runner.js.map +0 -1
- package/dist/es5/test-runner.js +0 -198
- package/dist/es5/test-runner.js.map +0 -1
- package/dist/es5/utils/dom.js +0 -17
- package/dist/es5/utils/dom.js.map +0 -1
- package/dist/es5/utils/precision.js +0 -33
- package/dist/es5/utils/precision.js.map +0 -1
- package/dist/es5/utils/setup-gl.js +0 -19
- package/dist/es5/utils/setup-gl.js.map +0 -1
- package/dist/esm/generate-layer-tests.js +0 -216
- package/dist/esm/generate-layer-tests.js.map +0 -1
- package/dist/esm/index.js +0 -8
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interaction-test-runner.js +0 -52
- package/dist/esm/interaction-test-runner.js.map +0 -1
- package/dist/esm/lifecycle-test.js +0 -282
- package/dist/esm/lifecycle-test.js.map +0 -1
- package/dist/esm/snapshot-test-runner.js +0 -94
- package/dist/esm/snapshot-test-runner.js.map +0 -1
- package/dist/esm/test-runner.js +0 -134
- package/dist/esm/test-runner.js.map +0 -1
- package/dist/esm/utils/dom.js +0 -10
- package/dist/esm/utils/dom.js.map +0 -1
- package/dist/esm/utils/precision.js +0 -18
- package/dist/esm/utils/precision.js.map +0 -1
- package/dist/esm/utils/setup-gl.js +0 -9
- package/dist/esm/utils/setup-gl.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
|
|
16
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
|
|
18
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
-
|
|
20
|
-
var _testRunner = _interopRequireDefault(require("./test-runner"));
|
|
21
|
-
|
|
22
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
23
|
-
|
|
24
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
25
|
-
|
|
26
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
27
|
-
|
|
28
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
29
|
-
|
|
30
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
-
|
|
32
|
-
var DEFAULT_TEST_CASE = {
|
|
33
|
-
name: 'Unnamed interaction test',
|
|
34
|
-
events: [],
|
|
35
|
-
onBeforeEvents: function onBeforeEvents(_ref) {
|
|
36
|
-
var deck = _ref.deck;
|
|
37
|
-
},
|
|
38
|
-
onAfterEvents: function onAfterEvents(_ref2) {
|
|
39
|
-
var deck = _ref2.deck,
|
|
40
|
-
layers = _ref2.layers,
|
|
41
|
-
context = _ref2.context;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
function sleep(timeout) {
|
|
46
|
-
return new Promise(function (resolve) {
|
|
47
|
-
return window.setTimeout(resolve, timeout);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
var InteractionTestRunner = function (_TestRunner) {
|
|
52
|
-
(0, _inherits2.default)(InteractionTestRunner, _TestRunner);
|
|
53
|
-
|
|
54
|
-
var _super = _createSuper(InteractionTestRunner);
|
|
55
|
-
|
|
56
|
-
function InteractionTestRunner() {
|
|
57
|
-
(0, _classCallCheck2.default)(this, InteractionTestRunner);
|
|
58
|
-
return _super.apply(this, arguments);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
var _proto = InteractionTestRunner.prototype;
|
|
62
|
-
|
|
63
|
-
_proto.runTestCase = function runTestCase(testCase, onDone) {
|
|
64
|
-
testCase.context = testCase.onBeforeEvents({
|
|
65
|
-
deck: this.deck
|
|
66
|
-
});
|
|
67
|
-
var promise = Promise.resolve();
|
|
68
|
-
|
|
69
|
-
var _iterator = _createForOfIteratorHelper(testCase.events),
|
|
70
|
-
_step;
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
var _loop = function _loop() {
|
|
74
|
-
var event = _step.value;
|
|
75
|
-
|
|
76
|
-
if (event.wait) {
|
|
77
|
-
promise = promise.then(function () {
|
|
78
|
-
return sleep(event.wait);
|
|
79
|
-
});
|
|
80
|
-
} else {
|
|
81
|
-
promise = promise.then(function () {
|
|
82
|
-
return window.browserTestDriver_emulateInput(event);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
88
|
-
_loop();
|
|
89
|
-
}
|
|
90
|
-
} catch (err) {
|
|
91
|
-
_iterator.e(err);
|
|
92
|
-
} finally {
|
|
93
|
-
_iterator.f();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return promise.then(onDone);
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
_proto.assert = function assert(testCase) {
|
|
100
|
-
testCase.onAfterEvents({
|
|
101
|
-
deck: this.deck,
|
|
102
|
-
layers: this.deck.layerManager.getLayers(),
|
|
103
|
-
context: testCase.context
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
this._next();
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
(0, _createClass2.default)(InteractionTestRunner, [{
|
|
110
|
-
key: "defaultTestCase",
|
|
111
|
-
get: function get() {
|
|
112
|
-
return DEFAULT_TEST_CASE;
|
|
113
|
-
}
|
|
114
|
-
}]);
|
|
115
|
-
return InteractionTestRunner;
|
|
116
|
-
}(_testRunner.default);
|
|
117
|
-
|
|
118
|
-
exports.default = InteractionTestRunner;
|
|
119
|
-
//# sourceMappingURL=interaction-test-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interaction-test-runner.ts"],"names":["DEFAULT_TEST_CASE","name","events","onBeforeEvents","deck","onAfterEvents","layers","context","sleep","timeout","Promise","resolve","window","setTimeout","InteractionTestRunner","runTestCase","testCase","onDone","promise","event","wait","then","browserTestDriver_emulateInput","assert","layerManager","getLayers","_next","TestRunner"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA;;;;;;;;;;;;AAEA,IAAMA,iBAAiB,GAAG;AACxBC,EAAAA,IAAI,EAAE,0BADkB;AAExBC,EAAAA,MAAM,EAAE,EAFgB;AAGxBC,EAAAA,cAAc,EAAE,8BAAY;AAAA,QAAVC,IAAU,QAAVA,IAAU;AAAE,GAHN;AAIxBC,EAAAA,aAAa,EAAE,8BAA6B;AAAA,QAA3BD,IAA2B,SAA3BA,IAA2B;AAAA,QAArBE,MAAqB,SAArBA,MAAqB;AAAA,QAAbC,OAAa,SAAbA,OAAa;AAAE;AAJtB,CAA1B;;AAOA,SAASC,KAAT,CAAeC,OAAf,EAAwB;AACtB,SAAO,IAAIC,OAAJ,CAAY,UAAAC,OAAO;AAAA,WAAIC,MAAM,CAACC,UAAP,CAAkBF,OAAlB,EAA2BF,OAA3B,CAAJ;AAAA,GAAnB,CAAP;AACD;;IAEoBK,qB;;;;;;;;;;;;SAOnBC,W,GAAA,qBAAYC,QAAZ,EAAsBC,MAAtB,EAA8B;AAC5BD,IAAAA,QAAQ,CAACT,OAAT,GAAmBS,QAAQ,CAACb,cAAT,CAAwB;AACzCC,MAAAA,IAAI,EAAE,KAAKA;AAD8B,KAAxB,CAAnB;AAIA,QAAIc,OAAO,GAAGR,OAAO,CAACC,OAAR,EAAd;;AAL4B,+CAMRK,QAAQ,CAACd,MAND;AAAA;;AAAA;AAAA;AAAA,YAMjBiB,KANiB;;AAO1B,YAAIA,KAAK,CAACC,IAAV,EAAgB;AACdF,UAAAA,OAAO,GAAGA,OAAO,CAACG,IAAR,CAAa;AAAA,mBAAMb,KAAK,CAACW,KAAK,CAACC,IAAP,CAAX;AAAA,WAAb,CAAV;AACD,SAFD,MAEO;AACLF,UAAAA,OAAO,GAAGA,OAAO,CAACG,IAAR,CAAa;AAAA,mBAAMT,MAAM,CAACU,8BAAP,CAAsCH,KAAtC,CAAN;AAAA,WAAb,CAAV;AACD;AAXyB;;AAM5B,0DAAqC;AAAA;AAMpC;AAZ2B;AAAA;AAAA;AAAA;AAAA;;AAa5B,WAAOD,OAAO,CAACG,IAAR,CAAaJ,MAAb,CAAP;AACD,G;;SAEDM,M,GAAA,gBAAOP,QAAP,EAAiB;AACfA,IAAAA,QAAQ,CAACX,aAAT,CAAuB;AACrBD,MAAAA,IAAI,EAAE,KAAKA,IADU;AAErBE,MAAAA,MAAM,EAAE,KAAKF,IAAL,CAAUoB,YAAV,CAAuBC,SAAvB,EAFa;AAGrBlB,MAAAA,OAAO,EAAES,QAAQ,CAACT;AAHG,KAAvB;;AAKA,SAAKmB,KAAL;AACD,G;;;;SA7BD,eAAsB;AACpB,aAAO1B,iBAAP;AACD;;;EAHgD2B,mB","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global window */\nimport TestRunner from './test-runner';\n\nconst DEFAULT_TEST_CASE = {\n name: 'Unnamed interaction test',\n events: [],\n onBeforeEvents: ({deck}) => {},\n onAfterEvents: ({deck, layers, context}) => {}\n};\n\nfunction sleep(timeout) {\n return new Promise(resolve => window.setTimeout(resolve, timeout));\n}\n\nexport default class InteractionTestRunner extends TestRunner {\n get defaultTestCase() {\n return DEFAULT_TEST_CASE;\n }\n\n // chain events\n // TODO - switch to async/await\n runTestCase(testCase, onDone) {\n testCase.context = testCase.onBeforeEvents({\n deck: this.deck\n });\n\n let promise = Promise.resolve();\n for (const event of testCase.events) {\n if (event.wait) {\n promise = promise.then(() => sleep(event.wait));\n } else {\n promise = promise.then(() => window.browserTestDriver_emulateInput(event));\n }\n }\n return promise.then(onDone);\n }\n\n assert(testCase) {\n testCase.onAfterEvents({\n deck: this.deck,\n layers: this.deck.layerManager.getLayers(),\n context: testCase.context\n });\n this._next();\n }\n}\n"],"file":"interaction-test-runner.js"}
|
|
@@ -1,456 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.testInitializeLayer = testInitializeLayer;
|
|
9
|
-
exports.testInitializeLayerAsync = testInitializeLayerAsync;
|
|
10
|
-
exports.testLayer = testLayer;
|
|
11
|
-
exports.testLayerAsync = testLayerAsync;
|
|
12
|
-
|
|
13
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
|
-
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
|
|
17
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
18
|
-
|
|
19
|
-
var _core = require("@deck.gl/core");
|
|
20
|
-
|
|
21
|
-
var _testUtils = require("@probe.gl/test-utils");
|
|
22
|
-
|
|
23
|
-
var _setupGl = require("./utils/setup-gl");
|
|
24
|
-
|
|
25
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
26
|
-
|
|
27
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
28
|
-
|
|
29
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
30
|
-
|
|
31
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
32
|
-
|
|
33
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
34
|
-
|
|
35
|
-
var testViewport = new _core.MapView().makeViewport({
|
|
36
|
-
width: 100,
|
|
37
|
-
height: 100,
|
|
38
|
-
viewState: {
|
|
39
|
-
longitude: 0,
|
|
40
|
-
latitude: 0,
|
|
41
|
-
zoom: 1
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
function defaultOnError(error, title) {
|
|
46
|
-
if (error) {
|
|
47
|
-
throw error;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function initializeLayerManager(_ref) {
|
|
52
|
-
var layer = _ref.layer,
|
|
53
|
-
_ref$viewport = _ref.viewport,
|
|
54
|
-
viewport = _ref$viewport === void 0 ? testViewport : _ref$viewport,
|
|
55
|
-
_ref$onError = _ref.onError,
|
|
56
|
-
_onError = _ref$onError === void 0 ? defaultOnError : _ref$onError;
|
|
57
|
-
|
|
58
|
-
var layerManager = new _core.LayerManager(_setupGl.device, {
|
|
59
|
-
viewport: viewport
|
|
60
|
-
});
|
|
61
|
-
layerManager.setProps({
|
|
62
|
-
onError: function onError(error) {
|
|
63
|
-
return _onError(error, "initializing ".concat(layer.id));
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
layerManager.setLayers([layer]);
|
|
67
|
-
return layerManager;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function testInitializeLayer(opts) {
|
|
71
|
-
var layerManager = initializeLayerManager(opts);
|
|
72
|
-
|
|
73
|
-
if (opts.finalize === false) {
|
|
74
|
-
return {
|
|
75
|
-
finalize: function finalize() {
|
|
76
|
-
return layerManager.finalize();
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
layerManager.finalize();
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function testInitializeLayerAsync(_x) {
|
|
86
|
-
return _testInitializeLayerAsync.apply(this, arguments);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function _testInitializeLayerAsync() {
|
|
90
|
-
_testInitializeLayerAsync = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(opts) {
|
|
91
|
-
var layerManager, deckRenderer;
|
|
92
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
93
|
-
while (1) {
|
|
94
|
-
switch (_context.prev = _context.next) {
|
|
95
|
-
case 0:
|
|
96
|
-
layerManager = initializeLayerManager(opts);
|
|
97
|
-
deckRenderer = new _core.DeckRenderer(_setupGl.device);
|
|
98
|
-
|
|
99
|
-
case 2:
|
|
100
|
-
if (opts.layer.isLoaded) {
|
|
101
|
-
_context.next = 7;
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
_context.next = 5;
|
|
106
|
-
return update({
|
|
107
|
-
layerManager: layerManager,
|
|
108
|
-
deckRenderer: deckRenderer
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
case 5:
|
|
112
|
-
_context.next = 2;
|
|
113
|
-
break;
|
|
114
|
-
|
|
115
|
-
case 7:
|
|
116
|
-
if (!(opts.finalize === false)) {
|
|
117
|
-
_context.next = 9;
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return _context.abrupt("return", {
|
|
122
|
-
finalize: function finalize() {
|
|
123
|
-
return layerManager.finalize();
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
case 9:
|
|
128
|
-
layerManager.finalize();
|
|
129
|
-
return _context.abrupt("return", null);
|
|
130
|
-
|
|
131
|
-
case 11:
|
|
132
|
-
case "end":
|
|
133
|
-
return _context.stop();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}, _callee);
|
|
137
|
-
}));
|
|
138
|
-
return _testInitializeLayerAsync.apply(this, arguments);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function testLayer(opts) {
|
|
142
|
-
var Layer = opts.Layer,
|
|
143
|
-
_opts$testCases = opts.testCases,
|
|
144
|
-
testCases = _opts$testCases === void 0 ? [] : _opts$testCases,
|
|
145
|
-
_opts$spies = opts.spies,
|
|
146
|
-
spies = _opts$spies === void 0 ? [] : _opts$spies,
|
|
147
|
-
_opts$onError = opts.onError,
|
|
148
|
-
onError = _opts$onError === void 0 ? defaultOnError : _opts$onError;
|
|
149
|
-
var resources = setupLayerTests("testing ".concat(Layer.layerName), opts);
|
|
150
|
-
var layer = new Layer();
|
|
151
|
-
|
|
152
|
-
var _iterator = _createForOfIteratorHelper(testCases),
|
|
153
|
-
_step;
|
|
154
|
-
|
|
155
|
-
try {
|
|
156
|
-
var _loop = function _loop() {
|
|
157
|
-
var testCase = _step.value;
|
|
158
|
-
|
|
159
|
-
var oldState = _objectSpread({}, layer.state);
|
|
160
|
-
|
|
161
|
-
var _runLayerTestUpdate = runLayerTestUpdate(testCase, resources, layer, spies),
|
|
162
|
-
newLayer = _runLayerTestUpdate.layer,
|
|
163
|
-
spyMap = _runLayerTestUpdate.spyMap;
|
|
164
|
-
|
|
165
|
-
runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);
|
|
166
|
-
Object.keys(spyMap).forEach(function (k) {
|
|
167
|
-
return spyMap[k].reset();
|
|
168
|
-
});
|
|
169
|
-
layer = newLayer;
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
173
|
-
_loop();
|
|
174
|
-
}
|
|
175
|
-
} catch (err) {
|
|
176
|
-
_iterator.e(err);
|
|
177
|
-
} finally {
|
|
178
|
-
_iterator.f();
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
var error = cleanupAfterLayerTests(resources);
|
|
182
|
-
|
|
183
|
-
if (error) {
|
|
184
|
-
onError(error, "".concat(Layer.layerName, " should delete all resources"));
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
function testLayerAsync(_x2) {
|
|
189
|
-
return _testLayerAsync.apply(this, arguments);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
function _testLayerAsync() {
|
|
193
|
-
_testLayerAsync = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(opts) {
|
|
194
|
-
var Layer, _opts$testCases2, testCases, _opts$spies2, spies, _opts$onError2, onError, resources, layer, _iterator3, _step3, _loop2, error;
|
|
195
|
-
|
|
196
|
-
return _regenerator.default.wrap(function _callee2$(_context3) {
|
|
197
|
-
while (1) {
|
|
198
|
-
switch (_context3.prev = _context3.next) {
|
|
199
|
-
case 0:
|
|
200
|
-
Layer = opts.Layer, _opts$testCases2 = opts.testCases, testCases = _opts$testCases2 === void 0 ? [] : _opts$testCases2, _opts$spies2 = opts.spies, spies = _opts$spies2 === void 0 ? [] : _opts$spies2, _opts$onError2 = opts.onError, onError = _opts$onError2 === void 0 ? defaultOnError : _opts$onError2;
|
|
201
|
-
resources = setupLayerTests("testing ".concat(Layer.layerName), opts);
|
|
202
|
-
layer = new Layer();
|
|
203
|
-
_iterator3 = _createForOfIteratorHelper(testCases);
|
|
204
|
-
_context3.prev = 4;
|
|
205
|
-
_loop2 = _regenerator.default.mark(function _loop2() {
|
|
206
|
-
var testCase, oldState, _runLayerTestUpdate2, newLayer, spyMap;
|
|
207
|
-
|
|
208
|
-
return _regenerator.default.wrap(function _loop2$(_context2) {
|
|
209
|
-
while (1) {
|
|
210
|
-
switch (_context2.prev = _context2.next) {
|
|
211
|
-
case 0:
|
|
212
|
-
testCase = _step3.value;
|
|
213
|
-
oldState = _objectSpread({}, layer.state);
|
|
214
|
-
_runLayerTestUpdate2 = runLayerTestUpdate(testCase, resources, layer, spies), newLayer = _runLayerTestUpdate2.layer, spyMap = _runLayerTestUpdate2.spyMap;
|
|
215
|
-
runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);
|
|
216
|
-
|
|
217
|
-
case 4:
|
|
218
|
-
if (newLayer.isLoaded) {
|
|
219
|
-
_context2.next = 10;
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
_context2.next = 7;
|
|
224
|
-
return update(resources);
|
|
225
|
-
|
|
226
|
-
case 7:
|
|
227
|
-
runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);
|
|
228
|
-
_context2.next = 4;
|
|
229
|
-
break;
|
|
230
|
-
|
|
231
|
-
case 10:
|
|
232
|
-
Object.keys(spyMap).forEach(function (k) {
|
|
233
|
-
return spyMap[k].reset();
|
|
234
|
-
});
|
|
235
|
-
layer = newLayer;
|
|
236
|
-
|
|
237
|
-
case 12:
|
|
238
|
-
case "end":
|
|
239
|
-
return _context2.stop();
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}, _loop2);
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
_iterator3.s();
|
|
246
|
-
|
|
247
|
-
case 7:
|
|
248
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
249
|
-
_context3.next = 11;
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return _context3.delegateYield(_loop2(), "t0", 9);
|
|
254
|
-
|
|
255
|
-
case 9:
|
|
256
|
-
_context3.next = 7;
|
|
257
|
-
break;
|
|
258
|
-
|
|
259
|
-
case 11:
|
|
260
|
-
_context3.next = 16;
|
|
261
|
-
break;
|
|
262
|
-
|
|
263
|
-
case 13:
|
|
264
|
-
_context3.prev = 13;
|
|
265
|
-
_context3.t1 = _context3["catch"](4);
|
|
266
|
-
|
|
267
|
-
_iterator3.e(_context3.t1);
|
|
268
|
-
|
|
269
|
-
case 16:
|
|
270
|
-
_context3.prev = 16;
|
|
271
|
-
|
|
272
|
-
_iterator3.f();
|
|
273
|
-
|
|
274
|
-
return _context3.finish(16);
|
|
275
|
-
|
|
276
|
-
case 19:
|
|
277
|
-
error = cleanupAfterLayerTests(resources);
|
|
278
|
-
|
|
279
|
-
if (error) {
|
|
280
|
-
onError(error, "".concat(Layer.layerName, " should delete all resources"));
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
case 21:
|
|
284
|
-
case "end":
|
|
285
|
-
return _context3.stop();
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}, _callee2, null, [[4, 13, 16, 19]]);
|
|
289
|
-
}));
|
|
290
|
-
return _testLayerAsync.apply(this, arguments);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
function setupLayerTests(testTitle, _ref2) {
|
|
294
|
-
var _ref2$viewport = _ref2.viewport,
|
|
295
|
-
viewport = _ref2$viewport === void 0 ? testViewport : _ref2$viewport,
|
|
296
|
-
_ref2$timeline = _ref2.timeline,
|
|
297
|
-
timeline = _ref2$timeline === void 0 ? null : _ref2$timeline,
|
|
298
|
-
_ref2$onError = _ref2.onError,
|
|
299
|
-
_onError2 = _ref2$onError === void 0 ? defaultOnError : _ref2$onError;
|
|
300
|
-
|
|
301
|
-
var oldResourceCounts = getResourceCounts();
|
|
302
|
-
var layerManager = new _core.LayerManager(_setupGl.device, {
|
|
303
|
-
viewport: viewport,
|
|
304
|
-
timeline: timeline
|
|
305
|
-
});
|
|
306
|
-
var deckRenderer = new _core.DeckRenderer(_setupGl.device);
|
|
307
|
-
layerManager.context.animationProps = {
|
|
308
|
-
time: 0
|
|
309
|
-
};
|
|
310
|
-
var props = {
|
|
311
|
-
onError: function onError(error) {
|
|
312
|
-
return _onError2(error, testTitle);
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
layerManager.setProps(props);
|
|
316
|
-
deckRenderer.setProps(props);
|
|
317
|
-
return {
|
|
318
|
-
layerManager: layerManager,
|
|
319
|
-
deckRenderer: deckRenderer,
|
|
320
|
-
oldResourceCounts: oldResourceCounts
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
function cleanupAfterLayerTests(_ref3) {
|
|
325
|
-
var layerManager = _ref3.layerManager,
|
|
326
|
-
deckRenderer = _ref3.deckRenderer,
|
|
327
|
-
oldResourceCounts = _ref3.oldResourceCounts;
|
|
328
|
-
layerManager.setLayers([]);
|
|
329
|
-
layerManager.finalize();
|
|
330
|
-
deckRenderer.finalize();
|
|
331
|
-
var resourceCounts = getResourceCounts();
|
|
332
|
-
|
|
333
|
-
for (var resourceName in resourceCounts) {
|
|
334
|
-
if (resourceCounts[resourceName] !== oldResourceCounts[resourceName]) {
|
|
335
|
-
return new Error("".concat(resourceCounts[resourceName] - oldResourceCounts[resourceName], " ").concat(resourceName, "s"));
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
return null;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
function getResourceCounts() {
|
|
343
|
-
var resourceStats = luma.stats.get('Resource Counts');
|
|
344
|
-
return {
|
|
345
|
-
Texture2D: resourceStats.get('Texture2Ds Active').count,
|
|
346
|
-
Buffer: resourceStats.get('Buffers Active').count
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
function injectSpies(layer, spies) {
|
|
351
|
-
var spyMap = {};
|
|
352
|
-
|
|
353
|
-
if (spies) {
|
|
354
|
-
var _iterator2 = _createForOfIteratorHelper(spies),
|
|
355
|
-
_step2;
|
|
356
|
-
|
|
357
|
-
try {
|
|
358
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
359
|
-
var functionName = _step2.value;
|
|
360
|
-
spyMap[functionName] = (0, _testUtils.makeSpy)(Object.getPrototypeOf(layer), functionName);
|
|
361
|
-
}
|
|
362
|
-
} catch (err) {
|
|
363
|
-
_iterator2.e(err);
|
|
364
|
-
} finally {
|
|
365
|
-
_iterator2.f();
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
return spyMap;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
function runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap) {
|
|
373
|
-
if (testCase.onAfterUpdate) {
|
|
374
|
-
var subLayers = newLayer.isComposite ? newLayer.getSubLayers() : [];
|
|
375
|
-
var subLayer = subLayers.length && subLayers[0];
|
|
376
|
-
testCase.onAfterUpdate({
|
|
377
|
-
testCase: testCase,
|
|
378
|
-
layer: newLayer,
|
|
379
|
-
oldState: oldState,
|
|
380
|
-
subLayers: subLayers,
|
|
381
|
-
subLayer: subLayer,
|
|
382
|
-
spies: spyMap
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
function runLayerTestUpdate(testCase, _ref4, layer, spies) {
|
|
388
|
-
var layerManager = _ref4.layerManager,
|
|
389
|
-
deckRenderer = _ref4.deckRenderer;
|
|
390
|
-
var props = testCase.props,
|
|
391
|
-
updateProps = testCase.updateProps,
|
|
392
|
-
onBeforeUpdate = testCase.onBeforeUpdate,
|
|
393
|
-
_testCase$viewport = testCase.viewport,
|
|
394
|
-
viewport = _testCase$viewport === void 0 ? layerManager.context.viewport : _testCase$viewport;
|
|
395
|
-
|
|
396
|
-
if (onBeforeUpdate) {
|
|
397
|
-
onBeforeUpdate({
|
|
398
|
-
layer: layer,
|
|
399
|
-
testCase: testCase
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
if (props) {
|
|
404
|
-
layer = new layer.constructor(props);
|
|
405
|
-
} else if (updateProps) {
|
|
406
|
-
layer = layer.clone(updateProps);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
spies = testCase.spies || spies;
|
|
410
|
-
var spyMap = injectSpies(layer, spies);
|
|
411
|
-
|
|
412
|
-
var drawLayers = function drawLayers() {
|
|
413
|
-
deckRenderer.renderLayers({
|
|
414
|
-
viewports: [viewport],
|
|
415
|
-
layers: layerManager.getLayers(),
|
|
416
|
-
onViewportActive: layerManager.activateViewport
|
|
417
|
-
});
|
|
418
|
-
};
|
|
419
|
-
|
|
420
|
-
layerManager.setLayers([layer]);
|
|
421
|
-
drawLayers();
|
|
422
|
-
|
|
423
|
-
if (layerManager.needsUpdate()) {
|
|
424
|
-
layerManager.updateLayers();
|
|
425
|
-
drawLayers();
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
return {
|
|
429
|
-
layer: layer,
|
|
430
|
-
spyMap: spyMap
|
|
431
|
-
};
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
function update(_ref5) {
|
|
435
|
-
var layerManager = _ref5.layerManager,
|
|
436
|
-
deckRenderer = _ref5.deckRenderer;
|
|
437
|
-
return new Promise(function (resolve) {
|
|
438
|
-
var onAnimationFrame = function onAnimationFrame() {
|
|
439
|
-
if (layerManager.needsUpdate()) {
|
|
440
|
-
layerManager.updateLayers();
|
|
441
|
-
deckRenderer.renderLayers({
|
|
442
|
-
viewports: [layerManager.context.viewport],
|
|
443
|
-
layers: layerManager.getLayers(),
|
|
444
|
-
onViewportActive: layerManager.activateViewport
|
|
445
|
-
});
|
|
446
|
-
resolve();
|
|
447
|
-
return;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
setTimeout(onAnimationFrame, 50);
|
|
451
|
-
};
|
|
452
|
-
|
|
453
|
-
onAnimationFrame();
|
|
454
|
-
});
|
|
455
|
-
}
|
|
456
|
-
//# sourceMappingURL=lifecycle-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lifecycle-test.ts"],"names":["testViewport","MapView","makeViewport","width","height","viewState","longitude","latitude","zoom","defaultOnError","error","title","initializeLayerManager","layer","viewport","onError","layerManager","LayerManager","device","setProps","id","setLayers","testInitializeLayer","opts","finalize","testInitializeLayerAsync","deckRenderer","DeckRenderer","isLoaded","update","testLayer","Layer","testCases","spies","resources","setupLayerTests","layerName","testCase","oldState","state","runLayerTestUpdate","newLayer","spyMap","runLayerTestPostUpdateCheck","Object","keys","forEach","k","reset","cleanupAfterLayerTests","testLayerAsync","testTitle","timeline","oldResourceCounts","getResourceCounts","context","animationProps","time","props","resourceCounts","resourceName","Error","resourceStats","luma","stats","get","Texture2D","count","Buffer","injectSpies","functionName","getPrototypeOf","onAfterUpdate","subLayers","isComposite","getSubLayers","subLayer","length","updateProps","onBeforeUpdate","constructor","clone","drawLayers","renderLayers","viewports","layers","getLayers","onViewportActive","activateViewport","needsUpdate","updateLayers","Promise","resolve","onAnimationFrame","setTimeout"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {LayerManager, MapView, DeckRenderer} from '@deck.gl/core';\n\nimport {makeSpy} from '@probe.gl/test-utils';\nimport {device} from './utils/setup-gl';\n\nconst testViewport = new MapView().makeViewport({\n width: 100,\n height: 100,\n viewState: {longitude: 0, latitude: 0, zoom: 1}\n});\n\nfunction defaultOnError(error, title) {\n if (error) {\n throw error;\n }\n}\n\nfunction initializeLayerManager({layer, viewport = testViewport, onError = defaultOnError}) {\n const layerManager = new LayerManager(device, {viewport});\n layerManager.setProps({\n onError: error => onError(error, `initializing ${layer.id}`)\n });\n\n layerManager.setLayers([layer]);\n return layerManager;\n}\n\nexport function testInitializeLayer(opts) {\n const layerManager = initializeLayerManager(opts);\n if (opts.finalize === false) {\n return {\n finalize: () => layerManager.finalize()\n };\n }\n layerManager.finalize();\n return null;\n}\n\nexport async function testInitializeLayerAsync(opts) {\n const layerManager = initializeLayerManager(opts);\n const deckRenderer = new DeckRenderer(device);\n while (!opts.layer.isLoaded) {\n await update({layerManager, deckRenderer});\n }\n if (opts.finalize === false) {\n return {\n finalize: () => layerManager.finalize()\n };\n }\n layerManager.finalize();\n return null;\n}\n\nexport function testLayer(opts) {\n const {Layer, testCases = [], spies = [], onError = defaultOnError} = opts;\n\n const resources = setupLayerTests(`testing ${Layer.layerName}`, opts);\n\n let layer = new Layer();\n // Run successive update tests\n for (const testCase of testCases) {\n // Save old state before update\n const oldState = {...layer.state};\n\n const {layer: newLayer, spyMap} = runLayerTestUpdate(testCase, resources, layer, spies);\n\n runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);\n\n // Remove spies\n Object.keys(spyMap).forEach(k => spyMap[k].reset());\n layer = newLayer;\n }\n\n const error = cleanupAfterLayerTests(resources);\n if (error) {\n onError(error, `${Layer.layerName} should delete all resources`);\n }\n}\n\nexport async function testLayerAsync(opts) {\n const {Layer, testCases = [], spies = [], onError = defaultOnError} = opts;\n\n const resources = setupLayerTests(`testing ${Layer.layerName}`, opts);\n\n let layer = new Layer();\n // Run successive update tests\n for (const testCase of testCases) {\n // Save old state before update\n const oldState = {...layer.state};\n\n const {layer: newLayer, spyMap} = runLayerTestUpdate(testCase, resources, layer, spies);\n\n runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);\n\n while (!newLayer.isLoaded) {\n await update(resources);\n runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap);\n }\n\n // Remove spies\n Object.keys(spyMap).forEach(k => spyMap[k].reset());\n layer = newLayer;\n }\n\n const error = cleanupAfterLayerTests(resources);\n if (error) {\n onError(error, `${Layer.layerName} should delete all resources`);\n }\n}\n\nfunction setupLayerTests(\n testTitle,\n {viewport = testViewport, timeline = null, onError = defaultOnError}\n) {\n const oldResourceCounts = getResourceCounts();\n\n const layerManager = new LayerManager(device, {viewport, timeline});\n const deckRenderer = new DeckRenderer(device);\n\n layerManager.context.animationProps = {\n time: 0\n };\n\n const props = {\n onError: error => onError(error, testTitle)\n };\n layerManager.setProps(props);\n deckRenderer.setProps(props);\n\n return {layerManager, deckRenderer, oldResourceCounts};\n}\n\nfunction cleanupAfterLayerTests({layerManager, deckRenderer, oldResourceCounts}) {\n layerManager.setLayers([]);\n layerManager.finalize();\n deckRenderer.finalize();\n\n const resourceCounts = getResourceCounts();\n\n for (const resourceName in resourceCounts) {\n if (resourceCounts[resourceName] !== oldResourceCounts[resourceName]) {\n return new Error(\n `${resourceCounts[resourceName] - oldResourceCounts[resourceName]} ${resourceName}s`\n );\n }\n }\n return null;\n}\n\nfunction getResourceCounts() {\n /* global luma */\n const resourceStats = luma.stats.get('Resource Counts');\n return {\n Texture2D: resourceStats.get('Texture2Ds Active').count,\n Buffer: resourceStats.get('Buffers Active').count\n };\n}\n\nfunction injectSpies(layer, spies) {\n const spyMap = {};\n if (spies) {\n for (const functionName of spies) {\n spyMap[functionName] = makeSpy(Object.getPrototypeOf(layer), functionName);\n }\n }\n return spyMap;\n}\n\nfunction runLayerTestPostUpdateCheck(testCase, newLayer, oldState, spyMap) {\n // assert on updated layer\n if (testCase.onAfterUpdate) {\n // layer manager should handle match subLayer and tranfer state and props\n // here we assume subLayer matches copy over the new props from a new subLayer\n const subLayers = newLayer.isComposite ? newLayer.getSubLayers() : [];\n const subLayer = subLayers.length && subLayers[0];\n\n testCase.onAfterUpdate({\n testCase,\n layer: newLayer,\n oldState,\n subLayers,\n subLayer,\n spies: spyMap\n });\n }\n}\n\nfunction runLayerTestUpdate(testCase, {layerManager, deckRenderer}, layer, spies) {\n const {props, updateProps, onBeforeUpdate, viewport = layerManager.context.viewport} = testCase;\n\n if (onBeforeUpdate) {\n onBeforeUpdate({layer, testCase});\n }\n\n if (props) {\n // Test case can reset the props on every iteration\n layer = new layer.constructor(props);\n } else if (updateProps) {\n // Test case can override with new props on every iteration\n layer = layer.clone(updateProps);\n }\n\n // Create a map of spies that the test case can inspect\n spies = testCase.spies || spies;\n const spyMap = injectSpies(layer, spies);\n const drawLayers = () => {\n deckRenderer.renderLayers({\n viewports: [viewport],\n layers: layerManager.getLayers(),\n onViewportActive: layerManager.activateViewport\n });\n };\n\n layerManager.setLayers([layer]);\n drawLayers();\n\n // clear update flags set by viewport change, if any\n if (layerManager.needsUpdate()) {\n layerManager.updateLayers();\n drawLayers();\n }\n\n return {layer, spyMap};\n}\n\n/* global setTimeout */\nfunction update({layerManager, deckRenderer}) {\n return new Promise(resolve => {\n const onAnimationFrame = () => {\n if (layerManager.needsUpdate()) {\n layerManager.updateLayers();\n\n deckRenderer.renderLayers({\n viewports: [layerManager.context.viewport],\n layers: layerManager.getLayers(),\n onViewportActive: layerManager.activateViewport\n });\n resolve();\n return;\n }\n\n setTimeout(onAnimationFrame, 50);\n };\n\n onAnimationFrame();\n });\n}\n"],"file":"lifecycle-test.js"}
|