phaser
Version:
A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.
157 lines (130 loc) • 4.28 kB
JavaScript
var SpriteGPULayerWebGLRenderer = require('../../../src/gameobjects/spritegpulayer/SpriteGPULayerWebGLRenderer');
describe('SpriteGPULayerWebGLRenderer', function ()
{
var renderer;
var drawingContext;
var submitterRun;
beforeEach(function ()
{
renderer = {};
submitterRun = vi.fn();
drawingContext = {
camera: {
addToRenderList: vi.fn()
}
};
});
it('should be importable', function ()
{
expect(SpriteGPULayerWebGLRenderer).toBeDefined();
});
it('should be a function', function ()
{
expect(typeof SpriteGPULayerWebGLRenderer).toBe('function');
});
it('should call addToRenderList on the camera with src', function ()
{
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: { run: submitterRun }
}
};
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
expect(drawingContext.camera.addToRenderList).toHaveBeenCalledWith(src);
});
it('should use defaultRenderNodes.Submitter when customRenderNodes.Submitter is not set', function ()
{
var defaultSubmitterRun = vi.fn();
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: { run: defaultSubmitterRun }
}
};
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
expect(defaultSubmitterRun).toHaveBeenCalledWith(drawingContext);
});
it('should use customRenderNodes.Submitter when it is set', function ()
{
var customSubmitterRun = vi.fn();
var defaultSubmitterRun = vi.fn();
var src = {
customRenderNodes: {
Submitter: { run: customSubmitterRun }
},
defaultRenderNodes: {
Submitter: { run: defaultSubmitterRun }
}
};
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
expect(customSubmitterRun).toHaveBeenCalledWith(drawingContext);
expect(defaultSubmitterRun).not.toHaveBeenCalled();
});
it('should pass drawingContext to the submitter run call', function ()
{
var capturedArg;
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: {
run: function (ctx)
{
capturedArg = ctx;
}
}
}
};
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
expect(capturedArg).toBe(drawingContext);
});
it('should call addToRenderList before running the submitter', function ()
{
var callOrder = [];
drawingContext.camera.addToRenderList = vi.fn(function ()
{
callOrder.push('addToRenderList');
});
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: {
run: function ()
{
callOrder.push('submitter');
}
}
}
};
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
expect(callOrder[0]).toBe('addToRenderList');
expect(callOrder[1]).toBe('submitter');
});
it('should work without a parentMatrix argument', function ()
{
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: { run: submitterRun }
}
};
expect(function ()
{
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext);
}).not.toThrow();
});
it('should work with a parentMatrix argument', function ()
{
var parentMatrix = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };
var src = {
customRenderNodes: {},
defaultRenderNodes: {
Submitter: { run: submitterRun }
}
};
expect(function ()
{
SpriteGPULayerWebGLRenderer(renderer, src, drawingContext, parentMatrix);
}).not.toThrow();
});
});