66 lines
2.6 KiB
JavaScript
66 lines
2.6 KiB
JavaScript
|
// The increased timeout is especially needed with larger binaries
|
||
|
// like in the debug/gpu build
|
||
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
|
||
|
|
||
|
describe('Debugger\'s Playback Behavior', function() {
|
||
|
const container = document.createElement('div');
|
||
|
document.body.appendChild(container);
|
||
|
|
||
|
beforeEach(function() {
|
||
|
container.innerHTML = `<canvas id=debugger_view width=720 height=1280></canvas>`;
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
container.innerHTML = '';
|
||
|
});
|
||
|
|
||
|
it('can switch to the second frame of an animated skp', function(done) {
|
||
|
const filename = '/debugger/anim.mskp'
|
||
|
const fetchSkpPromise = fetch(filename);
|
||
|
|
||
|
Promise.all([LoadDebugger, fetchSkpPromise]).then((values) => {
|
||
|
|
||
|
const response = values[1];
|
||
|
if (!response.ok) {
|
||
|
throw new Error("HTTP error, status = " + response.status);
|
||
|
}
|
||
|
response.arrayBuffer().then((buffer) => {
|
||
|
catchException(done, () => {
|
||
|
const canvasElement = document.getElementById('debugger_view');
|
||
|
const fileContents = new Uint8Array(buffer);
|
||
|
console.log('fetched '+filename);
|
||
|
const player = Debugger.SkpFilePlayer(fileContents);
|
||
|
const bounds = player.getBounds();
|
||
|
canvasElement.width = bounds.fRight - bounds.fLeft;
|
||
|
canvasElement.height = bounds.fBottom - bounds.fTop;
|
||
|
expect(canvasElement.width).toBe(1080);
|
||
|
expect(canvasElement.height).toBe(1920);
|
||
|
const surface = Debugger.MakeWebGLCanvasSurface(canvasElement);
|
||
|
expect(surface).toBeTruthy();
|
||
|
const numFrames = player.getFrameCount();
|
||
|
expect(numFrames).toBe(10);
|
||
|
|
||
|
let cmd = JSON.parse(player.jsonCommandList(surface));
|
||
|
expect(cmd).toBeTruthy();
|
||
|
|
||
|
// Move to last command in first frame
|
||
|
player.drawTo(surface, cmd.commands.length);
|
||
|
surface.flush();
|
||
|
|
||
|
// Move to frame two
|
||
|
player.changeFrame(1);
|
||
|
cmd = JSON.parse(player.jsonCommandList(surface));
|
||
|
expect(cmd).toBeTruthy();
|
||
|
// move to command 100 in frame 2
|
||
|
player.drawTo(surface, 100);
|
||
|
surface.flush();
|
||
|
|
||
|
console.log('drew picture to canvas element');
|
||
|
surface.dispose();
|
||
|
done();
|
||
|
})();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|