Skip to content

Commit

Permalink
add deck tests with headless gl
Browse files Browse the repository at this point in the history
  • Loading branch information
Xiaoji Chen committed Jun 14, 2019
1 parent 2ece47e commit f043e62
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 6 deletions.
12 changes: 6 additions & 6 deletions modules/react/src/deckgl.js
Expand Up @@ -104,16 +104,16 @@ export default class DeckGL extends React.Component {

// Public API

pickObject({x, y, radius = 0, layerIds = null}) {
return this.deck.pickObject({x, y, radius, layerIds});
pickObject(opts) {
return this.deck.pickObject(opts);
}

pickMultipleObjects({x, y, radius = 0, layerIds = null, depth = 10}) {
return this.deck.pickMultipleObjects({x, y, radius, layerIds, depth});
pickMultipleObjects(opts) {
return this.deck.pickMultipleObjects(opts);
}

pickObjects({x, y, width = 1, height = 1, layerIds = null}) {
return this.deck.pickObjects({x, y, width, height, layerIds});
pickObjects(opts) {
return this.deck.pickObjects(opts);
}

// Callbacks
Expand Down
3 changes: 3 additions & 0 deletions package.json
Expand Up @@ -38,6 +38,9 @@
"resolutions": {
"lerna": "3.14.1"
},
"browser": {
"jsdom": false
},
"devDependencies": {
"@luma.gl/effects": "^7.1.0-beta.1",
"@probe.gl/bench": "^3.0.1",
Expand Down
55 changes: 55 additions & 0 deletions test/modules/core/lib/deck.spec.js
@@ -0,0 +1,55 @@
import test from 'tape-catch';
import {Deck} from '@deck.gl/core';
import {gl} from '@deck.gl/test-utils';

test('Deck#constructor', t => {
const callbacks = {
onWebGLInitialized: 0,
onBeforeRender: 0,
onResize: 0,
onLoad: 0
};

const deck = new Deck({
gl,
width: 1,
height: 1,
// This is required because the jsdom canvas does not have client width/height
autoResizeDrawingBuffer: gl.canvas.clientWidth > 0,

viewState: {
longitude: 0,
latitude: 0,
zoom: 0
},

layers: [],

onWebGLInitialized: () => callbacks.onWebGLInitialized++,
onBeforeRender: () => callbacks.onBeforeRender++,
onResize: () => callbacks.onResize++,

onAfterRender: () => {
t.is(callbacks.onWebGLInitialized, 1, 'onWebGLInitialized called');
t.is(callbacks.onLoad, 1, 'onLoad called');
t.is(callbacks.onResize, 1, 'onResize called');
t.is(callbacks.onBeforeRender, 1, 'first draw');

deck.finalize();
t.notOk(deck.layerManager, 'layerManager is finalized');
t.notOk(deck.viewManager, 'viewManager is finalized');
t.notOk(deck.deckRenderer, 'deckRenderer is finalized');
t.end();
},

onLoad: () => {
callbacks.onLoad++;

t.ok(deck.layerManager, 'layerManager initialized');
t.ok(deck.viewManager, 'viewManager initialized');
t.ok(deck.deckRenderer, 'deckRenderer initialized');
}
});

t.pass('Deck constructor did not throw');
});
1 change: 1 addition & 0 deletions test/modules/core/lib/index.js
Expand Up @@ -22,6 +22,7 @@ import './base-attribute.spec';
import './attribute.spec';
import './attribute-manager.spec';
import './attribute-transition-manager.spec';
import './deck.spec';
import './layer.spec';
import './composite-layer.spec';
import './layer-manager.spec';
Expand Down
7 changes: 7 additions & 0 deletions test/modules/index.js
Expand Up @@ -48,4 +48,11 @@ if (typeof document !== 'undefined') {
global.navigator = dom.window.navigator;
global.document = dom.window.document;
global.Element = dom.window.Element;

const {gl} = require('@deck.gl/test-utils');
// Create a dummy canvas for the headless gl context
const canvas = global.document.createElement('canvas');
canvas.width = gl.drawingBufferWidth;
canvas.height = gl.drawingBufferHeight;
gl.canvas = canvas;
}

0 comments on commit f043e62

Please sign in to comment.