11/* eslint-disable camelcase */
22/* eslint-disable underscore/prefer-constant */
33
4+ var $ = require ( 'jquery' ) ;
45var vgl = require ( 'vgl' ) ;
56var vglRenderer = require ( '../gl/vglRenderer' ) ;
67
7- var _renderWindow = vgl . renderWindow ;
8- var _supported = vglRenderer . supported ;
8+ var _renderWindow , _supported ;
99
1010module . exports = { } ;
1111
1212/**
1313 * Replace vgl.renderer with a mocked version for testing in a non-webGL state.
14- * Use resotreVGLRenderer to unmock.
14+ * Use restoreVGLRenderer to unmock. Call vgl.mockCounts() to get the number
15+ * of times different webGL functions have been called.
1516 *
1617 * @param {boolean } [supported=true] If false, then the vgl renderer will
1718 * indicate that this is an unsupported browser environment.
@@ -46,7 +47,7 @@ module.exports.mockVGLRenderer = function mockVGLRenderer(supported) {
4647 } ;
4748 } ;
4849 /* The context largely does nothing. */
49- var m_context = {
50+ var default_context = {
5051 activeTexture : noop ( 'activeTexture' ) ,
5152 attachShader : noop ( 'attachShader' ) ,
5253 bindAttribLocation : noop ( 'bindAttribLocation' ) ,
@@ -130,17 +131,40 @@ module.exports.mockVGLRenderer = function mockVGLRenderer(supported) {
130131 viewport : noop ( 'viewport' )
131132 } ;
132133
133- /* Our mock has only a single renderWindow */
134- var m_renderWindow = vgl . renderWindow ( ) ;
135- m_renderWindow . _setup = function ( ) {
136- return true ;
137- } ;
138- m_renderWindow . context = function ( ) {
139- return m_context ;
140- } ;
141- vgl . renderWindow = function ( ) {
142- return m_renderWindow ;
134+ _renderWindow = vgl . renderWindow ;
135+ var mockedRenderWindow = function ( ) {
136+ /* Temporarily put back the original definition of renderWindow so that the
137+ * class instance will be instantiated correctly. */
138+ vgl . renderWindow = _renderWindow ;
139+ var m_this = new vgl . renderWindow ( ) ,
140+ m_context ;
141+ vgl . renderWindow = mockedRenderWindow ;
142+
143+ m_this . _setup = function ( ) {
144+ var i , renderers = m_this . renderers ( ) ,
145+ wsize = m_this . windowSize ( ) ,
146+ wpos = m_this . windowPosition ( ) ;
147+
148+ m_context = $ . extend ( { } , default_context ) ;
149+
150+ for ( i = 0 ; i < renderers . length ; i += 1 ) {
151+ if ( ( renderers [ i ] . width ( ) > wsize [ 0 ] ) ||
152+ renderers [ i ] . width ( ) === 0 ||
153+ ( renderers [ i ] . height ( ) > wsize [ 1 ] ) ||
154+ renderers [ i ] . height ( ) === 0 ) {
155+ renderers [ i ] . resize ( wpos [ 0 ] , wpos [ 1 ] , wsize [ 0 ] , wsize [ 1 ] ) ;
156+ }
157+ }
158+ return true ;
159+ } ;
160+ m_this . context = function ( ) {
161+ return m_context ;
162+ } ;
163+ return m_this ;
143164 } ;
165+ vgl . renderWindow = mockedRenderWindow ;
166+
167+ _supported = vglRenderer . supported ;
144168 vglRenderer . supported = function ( ) {
145169 return ! ! supported ;
146170 } ;
@@ -159,6 +183,7 @@ module.exports.restoreVGLRenderer = function () {
159183 vgl . renderWindow = _renderWindow ;
160184 vglRenderer . supported = _supported ;
161185 delete vgl . _mocked ;
186+ // delete vgl._mockedRenderWindow;
162187 delete vgl . mockCounts ;
163188 }
164189} ;
0 commit comments