diff -r 000000000000 -r 6474c204b198 browser/devtools/tilt/test/browser_tilt_visualizer.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/tilt/test/browser_tilt_visualizer.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,126 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +function test() { + if (!isTiltEnabled()) { + info("Skipping notifications test because Tilt isn't enabled."); + return; + } + if (!isWebGLSupported()) { + info("Skipping visualizer test because WebGL isn't supported."); + return; + } + + let webGLError = false; + let webGLLoad = false; + + let visualizer = new TiltVisualizer({ + chromeWindow: window, + contentWindow: gBrowser.selectedBrowser.contentWindow, + parentNode: gBrowser.selectedBrowser.parentNode, + notifications: Tilt.NOTIFICATIONS, + tab: gBrowser.selectedTab, + + onError: function onWebGLError() + { + webGLError = true; + }, + + onLoad: function onWebGLLoad() + { + webGLLoad = true; + } + }); + visualizer.init(); + + ok(webGLError ^ webGLLoad, + "The WebGL context should either be created or not."); + + if (webGLError) { + info("Skipping visualizer test because WebGL couldn't be initialized."); + return; + } + + ok(visualizer.canvas, + "Visualizer constructor should have created a child canvas object."); + ok(visualizer.presenter, + "Visualizer constructor should have created a child presenter object."); + ok(visualizer.controller, + "Visualizer constructor should have created a child controller object."); + ok(visualizer.isInitialized(), + "The visualizer should have been initialized properly."); + ok(visualizer.presenter.isInitialized(), + "The visualizer presenter should have been initialized properly."); + ok(visualizer.controller.isInitialized(), + "The visualizer controller should have been initialized properly."); + + testPresenter(visualizer.presenter); + testController(visualizer.controller); + + visualizer.removeOverlay(); + is(visualizer.canvas.parentNode, null, + "The visualizer canvas wasn't removed from the parent node."); + + visualizer.cleanup(); + is(visualizer.presenter, undefined, + "The visualizer presenter wasn't destroyed."); + is(visualizer.controller, undefined, + "The visualizer controller wasn't destroyed."); + is(visualizer.canvas, undefined, + "The visualizer canvas wasn't destroyed."); +} + +function testPresenter(presenter) { + ok(presenter._renderer, + "The presenter renderer wasn't initialized properly."); + ok(presenter._visualizationProgram, + "The presenter visualizationProgram wasn't initialized properly."); + ok(presenter._texture, + "The presenter texture wasn't initialized properly."); + ok(!presenter._meshStacks, + "The presenter meshStacks shouldn't be initialized yet."); + ok(!presenter._meshWireframe, + "The presenter meshWireframe shouldn't be initialized yet."); + ok(presenter._traverseData, + "The presenter nodesInformation wasn't initialized properly."); + ok(presenter._highlight, + "The presenter highlight wasn't initialized properly."); + ok(presenter._highlight.disabled, + "The presenter highlight should be initially disabled."); + ok(isApproxVec(presenter._highlight.v0, [0, 0, 0]), + "The presenter highlight first vertex should be initially zeroed."); + ok(isApproxVec(presenter._highlight.v1, [0, 0, 0]), + "The presenter highlight second vertex should be initially zeroed."); + ok(isApproxVec(presenter._highlight.v2, [0, 0, 0]), + "The presenter highlight third vertex should be initially zeroed."); + ok(isApproxVec(presenter._highlight.v3, [0, 0, 0]), + "The presenter highlight fourth vertex should be initially zeroed."); + ok(presenter.transforms, + "The presenter transforms wasn't initialized properly."); + is(presenter.transforms.zoom, 1, + "The presenter transforms zoom should be initially 1."); + ok(isApproxVec(presenter.transforms.offset, [0, 0, 0]), + "The presenter transforms offset should be initially zeroed."); + ok(isApproxVec(presenter.transforms.translation, [0, 0, 0]), + "The presenter transforms translation should be initially zeroed."); + ok(isApproxVec(presenter.transforms.rotation, [0, 0, 0, 1]), + "The presenter transforms rotation should be initially set to identity."); + + presenter.setTranslation([1, 2, 3]); + presenter.setRotation([5, 6, 7, 8]); + + ok(isApproxVec(presenter.transforms.translation, [1, 2, 3]), + "The presenter transforms translation wasn't modified as it should"); + ok(isApproxVec(presenter.transforms.rotation, [5, 6, 7, 8]), + "The presenter transforms rotation wasn't modified as it should"); + ok(presenter._redraw, + "The new transforms should have issued a redraw request."); +} + +function testController(controller) { + ok(controller.arcball, + "The controller arcball wasn't initialized properly."); + ok(!controller.coordinates, + "The presenter meshWireframe shouldn't be initialized yet."); +}