From 48b975010bd687b8e57145d863d78070aaa2861f Mon Sep 17 00:00:00 2001 From: ftoromanoff Date: Tue, 21 Mar 2023 13:35:21 +0100 Subject: [PATCH] refactor(test): handling fail messages in test with promise --- test/unit/3dtileslayerprocess.js | 9 +- test/unit/3dtileslayerprocessbatchtable.js | 13 ++- test/unit/{CameraUtils.js => cameraUtils.js} | 94 ++++++++------- test/unit/dataSourceProvider.js | 117 ++++++++++--------- test/unit/demutils.js | 18 +-- test/unit/entwine.js | 28 +++-- test/unit/feature2mesh.js | 18 ++- test/unit/featureUtils.js | 41 +++++-- test/unit/featuregeometrylayer.js | 89 +++++++------- test/unit/featuregeometrylayererror.js | 93 ++++++++------- test/unit/geoidlayer.js | 21 ++-- test/unit/geojson.js | 110 ++++++++++------- test/unit/globecontrol.js | 80 +++++++------ test/unit/globeview.js | 24 ++-- test/unit/obb.js | 42 ++++--- test/unit/orientedimagelayer.js | 22 ++-- test/unit/pnts_parser.js | 23 ++-- test/unit/potree.js | 45 +++---- test/unit/potreeBinParser.js | 72 ++++++------ test/unit/potreelayerparsing.js | 41 ++++--- test/unit/scheduler.js | 24 ++-- test/unit/source.js | 50 ++++---- 22 files changed, 604 insertions(+), 470 deletions(-) rename test/unit/{CameraUtils.js => cameraUtils.js} (67%) diff --git a/test/unit/3dtileslayerprocess.js b/test/unit/3dtileslayerprocess.js index 5c6a274129..cd4fc0eb72 100644 --- a/test/unit/3dtileslayerprocess.js +++ b/test/unit/3dtileslayerprocess.js @@ -31,10 +31,11 @@ describe('3Dtiles layer', function () { }; it('Add 3dtiles layer', function (done) { - View.prototype.addLayer.call(viewer, threedTilesLayer).then((layer) => { - assert.equal(layer.root.children.length, 1); - done(); - }); + View.prototype.addLayer.call(viewer, threedTilesLayer) + .then((layer) => { + assert.equal(layer.root.children.length, 1); + done(); + }, done); }); it('preUpdate 3dtiles layer', function () { const elements = threedTilesLayer.preUpdate(context, new Set([threedTilesLayer])); diff --git a/test/unit/3dtileslayerprocessbatchtable.js b/test/unit/3dtileslayerprocessbatchtable.js index b8ff746897..827966d3b5 100644 --- a/test/unit/3dtileslayerprocessbatchtable.js +++ b/test/unit/3dtileslayerprocessbatchtable.js @@ -38,11 +38,12 @@ describe('3Dtiles batch table', function () { }, viewer); it('Add 3dtiles layer with batch table', function (done) { - View.prototype.addLayer.call(viewer, threedTilesLayerBTHierarchy).then((layer) => { - assert.equal(layer.root.children.length, 1); - const batchLength = viewer.getLayerById('3d-tiles-bt-hierarchy').root.batchTable.batchLength; - assert.equal(batchLength, 30); - done(); - }); + View.prototype.addLayer.call(viewer, threedTilesLayerBTHierarchy) + .then((layer) => { + assert.equal(layer.root.children.length, 1); + const batchLength = viewer.getLayerById('3d-tiles-bt-hierarchy').root.batchTable.batchLength; + assert.equal(batchLength, 30); + done(); + }, done); }); }); diff --git a/test/unit/CameraUtils.js b/test/unit/cameraUtils.js similarity index 67% rename from test/unit/CameraUtils.js rename to test/unit/cameraUtils.js index c5569bbe13..e46a3babf1 100644 --- a/test/unit/CameraUtils.js +++ b/test/unit/cameraUtils.js @@ -56,62 +56,76 @@ describe('Camera utils unit test', function () { const range = 25000000; const coord = new Coordinates('EPSG:4326', 2.35, 48.85, 0); - it('init like expected', function () { + it('init like expected', function (done) { const params = { range, coord }; - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.range, params.range, 1)); - assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); - assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.range, params.range, 1)); + assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); + assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); + done(); + }, done); }); - it('should set range like expected', function () { + it('should set range like expected', function (done) { const params = { range: 10000 }; - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - const range = result.range; - assert.ok(equalToFixed(range, params.range, 1)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + const range = result.range; + assert.ok(equalToFixed(range, params.range, 1)); + done(); + }, done); }); - it('should look at coordinate like expected', function () { + it('should look at coordinate like expected', function (done) { const params = { coord: coord.clone() }; params.coord.setFromValues(params.coord.longitude + 1, params.coord.latitude + 1, 0); - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); - assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); + assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); + done(); + }, done); }); - it('should tilt like expected', function () { + it('should tilt like expected', function (done) { const params = { tilt: 38 }; - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.tilt, params.tilt, 4)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.tilt, params.tilt, 4)); + done(); + }, done); }); - it('should heading like expected', function () { + it('should heading like expected', function (done) { const params = { heading: 147 }; - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.heading, params.heading, 4)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.heading, params.heading, 4)); + done(); + }, done); }); - it('should heading, tilt, range and coordinate like expected', function () { + it('should heading, tilt, range and coordinate like expected', function (done) { const params = { heading: 17, tilt: 80, range: 20000, coord: coord.clone() }; params.coord.setFromValues(params.coord.longitude + 5, params.coord.latitude + 5, 0); - CameraUtils.transformCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.heading, params.heading, 4)); - assert.ok(equalToFixed(result.tilt, params.tilt, 4)); - assert.ok(equalToFixed(result.range, params.range, 1)); - assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); - assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); - }); + CameraUtils.transformCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.heading, params.heading, 4)); + assert.ok(equalToFixed(result.tilt, params.tilt, 4)); + assert.ok(equalToFixed(result.range, params.range, 1)); + assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); + assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); + done(); + }, done); }); - it('should heading, tilt, range and coordinate like expected with animation (200ms)', function () { + it('should heading, tilt, range and coordinate like expected with animation (200ms)', function (done) { const params = { heading: 17, tilt: 80, range: 20000, coord: coord.clone(), time: 200 }; params.coord.setFromValues(params.coord.longitude + 3, params.coord.latitude + 4, 0); - CameraUtils.animateCameraToLookAtTarget(view, camera, params).then((result) => { - assert.ok(equalToFixed(result.heading, params.heading, 4)); - assert.ok(equalToFixed(result.tilt, params.tilt, 4)); - assert.ok(equalToFixed(result.range, params.range, 1)); - assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); - assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); - }); + CameraUtils.animateCameraToLookAtTarget(view, camera, params) + .then((result) => { + assert.ok(equalToFixed(result.heading, params.heading, 4)); + assert.ok(equalToFixed(result.tilt, params.tilt, 4)); + assert.ok(equalToFixed(result.range, params.range, 1)); + assert.ok(equalToFixed(result.coord.longitude, params.coord.longitude, 4)); + assert.ok(equalToFixed(result.coord.latitude, params.coord.latitude, 4)); + done(); + }, done); }); it('should transform camera from given extent', function () { diff --git a/test/unit/dataSourceProvider.js b/test/unit/dataSourceProvider.js index c69937e649..dea6599b48 100644 --- a/test/unit/dataSourceProvider.js +++ b/test/unit/dataSourceProvider.js @@ -108,7 +108,7 @@ describe('Provide in Sources', function () { context.scheduler.commands = []; }); - it('should get wmts texture with DataSourceProvider', () => { + it('should get wmts texture with DataSourceProvider', (done) => { colorlayer.source = new WMTSSource({ url: 'http://', name: 'name', @@ -131,11 +131,13 @@ describe('Provide in Sources', function () { updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((textures) => { - assert.equal(textures[0].extent.zoom, zoom); - assert.equal(textures[0].extent.row, 511); - assert.equal(textures[0].extent.col, 512); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((textures) => { + assert.equal(textures[0].extent.zoom, zoom); + assert.equal(textures[0].extent.row, 511); + assert.equal(textures[0].extent.col, 512); + done(); + }, done); }); it('should get wmts texture elevation with DataSourceProvider', (done) => { @@ -159,12 +161,13 @@ describe('Provide in Sources', function () { updateLayeredMaterialNodeElevation(context, elevationlayer, tile, tile.parent); updateLayeredMaterialNodeElevation(context, elevationlayer, tile, tile.parent); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((textures) => { - assert.equal(textures[0].extent.zoom, zoom); - assert.equal(textures[0].extent.row, 511); - assert.equal(textures[0].extent.col, 512); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((textures) => { + assert.equal(textures[0].extent.zoom, zoom); + assert.equal(textures[0].extent.row, 511); + assert.equal(textures[0].extent.col, 512); + done(); + }, done); }); it('should get wms texture with DataSourceProvider', (done) => { colorlayer.source = new WMSSource({ @@ -188,15 +191,16 @@ describe('Provide in Sources', function () { updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((textures) => { - const e = textures[0].extent.as(tile.extent.crs); - assert.equal(e.zoom, zoom); - assert.equal(e.west, tile.extent.west); - assert.equal(e.east, tile.extent.east); - assert.equal(e.north, tile.extent.north); - assert.equal(e.south, tile.extent.south); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((textures) => { + const e = textures[0].extent.as(tile.extent.crs); + assert.equal(e.zoom, zoom); + assert.equal(e.west, tile.extent.west); + assert.equal(e.east, tile.extent.east); + assert.equal(e.north, tile.extent.north); + assert.equal(e.south, tile.extent.south); + done(); + }, done); }); it('should get 4 TileMesh from TileProvider', (done) => { const tile = new TileMesh(geom, material, planarlayer, extent, zoom); @@ -205,14 +209,15 @@ describe('Provide in Sources', function () { tile.parent = { }; planarlayer.subdivideNode(context, tile); - TileProvider.executeCommand(context.scheduler.commands[0]).then((tiles) => { - assert.equal(tiles.length, 4); - assert.equal(tiles[0].extent.west, tile.extent.east * 0.5); - assert.equal(tiles[0].extent.east, tile.extent.east); - assert.equal(tiles[0].extent.north, tile.extent.north); - assert.equal(tiles[0].extent.south, tile.extent.north * 0.5); - done(); - }); + TileProvider.executeCommand(context.scheduler.commands[0]) + .then((tiles) => { + assert.equal(tiles.length, 4); + assert.equal(tiles[0].extent.west, tile.extent.east * 0.5); + assert.equal(tiles[0].extent.east, tile.extent.east); + assert.equal(tiles[0].extent.north, tile.extent.north); + assert.equal(tiles[0].extent.south, tile.extent.north * 0.5); + done(); + }, done); }); it('should get 3 meshs with WFS source and DataSourceProvider', (done) => { const tile = new TileMesh(geom, material, planarlayer, extent, featureLayer.zoom.min); @@ -225,10 +230,11 @@ describe('Provide in Sources', function () { featureLayer.source.onLayerAdded({ out: featureLayer }); featureLayer.update(context, featureLayer, tile); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((features) => { - assert.equal(features[0].meshes.children.length, 4); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((features) => { + assert.equal(features[0].meshes.children.length, 4); + done(); + }, done); }); it('should get 1 mesh with WFS source and DataSourceProvider and mergeFeatures == true', (done) => { @@ -246,14 +252,15 @@ describe('Provide in Sources', function () { featureLayer.source._featuresCaches = {}; featureLayer.source.onLayerAdded({ out: featureLayer }); featureLayer.update(context, featureLayer, tile); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((features) => { - assert.ok(features[0].meshes.children[0].isMesh); - assert.ok(features[0].meshes.children[1].isPoints); - assert.equal(features[0].meshes.children[0].children.length, 0); - assert.equal(features[0].meshes.children[1].children.length, 0); - assert.equal(featureCountByCb, 2); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((features) => { + assert.ok(features[0].meshes.children[0].isMesh); + assert.ok(features[0].meshes.children[1].isPoints); + assert.equal(features[0].meshes.children[0].children.length, 0); + assert.equal(features[0].meshes.children[1].children.length, 0); + assert.equal(featureCountByCb, 2); + done(); + }, done); }); it('should get 1 texture with WFS source and DataSourceProvider', (done) => { const tile = new TileMesh( @@ -287,11 +294,12 @@ describe('Provide in Sources', function () { colorlayerWfs.source.onLayerAdded({ out: colorlayerWfs }); updateLayeredMaterialNodeImagery(context, colorlayerWfs, tile, tile.parent); updateLayeredMaterialNodeImagery(context, colorlayerWfs, tile, tile.parent); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((textures) => { - assert.equal(textures.length, 1); - assert.ok(textures[0].isTexture); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((textures) => { + assert.equal(textures.length, 1); + assert.ok(textures[0].isTexture); + done(); + }, done); }); it('should get updated RasterLayer', (done) => { @@ -315,13 +323,14 @@ describe('Provide in Sources', function () { updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); updateLayeredMaterialNodeImagery(context, colorlayer, tile, tile.parent); - DataSourceProvider.executeCommand(context.scheduler.commands[0]).then((result) => { - tile.material.setSequence([colorlayer.id]); - tile.material.getLayer(colorlayer.id).setTextures(result, [new THREE.Vector4()]); - assert.equal(tile.material.uniforms.colorTextures.value[0].extent, undefined); - tile.material.updateLayersUniforms(); - assert.equal(tile.material.uniforms.colorTextures.value[0].extent.zoom, 10); - done(); - }); + DataSourceProvider.executeCommand(context.scheduler.commands[0]) + .then((result) => { + tile.material.setSequence([colorlayer.id]); + tile.material.getLayer(colorlayer.id).setTextures(result, [new THREE.Vector4()]); + assert.equal(tile.material.uniforms.colorTextures.value[0].extent, undefined); + tile.material.updateLayersUniforms(); + assert.equal(tile.material.uniforms.colorTextures.value[0].extent.zoom, 10); + done(); + }, done); }); }); diff --git a/test/unit/demutils.js b/test/unit/demutils.js index 90c490cbbd..78f08b5ac0 100644 --- a/test/unit/demutils.js +++ b/test/unit/demutils.js @@ -47,10 +47,11 @@ describe('DemUtils', function () { }; it('add elevation layer', (done) => { - viewer.addLayer(elevationlayer).then((l) => { - assert.equal('worldelevation', l.id); - done(); - }); + viewer.addLayer(elevationlayer) + .then((l) => { + assert.equal('worldelevation', l.id); + done(); + }, done); }); const tiles = []; const extent = new Extent('EPSG:4326', 5.625, 11.25, 45, 50.625); @@ -64,10 +65,11 @@ describe('DemUtils', function () { const tile = new TileMesh(geom, material, viewer.tileLayer, extent, 5); tile.layerUpdateState[elevationlayer.id] = new LayerUpdateState(); tiles.push(tile); - updateLayeredMaterialNodeElevation(context, elevationlayer, tile, {}).then(() => { - assert.equal(nodeLayer.textures[0].image.data[0], 357.3833923339844); - done(); - }); + updateLayeredMaterialNodeElevation(context, elevationlayer, tile, {}) + .then(() => { + assert.equal(nodeLayer.textures[0].image.data[0], 357.3833923339844); + done(); + }, done); }); it('get elevation value at with PRECISE_READ_Z', () => { diff --git a/test/unit/entwine.js b/test/unit/entwine.js index 31a5908527..1c483567a4 100644 --- a/test/unit/entwine.js +++ b/test/unit/entwine.js @@ -15,9 +15,10 @@ describe('Entwine Point Tile', function () { }); it('loads the EPT structure', (done) => { - source.whenReady.then(() => { - done(); - }); + source.whenReady + .then(() => { + done(); + }, done); }); describe('Layer', function () { @@ -41,9 +42,10 @@ describe('Entwine Point Tile', function () { view, }; - View.prototype.addLayer.call(view, layer).then(() => { - done(); - }); + View.prototype.addLayer.call(view, layer) + .then(() => { + done(); + }, done); }); it('pre updates and finds the root', () => { @@ -61,12 +63,14 @@ describe('Entwine Point Tile', function () { view.controls.lookAtCoordinate({ coord: source.center, range: 250, - }, false).then(() => { - layer.update(context, layer, layer.root); - layer.root.promise.then(() => { - done(); - }); - }); + }, false) + .then(() => { + layer.update(context, layer, layer.root); + layer.root.promise + .then(() => { + done(); + }); + }, done); }); it('post updates', function () { diff --git a/test/unit/feature2mesh.js b/test/unit/feature2mesh.js index 7e234210c9..d280964a17 100644 --- a/test/unit/feature2mesh.js +++ b/test/unit/feature2mesh.js @@ -30,7 +30,7 @@ describe('Feature2Mesh', function () { const parsed = GeoJsonParser.parse(geojson, { in: { crs: 'EPSG:3946' }, out: { crs: 'EPSG:3946', buildExtent: true, mergeFeatures: false, structure: '3d' } }); const parsed2 = GeoJsonParser.parse(geojson2, { in: { crs: 'EPSG:3946' }, out: { crs: 'EPSG:3946', buildExtent: true, mergeFeatures: false, structure: '3d' } }); - it('rect mesh area should match geometry extent', () => + it('rect mesh area should match geometry extent', function (done) { parsed.then((collection) => { const mesh = Feature2Mesh.convert()(collection).meshes; const extentSize = collection.extent.planarDimensions(); @@ -38,9 +38,11 @@ describe('Feature2Mesh', function () { assert.equal( extentSize.x * extentSize.y, computeAreaOfMesh(mesh.children[0])); - })); + done(); + }, done); + }); - it('square mesh area should match geometry extent minus holes', () => + it('square mesh area should match geometry extent minus holes', function (done) { parsed.then((collection) => { const mesh = Feature2Mesh.convert()(collection).meshes; @@ -51,13 +53,17 @@ describe('Feature2Mesh', function () { assert.equal( noHoleArea - holeArea, meshWithHoleArea); - })); + done(); + }, done); + }); - it('convert points, lines and mesh', () => + it('convert points, lines and mesh', function (done) { parsed2.then((collection) => { const mesh = Feature2Mesh.convert()(collection).meshes; assert.equal(mesh.children[0].type, 'Points'); assert.equal(mesh.children[1].type, 'Line'); assert.equal(mesh.children[2].type, 'Mesh'); - })); + done(); + }, done); + }); }); diff --git a/test/unit/featureUtils.js b/test/unit/featureUtils.js index 5789d76271..7f7053ca77 100644 --- a/test/unit/featureUtils.js +++ b/test/unit/featureUtils.js @@ -9,41 +9,58 @@ const geojson = require('../data/geojson/simple.geojson.json'); describe('FeaturesUtils', function () { const options = { out: { crs: 'EPSG:4326', buildExtent: true, mergeFeatures: false, structure: '3d' } }; const promise = GeoJsonParser.parse(geojson, options); - it('should correctly parse geojson', () => + it('should correctly parse geojson', function (done) { promise.then((collection) => { assert.equal(collection.features.length, 3); - })); - it('should correctly compute extent geojson', () => + done(); + }, done); + }); + + it('should correctly compute extent geojson', function (done) { promise.then((collection) => { const extent = collection.extent.clone().applyMatrix4(collection.matrix); assert.equal(extent.west, 0.30798339284956455); assert.equal(extent.east, 2.4722900334745646); assert.equal(extent.south, 42.91620643817353); assert.equal(extent.north, 43.72744458647463); - })); - it('should correctly filter point', () => + done(); + }, done); + }); + + it('should correctly filter point', function (done) { promise.then((collection) => { const coordinates = new Coordinates('EPSG:4326', 1.26, 42.9); const filter = FeaturesUtils.filterFeaturesUnderCoordinate(coordinates, collection, 0.1); assert.equal(filter.length, 1.0); assert.equal(filter[0].type == FEATURE_TYPES.POINT, 1.0); - })); - it('should correctly filter polygon', () => + done(); + }, done); + }); + + it('should correctly filter polygon', function (done) { promise.then((feature) => { const coordinates = new Coordinates('EPSG:4326', 0.62, 43.52); const filter = FeaturesUtils.filterFeaturesUnderCoordinate(coordinates, feature, 0.1); assert.equal(filter.length, 1.0); assert.equal(filter[0].type == FEATURE_TYPES.POLYGON, 1.0); - })); - it('should correctly filter line', () => + done(); + }, done); + }); + + it('should correctly filter line', function (done) { promise.then((feature) => { const coordinates = new Coordinates('EPSG:4326', 2.23, 43.39); const filter = FeaturesUtils.filterFeaturesUnderCoordinate(coordinates, feature, 0.1); assert.equal(filter.length, 1.0); assert.equal(filter[0].type == FEATURE_TYPES.LINE, 1.0); - })); - it('should remember individual feature properties', () => + done(); + }, done); + }); + + it('should remember individual feature properties', function (done) { promise.then((collection) => { assert.equal(collection.features[2].geometries[0].properties.my_prop, 14); - })); + done(); + }, done); + }); }); diff --git a/test/unit/featuregeometrylayer.js b/test/unit/featuregeometrylayer.js index f365b3b1f8..67fd7d94bc 100644 --- a/test/unit/featuregeometrylayer.js +++ b/test/unit/featuregeometrylayer.js @@ -70,61 +70,66 @@ describe('Layer with Feature process', function () { tile.parent = {}; it('add layer', function (done) { - viewer.addLayer(ariege).then((layer) => { - assert.ok(layer); - done(); - }); + viewer.addLayer(ariege) + .then((layer) => { + assert.ok(layer); + done(); + }, done); }); it('update', function (done) { - ariege.whenReady.then(() => { - tile.visible = true; - ariege.update(context, ariege, tile) - .then(() => { - assert.equal(ariege.object3d.children.length, 1); - done(); - }); - }); + ariege.whenReady + .then(() => { + tile.visible = true; + ariege.update(context, ariege, tile) + .then(() => { + assert.equal(ariege.object3d.children.length, 1); + done(); + }); + }, done); }); it('add layer no proj4', function (done) { - viewer.addLayer(ariegeNoProj4).then((layer) => { - assert.ok(layer); - done(); - }); + viewer.addLayer(ariegeNoProj4) + .then((layer) => { + assert.ok(layer); + done(); + }, done); }); it('update no proj4', function (done) { - ariegeNoProj4.whenReady.then(() => { - tile.visible = true; - context.layer = ariegeNoProj4; - ariegeNoProj4.update(context, ariegeNoProj4, tile) - .then(() => { - assert.equal(ariegeNoProj4.object3d.children.length, 1); - done(); - }); - }); + ariegeNoProj4.whenReady + .then(() => { + tile.visible = true; + context.layer = ariegeNoProj4; + ariegeNoProj4.update(context, ariegeNoProj4, tile) + .then(() => { + assert.equal(ariegeNoProj4.object3d.children.length, 1); + done(); + }); + }, done); }); it('parsing error without proj4 should be inferior to 1e-5 meter', function (done) { - Promise.all([ariegeNoProj4.whenReady, ariege.whenReady]).then(() => { - const meshNoProj4 = ariegeNoProj4.object3d.children[0].meshes.children[0]; - const mesh = ariege.object3d.children[0].meshes.children[0]; - const array = mesh.geometry.attributes.position.array; - const arrayNoProj4 = meshNoProj4.geometry.attributes.position.array; - const vMeshNoProj4 = new THREE.Vector3(); - const v = new THREE.Vector3(); - let error = 0; - for (var i = array.length / 3 - 1; i >= 0; i--) { - vMeshNoProj4.fromArray(arrayNoProj4).applyMatrix4(meshNoProj4.matrixWorld); - v.fromArray(array).applyMatrix4(mesh.matrixWorld); - error += v.distanceTo(vMeshNoProj4); - } + Promise.all([ariegeNoProj4.whenReady, ariege.whenReady]) + .then(() => { + const meshNoProj4 = ariegeNoProj4.object3d.children[0].meshes.children[0]; + const mesh = ariege.object3d.children[0].meshes.children[0]; + const array = mesh.geometry.attributes.position.array; + const arrayNoProj4 = meshNoProj4.geometry.attributes.position.array; + const vMeshNoProj4 = new THREE.Vector3(); + const v = new THREE.Vector3(); + let error = 0; + for (var i = array.length / 3 - 1; i >= 0; i--) { + vMeshNoProj4.fromArray(arrayNoProj4).applyMatrix4(meshNoProj4.matrixWorld); + v.fromArray(array).applyMatrix4(mesh.matrixWorld); + error += v.distanceTo(vMeshNoProj4); + } - error /= (array.length / 3); + error /= (array.length / 3); - assert.ok(error < 1e-5); - done(); - }); + assert.ok(error < 1e-5); + done(); + }, done); }); }); diff --git a/test/unit/featuregeometrylayererror.js b/test/unit/featuregeometrylayererror.js index 9339e5b82c..172b012be1 100644 --- a/test/unit/featuregeometrylayererror.js +++ b/test/unit/featuregeometrylayererror.js @@ -65,57 +65,60 @@ files.forEach((geojson, i) => { viewer.addLayer(layerNoProj4); it('update proj4', function (done) { - layerProj4.whenReady.then(() => { - tile.visible = true; - layerProj4.update(context, layerProj4, tile) - .then(() => { - assert.equal(layerProj4.object3d.children.length, 1); - done(); - }); - }); + layerProj4.whenReady + .then(() => { + tile.visible = true; + layerProj4.update(context, layerProj4, tile) + .then(() => { + assert.equal(layerProj4.object3d.children.length, 1); + done(); + }, done); + }, done); }); it('update without proj4', function (done) { - layerNoProj4.whenReady.then(() => { - tile.visible = true; - context.layer = layerNoProj4; - layerNoProj4.update(context, layerNoProj4, tile) - .then(() => { - assert.equal(layerNoProj4.object3d.children.length, 1); - done(); - }); - }); + layerNoProj4.whenReady + .then(() => { + tile.visible = true; + context.layer = layerNoProj4; + layerNoProj4.update(context, layerNoProj4, tile) + .then(() => { + assert.equal(layerNoProj4.object3d.children.length, 1); + done(); + }, done); + }, done); }); it(`parsing error without proj4 should be inferior to ${max_error} meter`, function (done) { - Promise.all([layerNoProj4.whenReady, layerProj4.whenReady]).then(() => { - const meshNoProj4 = layerNoProj4.object3d.children[0].meshes.children[0]; - const mesh = layerProj4.object3d.children[0].meshes.children[0]; - const array = mesh.geometry.attributes.position.array; - const arrayNoProj4 = meshNoProj4.geometry.attributes.position.array; - const vectorNoProj4 = new THREE.Vector3(); - const vectorProj4 = new THREE.Vector3(); - let error = 0; - - for (var i = array.length - 3; i >= 0; i -= 3) { - // transform proj4 vertex to final projection - vectorProj4.fromArray(array, i); - vectorProj4.applyMatrix4(mesh.matrixWorld); - - // transform proj4 vertex to final projection - vectorNoProj4.fromArray(arrayNoProj4, i); - vectorNoProj4.applyMatrix4(meshNoProj4.matrixWorld); - - // compute diff between proj4 vertex and no proj4 vertex - const distance = vectorProj4.distanceTo(vectorNoProj4); - error += distance; - } - - error /= (array.length / 3); - - assert.ok(error < max_error); - done(); - }); + Promise.all([layerNoProj4.whenReady, layerProj4.whenReady]) + .then(() => { + const meshNoProj4 = layerNoProj4.object3d.children[0].meshes.children[0]; + const mesh = layerProj4.object3d.children[0].meshes.children[0]; + const array = mesh.geometry.attributes.position.array; + const arrayNoProj4 = meshNoProj4.geometry.attributes.position.array; + const vectorNoProj4 = new THREE.Vector3(); + const vectorProj4 = new THREE.Vector3(); + let error = 0; + + for (var i = array.length - 3; i >= 0; i -= 3) { + // transform proj4 vertex to final projection + vectorProj4.fromArray(array, i); + vectorProj4.applyMatrix4(mesh.matrixWorld); + + // transform proj4 vertex to final projection + vectorNoProj4.fromArray(arrayNoProj4, i); + vectorNoProj4.applyMatrix4(meshNoProj4.matrixWorld); + + // compute diff between proj4 vertex and no proj4 vertex + const distance = vectorProj4.distanceTo(vectorNoProj4); + error += distance; + } + + error /= (array.length / 3); + + assert.ok(error < max_error); + done(); + }, done); }); }); }); diff --git a/test/unit/geoidlayer.js b/test/unit/geoidlayer.js index d406e03a5c..c136d4c52f 100644 --- a/test/unit/geoidlayer.js +++ b/test/unit/geoidlayer.js @@ -41,17 +41,20 @@ describe('GlobeView', function () { tile.parent = {}; it('add geoid layer', function (done) { - view.addLayer(geoidLayer).then(() => { - done(); - }); + view.addLayer(geoidLayer) + .then(() => { + done(); + }, done); }); it('update geoid layer', function (done) { - geoidLayer.whenReady.then(() => { - geoidLayer.update(context, geoidLayer, tile, {}).then(() => { - assert.equal(tile.geoidHeight, 45.72800064087844); - done(); - }); - }); + geoidLayer.whenReady + .then(() => { + geoidLayer.update(context, geoidLayer, tile, {}) + .then(() => { + assert.equal(tile.geoidHeight, 45.72800064087844); + done(); + }); + }, done); }); }); diff --git a/test/unit/geojson.js b/test/unit/geojson.js index 4a95141073..fcf2f0ca9f 100644 --- a/test/unit/geojson.js +++ b/test/unit/geojson.js @@ -15,27 +15,39 @@ function parse(geojson) { } describe('GeoJsonParser', function () { - it('should set all z coordinates to 0', () => - parse(holes).then((collection) => { - assert.ok(collection.features[0].vertices.every((v, i) => ((i + 1) % 3) != 0 || (v + collection.position.z) == 0)); - })); + it('should set all z coordinates to 0', function (done) { + parse(holes) + .then((collection) => { + assert.ok(collection.features[0].vertices.every((v, i) => ((i + 1) % 3) != 0 || (v + collection.position.z) == 0)); + done(); + }, done); + }); - it('should respect all z coordinates', () => - parse(gpx).then((collection) => { - assert.ok(collection.features[0].vertices.every((v, i) => ((i + 1) % 3) != 0 || (v + collection.position.z) != 0)); - })); + it('should respect all z coordinates', function (done) { + parse(gpx) + .then((collection) => { + assert.ok(collection.features[0].vertices.every((v, i) => ((i + 1) % 3) != 0 || (v + collection.position.z) != 0)); + done(); + }, done); + }); - it('should detect if there is the raw elevation data', () => - parse(gpx).then((collection) => { - assert.ok(collection.features[0].hasRawElevationData); - })); + it('should detect if there is the raw elevation data', function (done) { + parse(gpx) + .then((collection) => { + assert.ok(collection.features[0].hasRawElevationData); + done(); + }, done); + }); - it('should detect if there is not the raw elevation data', () => - parse(holes).then((collection) => { - assert.ok(!collection.features[0].hasRawElevationData); - })); + it('should detect if there is not the raw elevation data', function (done) { + parse(holes) + .then((collection) => { + assert.ok(!collection.features[0].hasRawElevationData); + done(); + }, done); + }); - it('should return an empty collection', () => + it('should return an empty collection', function (done) { GeoJsonParser.parse(holes, { in: { crs: 'EPSG:3946', @@ -44,10 +56,14 @@ describe('GeoJsonParser', function () { crs: 'EPSG:3946', filteringExtent: new Extent('EPSG:3946', 10, 20, 10, 20), }, - }).then((collection) => { - assert.ok(collection.features.length == 0); - })); - it('should return an merged collection', () => + }) + .then((collection) => { + assert.ok(collection.features.length == 0); + done(); + }, done); + }); + + it('should return an merged collection', function (done) { GeoJsonParser.parse(holes, { in: { crs: 'EPSG:3946', @@ -56,10 +72,14 @@ describe('GeoJsonParser', function () { crs: 'EPSG:3946', mergeFeatures: true, }, - }).then((collection) => { - assert.ok(collection.features.length == 1); - })); - it('should return an no merged collection', () => + }) + .then((collection) => { + assert.ok(collection.features.length == 1); + done(); + }, done); + }); + + it('should return an no merged collection', function (done) { GeoJsonParser.parse(holes, { in: { crs: 'EPSG:3946', @@ -68,10 +88,14 @@ describe('GeoJsonParser', function () { crs: 'EPSG:3946', mergeFeatures: false, }, - }).then((collection) => { - assert.ok(collection.features.length == 3); - })); - it('should return an collection without altitude and normal', () => + }) + .then((collection) => { + assert.ok(collection.features.length == 3); + done(); + }, done); + }); + + it('should return an collection without altitude and normal', function (done) { GeoJsonParser.parse(holes, { in: { crs: 'EPSG:3946', @@ -80,12 +104,15 @@ describe('GeoJsonParser', function () { crs: 'EPSG:3946', structure: '2d', }, - }).then((collection) => { - assert.ok(collection.features[0].vertices.length == 32); - assert.ok(collection.features[0].normals == undefined); - })); + }) + .then((collection) => { + assert.ok(collection.features[0].vertices.length == 32); + assert.ok(collection.features[0].normals == undefined); + done(); + }, done); + }); - it('parses Point and MultiPoint', () => + it('parses Point and MultiPoint', function (done) { GeoJsonParser.parse(points, { in: { crs: 'EPSG:4326', @@ -94,10 +121,13 @@ describe('GeoJsonParser', function () { crs: 'EPSG:4326', mergeFeatures: false, }, - }).then((collection) => { - assert.equal(collection.features.length, 3); - assert.equal(collection.features[0].geometries.length, 1); - assert.equal(collection.features[1].geometries.length, 1); - assert.equal(collection.features[2].geometries.length, 5); - })); + }) + .then((collection) => { + assert.equal(collection.features.length, 3); + assert.equal(collection.features[0].geometries.length, 1); + assert.equal(collection.features[1].geometries.length, 1); + assert.equal(collection.features[2].geometries.length, 5); + done(); + }, done); + }); }); diff --git a/test/unit/globecontrol.js b/test/unit/globecontrol.js index 688b7167a0..74c4421d14 100644 --- a/test/unit/globecontrol.js +++ b/test/unit/globecontrol.js @@ -58,19 +58,21 @@ describe('GlobeControls', function () { const heading = 4; it('Set tilt', function (done) { - controls.setTilt(tilt, false).then((e) => { - assert.equal(e.tilt, tilt); - assert.equal((tilt / controls.getTilt()).toFixed(8), 1); - done(); - }); + controls.setTilt(tilt, false) + .then((e) => { + assert.equal(e.tilt, tilt); + assert.equal((tilt / controls.getTilt()).toFixed(8), 1); + done(); + }, done); }); it('Set heading', function (done) { - controls.setHeading(heading, false).then((e) => { - assert.equal(e.heading, heading); - assert.equal((heading / controls.getHeading()).toFixed(8), 1); - done(); - }); + controls.setHeading(heading, false) + .then((e) => { + assert.equal(e.heading, heading); + assert.equal((heading / controls.getHeading()).toFixed(8), 1); + done(); + }, done); }); it('getCameraOrientation', function () { @@ -91,26 +93,29 @@ describe('GlobeControls', function () { it('Set zoom', function (done) { const zoom = 10; - controls.setZoom(zoom, false).then(() => { - assert.equal(zoom, controls.getZoom()); - done(); - }); + controls.setZoom(zoom, false) + .then(() => { + assert.equal(zoom, controls.getZoom()); + done(); + }, done); }); it('Set range', function (done) { const range = 1000; - controls.setRange(range, false).then((e) => { - assert.equal((e.range / range).toFixed(8), 1); - done(); - }); + controls.setRange(range, false) + .then((e) => { + assert.equal((e.range / range).toFixed(8), 1); + done(); + }, done); }); it('Set scale', function (done) { const scale = 0.0002; - controls.setScale(scale, 0.28, false).then(() => { - assert.equal((viewer.getScale() / scale).toFixed(8), 1); - done(); - }); + controls.setScale(scale, 0.28, false) + .then(() => { + assert.equal((viewer.getScale() / scale).toFixed(8), 1); + done(); + }, done); }); it('update', function () { @@ -157,10 +162,11 @@ describe('GlobeControls', function () { viewCoords: viewer.eventToViewCoords(event), type: 'travel_in', direction: 'in', - }).then(() => { - assert.ok(controls.getRange() < startRange); - done(); - }); + }) + .then(() => { + assert.ok(controls.getRange() < startRange); + done(); + }, done); }); it('travel out', function (done) { @@ -169,10 +175,11 @@ describe('GlobeControls', function () { viewCoords: viewer.eventToViewCoords(event), type: 'travel_out', direction: 'out', - }).then(() => { - assert.ok(controls.getRange() > startRange); - done(); - }); + }) + .then(() => { + assert.ok(controls.getRange() > startRange); + done(); + }, done); }); it('touch start', function () { @@ -194,12 +201,13 @@ describe('GlobeControls', function () { it('lookAtCoordinate with animation', function (done) { const rig = getRig(viewer.camera.camera3D); let i; - controls.lookAtCoordinate({ coord: placement.coord, time: 10 }, true).then((e) => { - assert.equal((e.coord.longitude / placement.coord.longitude).toFixed(8), 1); - assert.equal((e.coord.latitude / placement.coord.latitude).toFixed(8), 1); - clearInterval(i); - done(); - }); + controls.lookAtCoordinate({ coord: placement.coord, time: 10 }, true) + .then((e) => { + assert.equal((e.coord.longitude / placement.coord.longitude).toFixed(8), 1); + assert.equal((e.coord.latitude / placement.coord.latitude).toFixed(8), 1); + clearInterval(i); + done(); + }, done); if (rig.animationFrameRequester) { i = setInterval(rig.animationFrameRequester, 10); diff --git a/test/unit/globeview.js b/test/unit/globeview.js index 062293fb22..6c16ace173 100644 --- a/test/unit/globeview.js +++ b/test/unit/globeview.js @@ -43,20 +43,22 @@ describe('GlobeView', function () { }); it('update', function (done) { - viewer.tileLayer.whenReady.then(() => { - const node = viewer.tileLayer.level0Nodes[0]; - viewer.tileLayer.update(context, viewer.tileLayer, node); - done(); - }); + viewer.tileLayer.whenReady + .then(() => { + const node = viewer.tileLayer.level0Nodes[0]; + viewer.tileLayer.update(context, viewer.tileLayer, node); + done(); + }, done); }); it('ObjectRemovalHelper', function (done) { - viewer.tileLayer.whenReady.then(() => { - const node = viewer.tileLayer.level0Nodes[0]; - ObjectRemovalHelper.removeChildrenAndCleanup(viewer.tileLayer, node); - ObjectRemovalHelper.removeChildren(viewer.tileLayer, node); - done(); - }); + viewer.tileLayer.whenReady + .then(() => { + const node = viewer.tileLayer.level0Nodes[0]; + ObjectRemovalHelper.removeChildrenAndCleanup(viewer.tileLayer, node); + ObjectRemovalHelper.removeChildren(viewer.tileLayer, node); + done(); + }, done); }); it('should get the zoom scale', () => { diff --git a/test/unit/obb.js b/test/unit/obb.js index 089195aa50..2ce563abc1 100644 --- a/test/unit/obb.js +++ b/test/unit/obb.js @@ -54,42 +54,46 @@ function assertVerticesAreInOBB(builder, extent) { segment: 1, }; - newTileGeometry(builder, params).then((result) => { - const geom = result.geometry; - const inverse = new THREE.Matrix4().copy(geom.OBB.matrix).invert(); + return newTileGeometry(builder, params) + .then((result) => { + const geom = result.geometry; + const inverse = new THREE.Matrix4().copy(geom.OBB.matrix).invert(); - let failing = 0; - const vec = new THREE.Vector3(); - for (let i = 0; i < geom.attributes.position.count; i++) { - vec.fromArray(geom.attributes.position.array, 3 * i); + let failing = 0; + const vec = new THREE.Vector3(); + for (let i = 0; i < geom.attributes.position.count; i++) { + vec.fromArray(geom.attributes.position.array, 3 * i); - vec.applyMatrix4(inverse); - if (!geom.OBB.box3D.containsPoint(vec)) { - failing++; + vec.applyMatrix4(inverse); + if (!geom.OBB.box3D.containsPoint(vec)) { + failing++; + } } - } - assert.equal(geom.attributes.position.count - failing, geom.attributes.position.count, 'All points should be inside OBB'); - }); + assert.equal(geom.attributes.position.count - failing, geom.attributes.position.count, 'All points should be inside OBB'); + }); } describe('Planar tiles OBB computation', function () { const builder = new PlanarTileBuilder({ crs: 'EPSG:3946', uvCount: 1 }); - it('should compute OBB correctly', function () { + it('should compute OBB correctly', function (done) { const extent = new Extent('EPSG:3946', -100, 100, -50, 50); - assertVerticesAreInOBB(builder, extent); + assertVerticesAreInOBB(builder, extent) + .then(done, done); }); }); describe('Ellipsoid tiles OBB computation', function () { const builder = new BuilderEllipsoidTile({ crs: 'EPSG:4978', uvCount: 1 }); - it('should compute globe-level 0 OBB correctly', function () { + it('should compute globe-level 0 OBB correctly', function (done) { const extent = new Extent('EPSG:4326', -180, 0, -90, 90); - assertVerticesAreInOBB(builder, extent); + assertVerticesAreInOBB(builder, extent) + .then(done, done); }); - it('should compute globe-level 2 OBB correctly', function () { + it('should compute globe-level 2 OBB correctly', function (done) { const extent = new Extent('EPSG:4326', 0, 45, -45, 0); - assertVerticesAreInOBB(builder, extent); + assertVerticesAreInOBB(builder, extent) + .then(done, done); }); }); diff --git a/test/unit/orientedimagelayer.js b/test/unit/orientedimagelayer.js index 67a2b49d84..a4b87bd8bb 100644 --- a/test/unit/orientedimagelayer.js +++ b/test/unit/orientedimagelayer.js @@ -52,18 +52,20 @@ describe('Oriented Image Layer', function () { }; it('Add oriented image layer', function (done) { - olayer.whenReady.then(() => { - assert.equal(olayer.cameras.length, 5); - done(); - }); + olayer.whenReady + .then(() => { + assert.equal(olayer.cameras.length, 5); + done(); + }, done); }); it('PreUpdate oriented image layer', function (done) { - olayer.whenReady.then(() => { - assert.equal(olayer.currentPano, undefined); - olayer.preUpdate(context); - assert.equal(olayer.currentPano.id, 482); - done(); - }); + olayer.whenReady + .then(() => { + assert.equal(olayer.currentPano, undefined); + olayer.preUpdate(context); + assert.equal(olayer.currentPano.id, 482); + done(); + }, done); }); }); diff --git a/test/unit/pnts_parser.js b/test/unit/pnts_parser.js index b14ad69d2a..8fc65d43cc 100644 --- a/test/unit/pnts_parser.js +++ b/test/unit/pnts_parser.js @@ -28,17 +28,18 @@ describe('pnts parser', function () { it('should return the correct points', function (done) { const buffer = bufferFromString(pnts, 16 * 8 + 2); - PntsParser.parse(buffer).then((result) => { - // 2 points of 3 components in the geometry - assert.equal( - result.point.geometry.attributes.position.array.length, - 2 * 3); - // 'Red': 224, 'Green': 155, 'Blue': 133 - assert.equal( - result.point.geometry.attributes.color.array[1], - 155); + PntsParser.parse(buffer) + .then((result) => { + // 2 points of 3 components in the geometry + assert.equal( + result.point.geometry.attributes.position.array.length, + 2 * 3); + // 'Red': 224, 'Green': 155, 'Blue': 133 + assert.equal( + result.point.geometry.attributes.color.array[1], + 155); - done(); - }); + done(); + }, done); }); }); diff --git a/test/unit/potree.js b/test/unit/potree.js index 7dbde281f0..a024114c43 100644 --- a/test/unit/potree.js +++ b/test/unit/potree.js @@ -43,12 +43,13 @@ describe('Potree', function () { }); it('Add point potree layer', function (done) { - View.prototype.addLayer.call(viewer, potreeLayer).then((layer) => { - context.camera.camera3D.updateMatrixWorld(); - assert.equal(layer.root.children.length, 7); - layer.bboxes.visible = true; - done(); - }); + View.prototype.addLayer.call(viewer, potreeLayer) + .then((layer) => { + context.camera.camera3D.updateMatrixWorld(); + assert.equal(layer.root.children.length, 7); + layer.bboxes.visible = true; + done(); + }, done); }); it('preupdate potree layer', function () { @@ -59,10 +60,11 @@ describe('Potree', function () { it('update potree layer', function (done) { assert.equal(potreeLayer.group.children.length, 0); potreeLayer.update(context, potreeLayer, elt[0]); - elt[0].promise.then(() => { - assert.equal(potreeLayer.group.children.length, 1); - done(); - }); + elt[0].promise + .then(() => { + assert.equal(potreeLayer.group.children.length, 1); + done(); + }, done); }); it('postUpdate potree layer', function () { @@ -82,20 +84,23 @@ describe('Potree', function () { it('load octree', function (done) { const root = new PotreeNode(numPoints, childrenBitField, potreeLayer); - root.loadOctree().then(() => { - assert.equal(7, root.children.length); - done(); - }); + root.loadOctree() + .then(() => { + assert.equal(7, root.children.length); + done(); + }, done); }); it('load child node', function (done) { const root = new PotreeNode(numPoints, childrenBitField, potreeLayer); - root.loadOctree().then(() => { - root.children[0].load().then(() => { - assert.equal(2, root.children[0].children.length); - done(); - }); - }); + root.loadOctree() + .then(() => { + root.children[0].load() + .then(() => { + assert.equal(2, root.children[0].children.length); + done(); + }); + }, done); }); }); diff --git a/test/unit/potreeBinParser.js b/test/unit/potreeBinParser.js index 47ff1bdcf4..b95ef04f29 100644 --- a/test/unit/potreeBinParser.js +++ b/test/unit/potreeBinParser.js @@ -2,7 +2,7 @@ import assert from 'assert'; import PotreeBinParser from 'Parser/PotreeBinParser'; describe('PotreeBinParser', function () { - it('should correctly parse position buffer', function () { + it('should correctly parse position buffer', function (done) { const buffer = new ArrayBuffer(12 * 4); const dv = new DataView(buffer); for (let i = 0; i < 12; i++) { @@ -15,17 +15,20 @@ describe('PotreeBinParser', function () { }, }; - return PotreeBinParser.parse(buffer, options).then((geom) => { - const posAttr = geom.getAttribute('position'); - assert.equal(posAttr.itemSize, 3); - assert.ok(posAttr.array instanceof Float32Array); - assert.equal(posAttr.array.length, 12); - assert.equal(posAttr.array[0], 0); - assert.equal(posAttr.array[11], 22); - }); + PotreeBinParser.parse(buffer, options) + .then((geom) => { + const posAttr = geom.getAttribute('position'); + assert.equal(posAttr.itemSize, 3); + assert.ok(posAttr.array instanceof Float32Array); + assert.equal(posAttr.array.length, 12); + assert.equal(posAttr.array[0], 0); + assert.equal(posAttr.array[11], 22); + done(); + }) + .catch(done); }); - it('should correctly parse a complex buffer (positions, intensity, rgb and classification)', function () { + it('should correctly parse a complex buffer (positions, intensity, rgb and classification)', function (done) { // generate 12 points: positions, intensity, rgba, classification const numbyte = 3 * 4 + 2 + 4 * 1 + 1; const numPoints = 5; @@ -54,29 +57,32 @@ describe('PotreeBinParser', function () { }, }; - return PotreeBinParser.parse(buffer, options).then(function (geom) { - const posAttr = geom.getAttribute('position'); - const intensityAttr = geom.getAttribute('intensity'); - const colorAttr = geom.getAttribute('color'); - const classificationAttr = geom.getAttribute('classification'); + PotreeBinParser.parse(buffer, options) + .then(function (geom) { + const posAttr = geom.getAttribute('position'); + const intensityAttr = geom.getAttribute('intensity'); + const colorAttr = geom.getAttribute('color'); + const classificationAttr = geom.getAttribute('classification'); - // check position buffer - assert.equal(posAttr.itemSize, 3); - assert.deepStrictEqual(posAttr.array, Float32Array.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)); - // check intensity - assert.equal(intensityAttr.itemSize, 1); - assert.deepStrictEqual(intensityAttr.array, Uint16Array.of(100, 101, 102, 103, 104)); - // check colors - assert.equal(colorAttr.itemSize, 4); - assert.deepStrictEqual(colorAttr.array, Uint8Array.of( - 200, 201, 202, 203, - 204, 205, 206, 207, - 208, 209, 210, 211, - 212, 213, 214, 215, - 216, 217, 218, 219)); - // check classif - assert.equal(classificationAttr.itemSize, 1); - assert.deepStrictEqual(classificationAttr.array, Uint8Array.of(0, 3, 6, 9, 12)); - }); + // check position buffer + assert.equal(posAttr.itemSize, 3); + assert.deepStrictEqual(posAttr.array, Float32Array.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)); + // check intensity + assert.equal(intensityAttr.itemSize, 1); + assert.deepStrictEqual(intensityAttr.array, Uint16Array.of(100, 101, 102, 103, 104)); + // check colors + assert.equal(colorAttr.itemSize, 4); + assert.deepStrictEqual(colorAttr.array, Uint8Array.of( + 200, 201, 202, 203, + 204, 205, 206, 207, + 208, 209, 210, 211, + 212, 213, 214, 215, + 216, 217, 218, 219)); + // check classif + assert.equal(classificationAttr.itemSize, 1); + assert.deepStrictEqual(classificationAttr.array, Uint8Array.of(0, 3, 6, 9, 12)); + done(); + }) + .catch(done); }); }); diff --git a/test/unit/potreelayerparsing.js b/test/unit/potreelayerparsing.js index 8221e9ec76..ea0b0858f8 100644 --- a/test/unit/potreelayerparsing.js +++ b/test/unit/potreelayerparsing.js @@ -21,7 +21,7 @@ describe('Potree Provider', function () { octreeDir: 'eglise_saint_blaise_arles', }; - const ps = []; + const layers = []; let source = new PotreeSource({ file: 'eglise_saint_blaise_arles.js', url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', @@ -29,9 +29,9 @@ describe('Potree Provider', function () { cloud, }); - const p1 = new PotreeLayer('pointsCloud1', { source, crs: view.referenceCrs }); - ps.push(p1); - p1.whenReady.then((l) => { + const layer1 = new PotreeLayer('pointsCloud1', { source, crs: view.referenceCrs }); + layers.push(layer1); + const p1 = layer1.whenReady.then((l) => { const normalDefined = l.material.defines.NORMAL || l.material.defines.NORMAL_SPHEREMAPPED || l.material.defines.NORMAL_OCT16; assert.ok(!normalDefined); }); @@ -49,9 +49,9 @@ describe('Potree Provider', function () { }, }); - const p2 = new PotreeLayer('pointsCloud2', { source, crs: view.referenceCrs }); - ps.push(p2); - p2.whenReady.then((l) => { + const layer2 = new PotreeLayer('pointsCloud2', { source, crs: view.referenceCrs }); + layers.push(layer2); + const p2 = layer2.whenReady.then((l) => { assert.ok(l.material.defines.NORMAL); assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); assert.ok(!l.material.defines.NORMAL_OCT16); @@ -69,10 +69,10 @@ describe('Potree Provider', function () { octreeDir: 'eglise_saint_blaise_arles', }, }); - const p3 = new PotreeLayer('pointsCloud3', { source, crs: view.referenceCrs }); + const layer3 = new PotreeLayer('pointsCloud3', { source, crs: view.referenceCrs }); - ps.push(p3); - p3.whenReady.then((l) => { + layers.push(layer3); + const p3 = layer3.whenReady.then((l) => { assert.ok(!l.material.defines.NORMAL); assert.ok(l.material.defines.NORMAL_SPHEREMAPPED); assert.ok(!l.material.defines.NORMAL_OCT16); @@ -90,18 +90,21 @@ describe('Potree Provider', function () { octreeDir: 'eglise_saint_blaise_arles', }, }); - const p4 = new PotreeLayer('pointsCloud4', { source, crs: view.referenceCrs }); + const layer4 = new PotreeLayer('pointsCloud4', { source, crs: view.referenceCrs }); - ps.push(p4); - p4.whenReady.then((l) => { - assert.ok(!l.material.defines.NORMAL); - assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); - assert.ok(l.material.defines.NORMAL_OCT16); - }); + layers.push(layer4); + const p4 = layer4.whenReady + .then((l) => { + assert.ok(!l.material.defines.NORMAL); + assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); + assert.ok(l.material.defines.NORMAL_OCT16); + }); - ps.forEach(p => View.prototype.addLayer.call(view, p)); + layers.forEach(p => View.prototype.addLayer.call(view, p)); - Promise.all(ps.map(p => p.whenReady)).then(() => done()); + Promise.all([p1, p2, p3, p4]) + .then(() => done()) + .catch(done); }); }); diff --git a/test/unit/scheduler.js b/test/unit/scheduler.js index 3db1a20ae4..77a002d19a 100644 --- a/test/unit/scheduler.js +++ b/test/unit/scheduler.js @@ -34,10 +34,11 @@ describe('Command execution', function () { } it('should execute one command', function (done) { - scheduler.execute(cmd()).then((c) => { - assert.ok(c.done); - done(); - }); + scheduler.execute(cmd()) + .then((c) => { + assert.ok(c.done); + done(); + }, done); }); it('should execute 100 commands', function (done) { @@ -46,12 +47,13 @@ describe('Command execution', function () { promises.push(scheduler.execute(cmd())); } - Promise.all(promises).then((commands) => { - for (const cmd of commands) { - assert.ok(cmd.done); - } - done(); - }); + Promise.all(promises) + .then((commands) => { + for (const cmd of commands) { + assert.ok(cmd.done); + } + done(); + }, done); }); it('should execute balance commands between layers', function (done) { @@ -72,6 +74,6 @@ describe('Command execution', function () { // layer1 commands must be all finished before layer0 commands assert.ok(results.lastIndexOf('layer1') < results.lastIndexOf('layer0')); done(); - }); + }, done); }); }); diff --git a/test/unit/source.js b/test/unit/source.js index 5e2f651b35..286e357f1d 100644 --- a/test/unit/source.js +++ b/test/unit/source.js @@ -173,10 +173,11 @@ describe('Sources', function () { describe('OrientedImageSource', function () { it('instance OrientedImageSource', function (done) { const source = new OrientedImageSource({ url: 'none' }); - source.whenReady.then((a) => { - assert.equal(Object.keys(a).length, 2); - done(); - }); + source.whenReady + .then((a) => { + assert.equal(Object.keys(a).length, 2); + done(); + }, done); }); it('should return keys OrientedImageSource from request', function () { @@ -220,18 +221,19 @@ describe('Sources', function () { networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, }); - source.whenReady.then(() => { - const extent = new Extent('EPSG:4326', 0, 10, 0, 10); - assert.ok(source.urlFromExtent()); - assert.ok(source.extentInsideLimit(extent)); - assert.ok(source.fetchedData); - assert.ok(source.fetchedData); - assert.ok(!source.features); - assert.ok(source.isFileSource); - fetchedData = source.fetchedData; - assert.equal(fetchedData.properties.nom, 'Ariège'); - done(); - }); + source.whenReady + .then(() => { + const extent = new Extent('EPSG:4326', 0, 10, 0, 10); + assert.ok(source.urlFromExtent()); + assert.ok(source.extentInsideLimit(extent)); + assert.ok(source.fetchedData); + assert.ok(source.fetchedData); + assert.ok(!source.features); + assert.ok(source.isFileSource); + fetchedData = source.fetchedData; + assert.equal(fetchedData.properties.nom, 'Ariège'); + done(); + }, done); }); it('should instance FileSource with fetchedData and parse data with a layer', function (done) { @@ -249,13 +251,17 @@ describe('Sources', function () { const layer = new Layer('09-ariege', { crs: 'EPSG:4326', source, structure: '2d' }); layer.source.onLayerAdded({ out: layer }); - layer.whenReady.then(() => { - const promise = source.loadData([], layer); - promise.then((featureCollection) => { - assert.equal(featureCollection.features[0].vertices.length, 3536); - done(); + layer.whenReady + .then(() => { + source.loadData([], layer) + .then((featureCollection) => { + assert.equal(featureCollection.features[0].vertices.length, 3536); + done(); + }) + .catch((err) => { + done(err); + }); }); - }); layer._resolve(); });